Armadilloフォーラム

Armadillo-IoT G3LでRS485を無効化する方法について

kanbara

2024年2月1日 15時03分

この度は、Armadillo-IoT G3Lに関する技術的な質問をさせていただきます。以下、私の環境と質問内容です。

【環境】
機種:Armadillo-IoT G3L
OS:Debian GNU/Linux 10(buster)
ユーザーランド:debian-buster-armhf_aiotg3l_20220829.tar.gz
Linuxカーネル:Linux-4.9用 uImage-x1-v4.9-at25

【質問内容】
カーネルのパッチ適用以外でRS485通信を無効化する方法についてご教示いただきたいです。

御社の「Armadillo-IoT G3LをModbus スレーブとして制御する方法」というブログ記事を参考にし、2台のArmadillo-IoT G3Lを用いてRS485を介したModbus通信の実現ができました。しかし、この通信を無効にする設定を行ったにもかかわらず、通信ができてしまうという問題が発生しています。

具体的には、以下の手順でRS485通信を無効にしようと試みましたが、通信が可能な状態のままでした。

①メンテナンスモードでの起動

②U-Bootプロンプトで以下のコマンドを実行
=>setenv optargs imx.rs485_uart2=0x02,0,0
=>saveenv
=>boot

③設定後、再度マスタ/スレーブのプログラムを実行して動作確認

これらの設定後もRS485通信が無効にならない原因や、私の設定に何か不備があるのか、または他に必要な設定がある場合は、その詳細をご教示いただけますと幸いです。

お忙しいところ恐縮ですが、ご確認のほどよろしくお願いいたします。

コメント

at_dominique.m…

2024年2月9日 15時47分

kanbaraさん、

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

返事が遅くなってすみません。

> これらの設定後もRS485通信が無効にならない原因や、私の設定に何か不備があるのか、または他に必要な設定がある場合は、その詳細をご教示いただけますと幸いです。

imx.rs485_uart2=0x02,0,0 で flags が SER_RS485_RTS_ON_SEND になって、SER_RS485_ENABLED が無効になっているはずですね。
SER_RS485_ENABLED を unset すると rs485 の機能だけが無効になって、rs232 の様に通信が制限されなくなるだけなのでポートが無効になるわけではないです。

ドライバを軽くみた限りでは簡単にポートを完全に無効できる方法はなさそうなので、ポートを無効するには一番確実のは dtb の変更です。(at-dtwebなどで設定しなければ無効になるはずです)

また、今回の質問と直接に関係ありませんが、v4.9-x1-at31 に rs485 のドライバの修正はいくつか入りましたので、rs485 の不具合で困っていた場合は更新を試してみてくいただければと思います。

お手数ですがよろしくお願いします。