組み込み Linux の UART で 9 ビット プロトコルを強制しようとしています。現在、am335x_evm ボードでこれをテストしています。スティックパリティを使用してこれを行う予定です。理想的には、omap-serial.c ドライバーのコードを実際に変更する必要がないことを望んでいました。
9 ビット プロトコルの理由は、それを使用する一部のレガシー ハードウェアをサポートするためです。パリティ ビットは、メッセージのアドレス部分では 1、データ部分では 0、そして終端バイトでは再び 1 である必要があります。
標準のシステム コール (open、write、read、ioctl、tcsetattr など) を介して UART とやり取りするプロセスをユーザー空間で実行することを計画していました。UART を構成してパリティを有効にし、スティック パリティを設定します。次に、パリティを偶数に設定し、write() を呼び出してアドレス データを送信します。次に、パリティを 0 に設定してデータを送信します。私の懸念は、パリティを 1 から 0 に変更した場合、それはいつ有効になりますか? UART がすべてのアドレス データの送信を完了していない場合、パリティの変更は未送信のデータに適用されますか?