如何访问 PCI 串行卡的所有 4 个端口

如何访问 PCI 串行卡的所有 4 个端口

我有一个 MCS9904 串行 pci 卡,我想在 debian 10 上使用它。当我运行时:

dmesg | grep tty

它返回:

00:05:I/O 0x3f*(irq = 4)处的 ttyS0 是 16550A

0000:02:00:0:I/O 0xd030(irq = 18)处的 ttyS1 是 ST16650V2

0000:02:00:1:I/O 0xd020(irq = 19)处的 ttyS2 是 ST16650V2

0000:02:00:2:I/O 0xd010(irq = 16)处的 ttyS3 是 ST16650V2

它只返回 4 个端口。一个内置串行端口,另外 3 个来自我的 PCI 卡。我无法使用最后一个端口。我已经从以下位置下载了驱动程序这里 我运行以下命令来安装驱动程序:

  1. 制作
  2. 进行安装

有人可以在这个问题上指导我吗?

答案1

早期的PC基于8250 UART芯片最多有4个串口。超越此限制是可能的,但通常采用其他硬件实现或至少采用特殊驱动程序来启用更多数量的端口。现代 16550A 实际上可以在编程上向后兼容那些旧的 8250 芯片和身体水平。

(在 20 世纪 80 年代末/90 年代初,当使用较旧/较便宜的计算机升级到更新、更快的拨号调制解调器时,可能需要将实际的 8250 芯片从插槽中撬出,并用 16550A 替换它们,以实现一致的错误- 免费下载。)

通过快速谷歌搜索,ST16650V2 似乎是一个针对 PCI(e) 总线兼容性进行了现代化改造的版本,但它仍然尽可能兼容旧的编程接口。

Linux 内核有一个编译时参数“运行时注册的 8250/16550 串口数量”( CONFIG_SERIAL_8250_RUNTIME_UARTS),默认设置为 4。 Debian 10 并未更改其标准内核包中的此默认值。

但这个值可以被内核启动参数覆盖8250.nr_uarts(或者可能只是nr_uarts针对旧的内核版本,尽管我认为这太旧了,无法应用于 Debian 10)。

由于您似乎总共有 5 个由 8250 兼容串行端口驱动程序处理的端口,因此您应该添加8250.nr_uarts=5到.生成的配置行可能如下所示:GRUB_CMDLINE_LINUX_DEFAULT=/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash 8250.nr_uarts=5"

进行更改后,您应该update-grub以 root 身份运行以使更改在 GRUB 中生效。重新启动后,您的系统应该能够使用所有 5 个 8250 兼容串行端口。

相关内容