Armadilloフォーラム

RS-485の通信制御について

e-yamada

2015年5月1日 15時17分

はじめまして。山田と申します。
Armadillo-840にて、RS-485の通信制御(半二重通信)を行いたいと考えております。

下記の書き込みの内容も確認させていただきましたが、
ソフトにて制御できればと考えております。

 http://lists.atmark-techno.com/pipermail/armadillo/2013-January/008542…

Linuxのドライバを改造する方法などを検討しておりますが、
実際に対応された方がおられましたら、情報をいただけますと幸いです。

以上よろしくお願いいたします。

コメント

at_kojiro.yamada

2015年5月19日 11時59分

実際に試したわけではないのですが、
参考になりそうな情報が見つかりましたので展開します。

LinuxではRS485対応するために構造体が用意されているようで、
以下に、構造体の利用方法などが記載されています。

https://www.kernel.org/doc/Documentation/serial/serial-rs485.txt

実装方法は他のドライバーを参考にするのが良さそうです。

Linuxカーネルのmainlineで探してみると
drivers/tty/serial/omap-serial.c
が参考になりそうです。
このドライバーでは、RTSの制御をGPIOで行い、RS485に対応しています。

https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tr…

上記のドライバーなどを参考に
linux-3.4-at/drivers/tty/serial/sh-sci.c
を改造する流れになると思います。

e-yamada

2015年5月19日 19時37分

at_kojiro.yamada様

ご返信いただきありがとうございます。

RS-485対応につきましてはハードウェアでの対応も視野に入れておりましたが、いただいた情報につきましても参考にさせていただきたいと思います。

y.nakamura

2015年5月19日 21時30分

中村です。

余計なお世話、かもしれませんが・・・
(and カーネル2.6ですが)

> LinuxではRS485対応するために構造体が用意されているようで、
> 以下に、構造体の利用方法などが記載されています。
>
> https://www.kernel.org/doc/Documentation/serial/serial-rs485.txt
>
> 実装方法は他のドライバーを参考にするのが良さそうです。
>
> Linuxカーネルのmainlineで探してみると
> drivers/tty/serial/omap-serial.c
> が参考になりそうです。
...
> 上記のドライバーなどを参考に
> linux-3.4-at/drivers/tty/serial/sh-sci.c
> を改造する流れになると思います。

Armadillo-IoTのシリアルドライバも参考になると思います。

http://manual.atmark-techno.com/armadillo-iot/armadillo-iotg-std_produc…
の少し下に
アプリケーションプログラムの作成方法については、
Linuxカーネルのソースコードに含まれているドキュメント
(Documentation/serial/serial-rs485.txt)を参照してください。
と書いてあり、ソースを見ると、linux-2.6.26-at21からat22の変更で、
serial-rs485.txt記載のioctlを使ったRS-485対応が実装されているようです。

linux-2.6.26-at21->at22の差分をとってみれば、
どういう修正をすればいいのか?を理解する手助けに
なるかもしれません。
(at23->at24でもRS485関係で少し修正が入ってます)
(at21->at22->at23->at24の差分を見ながらこの投稿を書いてます)

--
なかむら

e-yamada

2015年5月21日 8時59分

中村様

有用な情報をありがとうございます。

参考にさせていただきます。