초기 질문
저는 NXP 칩 SC16IS740을 임베디드 Linux 시스템(메인라인 커널 v4.8)의 주변 장치로 사용하고 있습니다. 사용 사례는 매우 간단합니다. 지속적으로 전송되는 uart 라인(9600 8n1)을 칩 드라이버를 통해 읽어야 합니다.
지금까지 sc16is7xx
커널 빌드에 드라이버 모듈을 포함시켰으며 장치를 /dev/ttySC0
.
그러나 지금은 직렬 포트를 읽을 수 없으며 올바른 구성이 누락된 것 같습니다. 나는 단순히 시도했다
cat /dev/ttySC0
그리고
minicom -D /dev/ttySC0 -b 9600 -8
장치 디렉터리(/sys/class/tty/ttySC0/)에는 읽기 전용 파일만 있고 드라이버 사용 방법에 대한 문서를 찾지 못했기 때문에 아이디어가 부족합니다.
이 드라이버를 구성하는 올바른 방법은 무엇입니까?
편집기: 구성, 로깅 및 측정
구성
다음과 같이 커널 레시피 구성에 모듈을 포함시켰습니다.
CONFIG_SERIAL_SC16IS7XX_CORE=m
CONFIG_SERIAL_SC16IS7XX=m
CONFIG_SERIAL_SC16IS7XX_I2C=y
모듈을 로드/언로드하려면(장치가 로드/언로드되도록 함 /dev/ttySC0
) 다음을 사용합니다.
modprobe [-r] sc16is7xx
통나무
다음과 같은 메시지에서 결과를 찾으세요 dmesg
.sc16is7
[ 5592.212905] [<c0379a14>] (uart_get_baud_rate) from [<bf07cf84>] (sc16is7xx_set_termios+0x1c4/0x374 [sc16is7xx])
[ 5592.213045] [<bf07cdc0>] (sc16is7xx_set_termios [sc16is7xx]) from [<c0379f04>] (uart_change_speed+0x5c/0x124)
이 두 메시지는 다음을 수행할 때마다 정확하게 기록됩니다.
/dev/ttySC0
minicom
연결 사용 , 열기 또는 닫기cat
- 전송 속도 또는 기타 직렬 포트 설정 변경
minicom
측정
오실로스코프를 사용하여 측정(기본 논리 분석 포함)을 수행하면 다음을 수행할 때 칩과 통신하는 I2C 라인을 볼 수 있습니다.
/dev/ttySC0
다음과의 연결을 열거나 닫습니다.minicom
- 전송 속도 또는 기타 직렬 포트 설정 변경
minicom
그렇지 않으면 회선에서 전혀 통신이 이루어지지 않습니다. 현재 전송된 바이트를 분석하고 데이터 테이블을 사용하여 확인하려고 합니다. 즉, 어떻게든 드라이버를 디버그하려고 합니다.