お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2015-12-18 00:17:55

keijisawada
新しいメンバ
登録日: 2015-12-17

UART(8250)とTCP/IPの変換

BusyBox v1.15.3の環境で下記ドライバーを利用したTCP/IPとUARTの変換を実施しようとしています。

root/usr/src/linux/drivers/tty/serial/8250.c

実際のシステム構成としては以下となります。

①PC-(TCP/IP)-②BusyBoxベースのターゲット装置-(RS485)-③シリアル通信装置

こちらで開発しているのは「②BusyBoxベースのターゲット装置」となるのですが、
「③シリアル通信装置」から受信するデータをうまく受信することができません。

現象的には、ドライバからの受信データに取りこぼしが発生するのですが、
どなたかご経験のある方、いらっしゃればお願いします。

オフライン

 

#2 2015-12-18 13:25:01

Mocchi
管理者
登録日: 2009-05-17

Re: UART(8250)とTCP/IPの変換

可能性として:
* Busyboxを持つセットトップボックスシステム上のプログラムが、TCPパケットをちゃんと処理できておらず、ここでデータロストしている。
* そのプログラムが、受信したデータを順次、EIA-485インターフェイスドライバに渡せていない。
* ドライバの不調や設定不良で、システムがEIA-485インターフェイスをうまく扱えていない。結果、シリアルバス上で一部データが欠損する。

くらいがあるかなぁと思いました。なお、セットトップボックスの対向側(この場合、シリアル通信装置)のセットアップに不備がない前提です。

オフライン

 

#3 2015-12-21 16:57:45

keijisawada
新しいメンバ
登録日: 2015-12-17

Re: UART(8250)とTCP/IPの変換

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)
にするように修正しまずは問題解決できました。

以上です レスポンス頂き感謝申し上げます。

オフライン

 

Board footer

Powered by FluxBB