불행히도 직렬 포트는 PlugNPlay가 아니므로 커널은 어떤 장치가 연결되어 있는지 알지 못합니다. HowTo 튜토리얼을 읽은 후 작업 아이디어를 얻었습니다.
/dev/
OSes와 같은 유닉스 의 디렉토리에는 ttySn 이라는 이름의 파일이 있습니다 (n은 숫자 임) . 대부분 기존 장치와 일치하지 않습니다. 어떤 작업을 수행하려면 다음 명령을 실행하십시오.
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
위는 내 PC의 출력 예입니다. 몇 개의 직렬 포트가 초기화 된 것을 볼 수 있습니다.
ttyS0
, ttyS1
, ttyS4
, ttyS5
.
그중 하나는 장치가 연결되면 양의 전압을 갖 습니다. 따라서 파일의 내용을 /proc/tty/driver/serial
장치가 연결되거나 연결되지 않은 상태 로 비교 하면 장치 와 관련된 ttyS를 쉽게 찾을 수 있습니다 . 이제 다음을 수행하십시오.
$ sudo cat /proc/tty/driver/serial> /tmp/1
(연결 해제) 장치 연결
$ sudo cat /proc/tty/driver/serial> /tmp/2
다음으로 두 파일의 차이점을 확인하십시오. 아래는 내 PC의 출력입니다.
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
3 개의 숫자를 dmesg 출력과 비교하여 어느 것이 포트인지 확인할 수 있습니다.
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
따라서 우리의 장치는 /dev/ttyS0
임무 완수입니다!