2012-10-26 1 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 - 직렬 8250 루프백 드라이버 코드?

하나의 가능한 구현은 전송 순환 버퍼 데이터를 tty 플립 버퍼에 넣은 다음 사용자 공간에서 수신 할 수 있도록이 데이터를 tty 코어까지 푸시하는 것일 수 있습니다. 코드에서 수행하는 방법을 알고 싶습니다. 위에서 언급 한 "rx 및 tx"기능을 검색 할 수 있습니다. 즉, 찾고자하는 부분이며, 어떻게 테스트 할 것인가는 장치 파일에 글을 작성한 후 즉시 수신하는 방법입니다.

샘플 패치도 있지만 잘 작동하는지는 확실하지 않습니다.

어떤 도움을 주시면 감사하겠습니다 ...

Abhijit는

+0

이건 미친 짓입니다. Linux에 에코 장치가 없습니까?/dev/echo를 시도해보십시오. –

+0

안녕하세요 한스 ... 아이디어는 드라이버 코드를 변경하고 거기에 루프백 코드를 추가하는 것입니다 .... 내가 볼 수 있듯이 에코를위한 장치가 없으며, 하이퍼 터미널/테라 바이트 유형의 응용 프로그램과는 달리 반향을 검사 할 수 있습니다 문자. – 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.`

관련 문제