k.sato
2024年2月21日 9時33分
佐藤と申します。
お世話になっております。
●シリアル通信デバッグ(Armadillo Base OS)
https://armadillo.atmark-techno.com/forum/armadillo/16219
以前uart5でRS-485通信の質問をして下記の解決方法を教えていただきました。
> 2/ ソースツリーに arch/arm/boot/dts/armadillo-640-customize.dts ファイルを新に作って、以下の内容を保存します。
/dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include "imx6ull-pinfunc.h" &uart5 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart5>; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; }; &iomuxc { pinctrl_uart5: uart5grp { fsl,pins = < MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x00008 MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1 MX6UL_PAD_UART2_RTS_B__GPIO1_IO23 0x00008 >; }; };
> 3/ 以下のコマンドで dtbo (device tree overlay) を生成します
# Armadillo 640 でも、IoT Gateway A6E の defconfig を使います atde$ make ARCH=arm armadillo-iotg-a6e_defconfig atde$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- armadillo-640-customize.dtbo DTC arch/arm/boot/dts/armadillo-640-customize.dtbo
新たにここにuart2でもRS-485通信を行うよう追加したいのです。
at-dtwebからCON14の3、4ピンにTX、RXを配置し、
arch/arm/boot/dts/armadillo-640-customize.dtsにuart2の設定を追加しました。
/dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include "imx6ull-pinfunc.h" &uart2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart2>; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; }; &uart5 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart5>; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; };
これでarmadillo-640-customize.dtboファイルを作成し、Armadilloをセットアップして動作確認したのですが、
uart5で設定したrtsピンしかH/Lしていません。
何か設定の違いがあるのでしょうか?
以上、よろしくお願い致します。
コメント
k.sato
佐藤です。
返信ありがとうございます。
> armadillo-640-customize.dts ファイルと、armadillo-640-expansion-interface.dtsi ファイルを添付していただくことは可能でしょうか。
可能です。ファイルを3つ添付しました。
at-dtwebでのピン配の画面も添付しました。
RTS/CTSピンを配置しないのがいけないのでしょうか?
armadillo-640-customize.dtsでuart2とuart5のrts-gpiosを入れ替えてみたのですが、
uart5の送信のタイミングでgpio1_23がH/Lしています。
uart2も送信の波形は出ています。
よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
Device Tree Editor.png | at-dtweb画面キャプチャ |
armadillo-640-customize.dts | uart2とuart5を追加 |
armadillo-640-expansion-interface.zip | .dtsiのままではアップロードできないので圧縮 |
at_makoto.sato
k.sato
> ファイルありがとうございます。
> 大変申し訳ありません。armadillo-640-at-dtweb.dts ファイルも添付していただけますでしょうか。
添付しました。
よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
armadillo-640-at-dtweb.dts |
at_makoto.sato
先にいただいた armadillo-640-customize.dts は
> armadillo-640-customize.dtsでuart2とuart5のrts-gpiosを入れ替えてみたのですが、
上記を実施した後のファイルということでよいでしょうか。
ファイルの要求ばかりで申し訳ありませんが、
実際にarmadilloに書き込まれている、/boot/armadillo-640-at-dtweb.dtboと/boot/armadillo-600-customize.dtboと、
dmesgコマンドの実行結果もいただけますでしょうか。
k.sato
> 先にいただいた armadillo-640-customize.dts は
> > armadillo-640-customize.dtsでuart2とuart5のrts-gpiosを入れ替えてみたのですが、
> 上記を実施した後のファイルということでよいでしょうか。
その通りです。
> ファイルの要求ばかりで申し訳ありませんが、
> 実際にarmadilloに書き込まれている、/boot/armadillo-640-at-dtweb.dtboと/boot/armadillo-600-customize.dtboと、
> dmesgコマンドの実行結果もいただけますでしょうか。
添付しました。
ファイル | ファイルの説明 |
---|---|
dmesg.txt | dmesgコマンドの実行結果 |
dtbo.zip | armadillo-640-at-dtweb.dtboとarmadillo-640-customize.dtbo |
at_makoto.sato
k.sato
> いただいた armadillo-640-customize.dtbo を fdtdump コマンドで逆コンパイルすると、uart2 が入っていないように見えます。
> armadillo-640-customize.dtbo はどのように armadillo 上へ配置しましたでしょうか。
> /boot 下に cp コマンド等で配置した場合は、persist_file /boot/armadillo-640-customize.dtbo を実行しましたでしょうか。
再度、armadillo-640-customize.dtboをArmadillo上へ配置し確認しました。
しかし、この 添付したarmadillo-640-customize.dtbo を配置して persit_file を行いrebootすると
正常に起動できず、再起動を繰り返して起動できるようになりました。
dmesg.zipファイルとしてログを添付します。
これが行われて、armadillo の /boot/armadillo-640-customize.dtbo が前に正常に動作していた状態?
(armadillo-640-customize.dtboにuart5のみ追加)に戻っているようでした。
以上、よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
armadillo-640-customize.zip | uart2とuart5を追加した.dtboを圧縮 |
dmesg.zip | armadillo-640-customize.zipの.dtboファイル書換後に再起動を繰り返したログファイル |
at_makoto.sato
ありがとうございます。
armadillo-640-customize.dtsの方を以下のようにしてみるとどうでしょうか。
/dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include "imx6ull-pinfunc.h" &uart2 { pinctrl-names = "default"; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; }; &uart5 { pinctrl-names = "default"; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; };
k.sato
佐藤です。
> armadillo-640-customize.dtsの方を以下のようにしてみるとどうでしょうか。
/dts-v1/; /plugin/; #include <dt-bindings/gpio/gpio.h> #include "imx6ull-pinfunc.h" &uart2 { pinctrl-names = "default"; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; }; &uart5 { pinctrl-names = "default"; status = "okay"; fsl,uart-has-rtscts; rs485-rts-on-send; rts-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; linux,rs485-enabled-at-boot-time; };
教えていただいた「pinctrl-0 = ...
」の行を削除することで
armadillo-640-customize.dtboを書換後の再起動で無事起動できるようになり
想定通りuart2、uart5での送信タイミングでそれぞれの送受信切替ピンがH/Lするようになりました。
ありがとうございました。
at_makoto.sato
2024年2月21日 17時08分
armadillo-640-customize.dts ファイルと、armadillo-640-expansion-interface.dtsi ファイルを添付していただくことは可能でしょうか。