나는 Debian 8.5의 Jetway JNF9VT 마더보드에서 직렬 포트가 작동하도록 하려고 합니다. 이 보드는 FINTEK F81866A 슈퍼 IO 칩을 직렬 포트로 사용합니다. 분명히 이는 LPC 버스를 통해 SOC에 연결됩니다. 이는 플러그 앤 플레이 기능이 없음을 의미하는 것 같습니다.
모든 포트는 Windows 7에서 제대로 작동하므로 하드웨어도 확실히 작동합니다. 나는 또한 Ubuntu 16.04를 시도했지만 Debian과 동일한 문제가 있었습니다.
Debian에서는 /etc/default/grub의 Linux 명령줄 끝에 "8250.nr_uarts=6"을 추가했는데 부팅 후 6개 포트가 모두 인식되는 것 같았습니다.
root@pt1:~# setserial -g /dev/ttyS*
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: 16550A, Port: 0x03e8, IRQ: 10
/dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 10
/dev/ttyS4, UART: 16550A, Port: 0x04e0, IRQ: 11
/dev/ttyS5, UART: 16550A, Port: 0x04e8, IRQ: 11
root@pt1:~# dmesg | grep ttyS
[ 2.035346] 00:05: ttyS2 at I/O 0x3e8 (irq = 10, base_baud = 115200) is a 16550A
[ 2.056442] 00:06: ttyS3 at I/O 0x2e8 (irq = 10, base_baud = 115200) is a 16550A
[ 2.077124] 00:07: ttyS4 at I/O 0x4e0 (irq = 11, base_baud = 115200) is a 16550A
[ 2.097887] 00:08: ttyS5 at I/O 0x4e8 (irq = 11, base_baud = 115200) is a 16550A
[ 2.118655] 00:09: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 2.139825] 00:0a: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
root@pt1:~#
하지만 포트는 어떤 데이터도 전달할 수 없습니다. 테스트용으로 minicom을 사용하고 있습니다. 각 포트의 TX 및 RX 핀에 간단한 루프백을 사용하고 모든 핸드셰이킹을 비활성화하므로 프레이밍이나 타이밍 문제는 아닌 것 같습니다.
각 포트에 대해 이 명령을 실행한 후 포트가 데이터를 전달하도록 할 수 있습니다.
root@pt1:~# setserial /dev/ttyS1 irq 0
root@pt1:~#
이렇게 하면 인터럽트가 비활성화되고 포트가 "빠른 폴링" 모드로 설정됩니다. 분명히 이것은 매우 CPU 집약적인 모드이므로 포트를 이 상태로 두지 않는 것이 좋습니다.
인터럽트를 1에서 15 사이로 설정해 보았으나 여전히 데이터가 전달되지 않습니다.
분명히 직렬 포트가 LPC 인터페이스를 통해 연결된 경우 ISA 스타일의 플러그 앤 플레이 기능이 없기 때문에 BIOS는 기본 주소와 인터럽트를 정적으로 정의해야 합니다. 그렇다면 이것이 BIOS 문제인지 궁금합니다. BIOS는 "A01: 초기 BIOS"에 있으며 업데이트가 없습니다. BIOS에는 COM 포트 설정이 있으며 옵션은 Windows 또는 Linux입니다. Linux용으로 설정했지만 이것이 실제로 무엇을 하는지는 모르겠습니다. Jetway 지원은 전혀 도움이 되지 않으며 마더보드 설명서에는 BIOS 설정이 실제로 무엇을 하는지 설명하지 않고 변경 방법만 설명합니다.
어떤 조언이라도 감사드립니다.
답변1
확인 결과 BIOS 문제였습니다. Jetway는 BIOS 펌웨어 버전을 BARVIA02로 업데이트하여 이제 Debian 8.5를 새로 설치한 후 부팅 시 모든 직렬 포트가 제대로 작동하도록 했습니다.