Armadilloフォーラム

CTS,RTSの使用方法について

hama

2025年3月10日 13時47分

お世話になっております。

件名にもあるようにCTS,RTSの使用方法についてご教授お願いいたします。

at-dewebからUART4のCTS,RTSを追加し、インストールを行いました。
アプリケーションはpythonで開発しております。
以下ソースの一部です
import serial
uart4 = serial.Serial(port="/dev/ttymxc3",baudrate=9600,parity="E",timeout=1,rtscts=True)
uart4.write(送信データ)

この記述でデータ送信時RTSがHIになる認識をしておりますが動きません。
[rtscts=True]の記述がないと普通のUARTとして動作します。
VScodeのapp.confには[add_devices /dev/ttymxc3]を追記しました。

CTS,RTSを使用するためには上記以外の設定が必要なのでしょうか?

組み込みlinuxの開発経験がない為、初歩的な質問になるかもしれませんがよろしくお願いいたします。

コメント

CTS、RTSの認識が間違っておりました。失礼しました。
RS485通信をするのが目的です。
UART<>RS458変換を基板外で行っており、そのためのDE制御(送信時Hi)がしたいです。
uart4.write(送信データ)の前後でIO操作を行うしか方法はないのでしょうか?
改めてご教授お願いいたします。

at_dominique.m…

2025年3月11日 7時36分

hamaさん

お世話になっています、
マルティネです。

> RS485通信をするのが目的です。
> UART<>RS458変換を基板外で行っており、そのためのDE制御(送信時Hi)がしたいです。
> uart4.write(送信データ)の前後でIO操作を行うしか方法はないのでしょうか?

dts で rs458 の設定を行えばアプリ内の IO操作しなくても DE 制御ができます。
ただし、この設定は at-dtweb だけではできませんので、こちらの手順を参考にしてください:
https://armadillo.atmark-techno.com/howto/aiotg4-rs485

(すみません、ついでに細かい変更しましたので動作に問題はないと思いますが何か違和感あれば言ってください)

よろしくお願いします

マルティネ様
ご回答ありがとうございます。

> dts で rs458 の設定を行えばアプリ内の IO操作しなくても DE 制御ができます。
> ただし、この設定は at-dtweb だけではできませんので、こちらの手順を参考にしてください:
> https://armadillo.atmark-techno.com/howto/aiotg4-rs485

armadillo_iotg_g4-customize.dtsを添付(armadillo_iotg_g4-customize.txt)で作成しました。

ビルドを行い
(armadillo_iotg_g4-customize.dtbo)ファイルを確認しました。
手順通りに行くと.dtboをアルマジロにコピーするのですが出来ません。以下のコマンドをatdeで実行しております。お手数をおかけしますがご教授お願いいたします。
atmark@atde9:~/linux-5.10-5.10.233-r0$ sudo cp arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo armadillo:/boot

また、今まではat-dtwebでUART3,4を追加し使用しておりました。
UART4のみでDEを実装したいのですが、このファイル(armadillo_iotg_g4-customize.dts)にUART3の記述は必要でしょうか?
普通のIOも使用したいです。

ファイル ファイルの説明
armadillo_iotg_g4-customize.txt

at_dominique.m…

2025年3月11日 11時11分

マルティネです。

> 手順通りに行くと.dtboをアルマジロにコピーするのですが出来ません。以下のコマンドをatdeで実行しております。お手数をおかけしますがご教授お願いいたします。
> atmark@atde9:~/linux-5.10-5.10.233-r0$ sudo cp arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo armadillo:/boot

こちらのコマンドは「cp」を使っていますが「scp」の様に armadillo: でパスを指定していますね。
sshサーバーが有効されていたら scp でも転送可能です。
(リンクしたブログは特に転送方法を説明してませんが、usb メモリでもいいと思います)

> また、今まではat-dtwebでUART3,4を追加し使用しておりました。
> UART4のみでDEを実装したいのですが、このファイル(armadillo_iotg_g4-customize.dts)にUART3の記述は必要でしょうか?

リンクしたブログでは uart3 (ttymxc2) に rs485 の設定を行っていたので、別の uart を設定したい場合は dts の調整が必要です。

ブログで行っている設定はこの部分と gpio5 の pinctrl 設定だけですね:

        rts-gpios = <&gpio5 13 GPIO_ACTIVE_HIGH>;
        linux,rs485-enabled-at-boot-time;
        /* rs485-rts-delay = <1 1>; */

at-dtweb で生成された arch/arm64/boot/dts/freescale/armadillo_iotg_g4-at-dtweb.dts から変更して適切に rts-gpios と enabled の設定を追加する形がいいかもしれません。

> 普通のIOも使用したいです。

(Armadillo X2 のデフォルト pinmux では GPIO になっていますので、at-dtweb の dts でも今の customize でも問題なく gpio を利用できます)

また、添付していただいた dts では「MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13// CON11_15」と記載されていますが、その次の数字を省くことはできません。
「MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13」でピンの機能を選んで、次の数字で pull up の設定などが行われますので、pull up も不要の場合は 0 を記載してください。 arch/arm64/boot/dts/freescale/armadillo_iotg_g4.dts に「memo」のコメントがありますので参考にしてみてください。

よろしくお願いします

ご回答ありがとうございます。

> at-dtweb で生成された arch/arm64/boot/dts/freescale/armadillo_iotg_g4-at-dtweb.dts から変更して適切に rts-gpios と enabled の設定を追加する形がいいかもしれません。
>
> > 普通のIOも使用したいです。
>
> (Armadillo X2 のデフォルト pinmux では GPIO になっていますので、at-dtweb の dts でも今の customize でも問題なく gpio を利用できます)
armadillo_iotg_g4-at-dtweb.dts から既存のUART3を追加しました。

作成した「armadillo_iotg_g4-customize.dtbo」のアルマジロへのコピーがうまくできません。
お手数をおかけしますが詳細をご教授お願いいたします。

確認ですが[.dtbo]をコピー後アルマジロのboot/overlays.txtを
fdt_overlays=armadillo_iotg_g4-customize.dtbo
に書き換えて
アルマジロでpersist_file -vp /boot/overlays.txtを実行し再起動すると
・UART4の送受信(送信時にDEがHi)
・UART3の送受信ができる
・IOが今まで通り使用できる
ができるようになる認識で問題ないでしょうか。

ファイル ファイルの説明
armadillo_iotg_g4-customize.txt

at_dominique.m…

2025年3月11日 16時21分

マルティネです。

> 作成した「armadillo_iotg_g4-customize.dtbo」のアルマジロへのコピーがうまくできません。
> お手数をおかけしますが詳細をご教授お願いいたします。

添付したファイルで試してみてください。
変更点としては、pinctrl_uart3 を at-dtweb.dts のように &iomuxc内に作るように変更しました。

なれてないととても分かりにくいですが、添付していただいたファイルでは「pinctrl_uart3 は存在しないため dtbo を適用できません」って u-boot が dtb を解決する時にエラーして、dtbo をスキップします。(実際に存在しない名前は書いてくれないかもしれません…)
試しに、dtbo をビルドした後に以下のコマンドが正常に終了するはずです(今の dtbo でエラーします)

fdtoverlay -o /dev/null -i arch/arm64/boot/dts/freescale/armadillo_iotg_g4.dtb arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo

> 確認ですが[.dtbo]をコピー後アルマジロのboot/overlays.txtを
> fdt_overlays=armadillo_iotg_g4-customize.dtbo
> に書き換えて
> アルマジロでpersist_file -vp /boot/overlays.txtを実行し再起動すると
> ・UART4の送受信(送信時にDEがHi)
> ・UART3の送受信ができる
> ・IOが今まで通り使用できる
> ができるようになる認識で問題ないでしょうか。

はい、新しく作った dtbo を /boot にコピーし persist_file を行った後に再起動すると /dev/ttymxc[23] が生成されて gpio も操作できるはずです。

/dev/ttymxc2 などが生成されないと何かコピーか適用に問題があると思いますので、新しいファイルでもダメでしたら手順を頭から書き直しますので言ってください。
(今の質問を読んだ印象ではコピー・保存はできてると思いますので)

よろしくお願いします。

ファイル ファイルの説明
armadillo_iotg_g4-customize.dts.txt

回答ありがとうございます。

申し訳ございません。現在.deboのコピーで止まっています。
提供いただいた.dtboで.dtbは作成できました。

PC(atde)からアルマジロに.dtbをコピーしようとしています。

atmark@atde9:~/linux-5.10-5.10.233-r0$
scp arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo armadillo.localhost:/boot
このコマンドでコピーしようとしてパスワード入力後
atmark@armadillo.localhost's password:
scp: /boot/armadillo_iotg_g4-customize.dtbo: Permission denied
が出力されアルマジロのboot/にはコピーされておりません。

お手数をおかけしますがご回答お願いします。