Armadilloフォーラム

RS-485通信のDMA転送について

t.sugi

2022年11月8日 17時08分

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

標記の件、以下の機器でRS-485通信を行った際に10~20分経過すると接続機器からのデータが取れなくなります。
・ハード:Armadillo-IoT G3L(AGL3100-D10Z)
・OS:Linux4.9.133-at25

以前に投稿されていました以下の内容を参考にLinuxカーネルのDMA転送を無効にすると正常にデータを取得できるようになります。
https://armadillo.atmark-techno.com/forum/armadillo/12826

ただ、以下の投稿でDMA転送を無効にすると処理性能が落ちるため無効にせずに対応した修正を組み込んでいる旨の書き込みがされており、DMA転送を安易に無効化してもよいか懸念しております。
https://armadillo.atmark-techno.com/forum/armadillo/3520?page=1

つきましてはDMA転送を有効にしたまま問題を解消できる方法がありましたらご教授いただけないでしょうか。

コメント

at_syunya.ohshio

2022年11月9日 16時46分

大塩です。

> 標記の件、以下の機器でRS-485通信を行った際に10~20分経過すると接続機器からのデータが取れなくなります。
> ・ハード:Armadillo-IoT G3L(AGL3100-D10Z)
> ・OS:Linux4.9.133-at25

上記につきまして、可能であれば以下内容にお答え頂けますでしょうか。
・接続機器の情報(型番等)

> DMA転送を安易に無効化してもよいか懸念しております。
DMAを無効にした場合、ご参照頂いているフォーラムにもありますが
UART通信のデータ転送時にCPUを使用するようになるため、
CPUの作業量が増え負荷がかかり、パフォーマンスが落ちるということになります。

お客様の使用しているアプリケーションにて短い期間でRS485通信を行わないのであれば影響は少ないと思われますが、
そうでない場合は懸念されている通り影響が大きく出るかもしれません。
パフォーマンスへの影響はお客様の環境にて変化しますので、動作確認の上ご判断ください。

> つきましてはDMA転送を有効にしたまま問題を解消できる方法がありましたらご教授いただけないでしょうか。
こちらにつきましては、ご参照されているフォーラムを確認しますと全二重では発生しないと記載されているため
お客様がご使用になられている接続機器が全二重通信可能である場合、全二重にすることで解決となる可能性があります。

大塩様

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

> 上記につきまして、可能であれば以下内容にお答え頂けますでしょうか。
> ・接続機器の情報(型番等)
接続機器は以下になります。
・ECOnectシリーズ リモートI/Oユニット
https://www3.panasonic.biz/ac/j/fasys/eco/cmd/remote-io/index.jsp

> > つきましてはDMA転送を有効にしたまま問題を解消できる方法がありましたらご教授いただけないでしょうか。
> こちらにつきましては、ご参照されているフォーラムを確認しますと全二重では発生しないと記載されているため
> お客様がご使用になられている接続機器が全二重通信可能である場合、全二重にすることで解決となる可能性があります。
接続機器が半二重のみの対応となるため変更できません。他の方法がありましたらご教授いただけないでしょうか。

古関です。

回答が遅くなってしまい申し訳ございません。

Linux4.9に組み込まれているi.MX7DのSDMAファームのバージョンが
最新より古く、現在これを疑っています。

お手数をおかけしますが、Linux4.9.133-at25に新しいSDMAファームを適用した
検証用のイメージを作成しますので、それで動作確認をしてもらうことは可能でしょうか?

イメージのお渡しですが来週の火曜日以降になりそうです。

古関様

ご回答ありがとうございます。
動作確認可能ですのでイメージを頂けますでしょうか。お忙しいところ申し訳ありませんが、可能な範囲でなるべく早いタイミングで頂ければ幸いです。

古関様

検証用イメージについて、いつ頃頂けそうか教えていただくことは可能でしょうか?

at_keitaro.takahashi

2022年12月1日 16時38分

アットマークテクノ高橋です。
SDMAのファームウェアを更新したuImageを添付いたします。
提供が遅れ誠に申し訳ありません。

ファイル ファイルの説明
uImage_dtb_SDMA.zip

高橋様

ご対応ありがとうございます。頂いたイメージで動作確認いたします。

at_keitaro.takahashi

2022年12月2日 16時56分

高橋です。
度々申し訳ありません、
提供したイメージに不備があったため、修正し添付いたしました。

修正内容は以下になります。
・SDMAのファームウェアをNXPが提供している最新のものに置き換え

使用したファームウェア(※添付したuImageには既に取り込まれています)は、以下手順で取得及び確認することができます。

[ATDE ~]$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.17.bin
(省略)
[ATDE ~]$ chmod +x firmware-imx-8.17.bin
[ATDE ~]$ ./firmware-imx-8.17.bin
(省略)
[ATDE ~]$ md5sum firmware-imx-8.17/firmware/sdma/sdma-imx7d.bin
eec59b6ed17cda161c5ea4b8ab965338  firmware-imx-8.17/firmware/sdma/sdma-imx7d.bin

お手数おかけしますが、改めてダウンロードいただけると幸いです。
よろしくお願いいたします。

ファイル ファイルの説明
uImage_dtb_SDMA_20221202.zip

高橋様

ご連絡ありがとうございます。内容承知しました。最新のSDMAのファームウェアを適用して動作確認してみます。

高橋様

頂いたイメージを書き込んで動作確認を行いましたが同様の現象が発生しました。
また、過去のカーネルイメージを使用してみたところ、at16とat18では現象が発生せず、at19で発生することを確認しました。これらのバージョンの差分からご確認していただくことは可能でしょうか。

at_syunya.ohshio

2023年12月27日 13時01分

大塩です。

対応が遅くなり大変申し訳ございません。

カーネルの修正により、DMAを無効化することなくRS485の通信が正常に行えるようになりました。
こちらで24時間以上の連続動作試験を行い、データ通信が不能になることなく通信し続けられることを確認済です。

詳細は以下製品アップデート情報をご確認ください。
https://armadillo.atmark-techno.com/news/20231226/software-update-aiotg…

以上です。