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

t.sugi

2022年11月9日 19時03分

大塩様

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

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

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

t.sugi

2022年11月24日 10時34分

大塩様

本件何か進展などありましたら教えていただけますでしょうか。

at_koseki

2022年11月25日 12時03分

古関です。

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

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

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

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

t.sugi

2022年11月25日 13時07分

古関様

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