1

linux-3.6.1カーネルにある/drivers/tty/serial/8250.cにある8250.cにシリアルループバックドライバーコードを実装したいと思います。ハードウェアループバックを使用したくない(つまり、標準シリアルポートのピン2(tx)と3(rx)を短絡する)代わりに、ユーザースペースからのデータが移動するように8250.cドライバーを変更したい「serial8250_tx_char」関数から「serial8250_rx_char」に直接ハードウェアに移動せずに、つまり送信されたものを受信したいですか?

考えられる実装の1つは、送信循環バッファーデータをttyフリップバッファーに入れ、このデータをttyコアにプッシュして、ユーザースペースがそれを受信できるようにすることです。コードでそれを行う方法を知りたいです。上記の「rxおよびtx」関数を検索できます。これは、私が探している場所であり、これをどのようにテストするかということは、デバイスファイルに書き込んですぐに同じものを受け取ることを意味します。

サンプルパッチもありますが、機能するかどうかはわかりません。

どんな助けもいただければ幸いです...

アビジット

4

1 に答える 1

-2
`@@ -2112,6 +2116,7 @@ static int serial8250_startup(struct uart_port *port)
                if (is_real_interrupt(up->port.irq))
                        up->port.mctrl |= TIOCM_OUT2;

   + up->port.mctrl |= TIOCM_LOOP;
    serial8250_set_mctrl(&up->port, up->port.mctrl);

    /* Serial over Lan (SoL) hack:

これにより、UART が内部ループバック モードで動作するように設定されます。

于 2012-11-26T09:50:04.463 に答える