2012-10-26 32 views
1

我想在linux-3.6.1內核中找到的/drivers/tty/serial/8250.c中的8250.c中實現串行環回驅動程序代碼。 我不想使用硬件回送(即通過短接標準串行端口的引腳2(tx)和3(rx)),而是我想修改8250.c驅動程序,以便來自用戶空間的數據將從「serial8250_tx_char」函數直接傳輸到「serial8250_rx_char」,而不需要硬件,即我想接收傳輸的內容?linux-device-driver - serial 8250 loopback驅動代碼?

一種可能的實現方式是將傳輸循環緩衝區數據放入tty翻轉緩衝區,然後將這些數據推送到tty核心,以便用戶空間可以接收它? 我想知道如何在代碼中做到這一點。我們可以搜索上面提到的「rx和tx」函數 - 這就是我正在看的地方,我將如何測試這個,意思是通過寫入設備文件,然後立即接收它。

我也有一個樣本補丁,但不知道它是否會工作。

任何幫助,將不勝感激......

作者Abhijit

+0

這太瘋狂了。 Linux上沒有迴音設備嗎?試試/ dev/echo。 –

+0

嘿漢斯... ...想法是更改驅動程序代碼,並在那裏添加一個回送代碼....然而,正如我所看到的,沒有回聲的設備,違反超級終端/ teraterm類型的應用程序,它可以檢查回聲的字符。 – Abhijit

+0

'TIOCM_LOOP'是你的解脫。 – 0andriy

回答

-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內部環回工作mode.`