让串行端口在 JNF9VT 上工作

让串行端口在 JNF9VT 上工作

我正在尝试让串行端口在 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”,启动后似乎可以识别所有六个端口:

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 问题。捷波更新了 BIOS 固件版本(至 BARVIA02),现在所有串行端口在全新安装 Debian 8.5 后均可在启动时正常工作。

相关内容