0

DTE/DCE として構成できるハードウェア上で組み込み Linux カーネルを実行しています。tty_io.c と呼ばれるファイルの tty/シリアル ドライバーには、特定のモデム制御信号を設定/クリアするために tty_ioctl からビット パターンを取得する関数 tty_tiocmset() があります。興味深いことに、tty_tiocmset() 関数は、TIOCM_DTR|TIOCM_RTS|TIOCM_OUT1|TIOCM_OUT2|TIOCM_LOOP 以外のすべてのモデム信号をマスクします (このマスクは以下のコードに示されています)。ただし、ドキュメントを見ると、すべてのモデム信号を設定/クリアできる必要があるようですhttp://www.kernel.org/doc/man-pages/online/pages/man4/tty_ioctl.4.htmlスクロール「モデム制御」まで。

このマスクがRI、CD、CTS、DSRなどの他の信号なしで存在する理由を知っている人はいますか? また、変更されていないドライバを使用して他のモデム信号を制御する別の方法はありますか?

4

1 に答える 1

0

Linuxは元々、8250タイプのUARTを使用するx86PCプラットフォームでホストされていました。モデム信号名OUT1およびOUT2はEIA/RS-232名ではありませんが、WesternDigital8250データシートに表示されます。(名前と機能によって)一致するようにリストされtty_tiocmset()た5ビットは、8250モデム制御レジスタで使用可能な5ビットです。追加の制御ラインは、8250の外部のロジックによって実装する必要があります。

RI、CD、CTS、DSRなどの他の信号なしでこのマスクが存在する理由を誰かが簡単に知っていますか?

あなたが言及するこれらの4つはDTEポートへの入力信号であり、PCは通常DTEとして構成されています(または想定/デフォルト)。
入力信号は出力制御レジスタに表示されません。
LinuxがDCEポートのデバイスに組み込まれている場合、これはバグである可能性がありますか?
これらの入力信号は、モデムステータスレジスタに表示されます。

また、変更されていないドライバを使用して他のモデム信号を制御する別の方法はありますか?

OUT1再マッピングしOUT2て、出力する必要のある追加のDTE信号にマッピングすることができます。
DCEのポートを設定する必要がある場合は、4つの制御ラインすべてを再マップする必要がある場合があります。
DCEポート(つまりモデム)の場合、通常、出力制御ラインはDCD、CTS、DSR、およびRIの4つだけです。また、8250 MCRには(ループバック以外に)正確に4つの出力制御ビットがあります。

于 2012-12-03T01:54:58.067 に答える