
Ubuntu日本語フォーラム

ログインしていません。
BusyBox v1.15.3の環境で下記ドライバーを利用したTCP/IPとUARTの変換を実施しようとしています。
root/usr/src/linux/drivers/tty/serial/8250.c
実際のシステム構成としては以下となります。
①PC-(TCP/IP)-②BusyBoxベースのターゲット装置-(RS485)-③シリアル通信装置
こちらで開発しているのは「②BusyBoxベースのターゲット装置」となるのですが、
「③シリアル通信装置」から受信するデータをうまく受信することができません。
現象的には、ドライバからの受信データに取りこぼしが発生するのですが、
どなたかご経験のある方、いらっしゃればお願いします。
オフライン
可能性として:
* Busyboxを持つセットトップボックスシステム上のプログラムが、TCPパケットをちゃんと処理できておらず、ここでデータロストしている。
* そのプログラムが、受信したデータを順次、EIA-485インターフェイスドライバに渡せていない。
* ドライバの不調や設定不良で、システムがEIA-485インターフェイスをうまく扱えていない。結果、シリアルバス上で一部データが欠損する。
くらいがあるかなぁと思いました。なお、セットトップボックスの対向側(この場合、シリアル通信装置)のセットアップに不備がない前提です。
オフライン
Mocchiさん、ご見解ありがとうございます。
具体的な問題が判明しましたので、ご連絡致します。
問題はRS-485の対向側のシリアル制御装置からの応答(RXD)がSTOP,START,DATA以外の通信を
ディセーブルにしており、こちらの装置側ではこの中間電位をLow側に引っ張る回路となっており
BREAKが頻発する状況となっておりました。
状況としては以下です。
BREAK(pulldown)->(長期間)->STOP(1)->START(0)->DATAx8->STOP(1)->BREAK(pulldown)->(長期間)
上位側から見るとこのBREAK期間中は受信データを引き上げることができず、ずれて受信したり、
上書きが発生したり(フロー制御はしていませんので)していたようです。
実際の処置は対向側はもうすでに売り物ですのでこちら側の装置を強制的にBREAK(Pulldown)をSTOP(Pullaup)
にするように修正しまずは問題解決できました。
以上です レスポンス頂き感謝申し上げます。
オフライン