Linux でシリアル ポート経由のプロトコルを実装しています。このプロトコルは要求応答スキームに基づいているため、スループットは、デバイスにパケットを送信して応答を取得するのにかかる時間によって制限されます。デバイスはほとんどが Arm ベースで、Linux >= 3.0 を実行します。往復時間を 10 ミリ秒未満に短縮するのに問題があります (115200 ボー、8 データ ビット、パリティなし、メッセージあたり 7 バイト)。
select、poll、epoll、または ioctl を使用した手動のポーリングのうち、どの IO インターフェースが最小のレイテンシーを提供してくれるでしょうか? ブロッキング IO または非ブロッキング IO はレイテンシに影響しますか?
setserial で low_latency フラグを設定してみました。でも効果は無かったようです。
レイテンシーを減らすために他にできることはありますか? 私はすべてのデバイスを制御しているため、カーネルにパッチを適用することもできますが、そうしないことをお勧めします。
- - 編集 - -
シリアル コントローラーは 16550A を使用します。