我试图解决一个问题,即我向 Centos 发行版添加了 3 个串口,以便它可以与我的嵌入式 PC 上的所有串口进行通信。希望有人可以帮助我让这些串行端口正常工作。
BTW,Ubuntu 20.04 默认情况下有足够的串口(Ubuntu 默认填写为 32 个端口)
在 Centos 7-9 2009 上我运行了:
sudo mknod -m 660 /dev/ttyS4 c 4 68
sudo mknod -m 660 /dev/ttyS5 c 4 69
sudo mknod -m 660 /dev/ttyS6 c 4 70
sudo chgrp dialout /dev/ttyS4
sudo chgrp dialout /dev/ttyS5
sudo chgrp dialout /dev/ttyS6
并查看串行设备:
[centos@localhost ~]$ ls /dev/ttyS* -al
crw-rw----. 1 root dialout 4, 64 Aug 22 08:17 /dev/ttyS0
crw-rw----. 1 root dialout 4, 65 Aug 22 08:58 /dev/ttyS1
crw-rw----. 1 root dialout 4, 66 Aug 22 08:58 /dev/ttyS2
crw-rw----. 1 root dialout 4, 67 Aug 22 08:17 /dev/ttyS3
crw-rw----. 1 root dialout 4, 68 Aug 22 08:28 /dev/ttyS4
crw-rw----. 1 root dialout 4, 69 Aug 22 08:28 /dev/ttyS5
crw-rw----. 1 root dialout 4, 70 Aug 22 08:28 /dev/ttyS6
如果我尝试使用 /dev/ttyS4,我会得到:
[centos@localhost ~]$ sudo minicom -D /dev/ttyS4
minicom: cannot open /dev/ttyS4: No such device or address
或者,如果我列出 /dev/ttyS3 和 /dev/ttyS4 的设置:
[centos@localhost ~]$ sudo setserial /dev/ttyS3
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
#/dev/ttyS0-3 all work.
[centos@localhost ~]$ sudo setserial /dev/ttyS4
/dev/ttyS4: No such device or address
#/dev/ttyS4-6 do not work
另外,重新启动后,Centos 删除了新的串行端口 /dev/ttyS4-6。我尝试过的一件事是重建内核,将选项“运行时注册的 8250/16550 串行端口数”设置为 8,而不是 4。但我遇到了完全相同的问题,/dev 中只枚举了 4 个串行端口。
答案1
我意识到在构建内核后我运行了错误的内核。启动内核时,我看到所有 8 个 /dev/ttyS* 设备。看来 SERIAL_8250_RUNTIME_UARTS = 8 成功了。
它只在紧急模式下启动,但我认为这是因为我在构建过程中收到了关于在模块安装步骤中未设置区域设置的警告,这在 Centos wiki 上没有描述...我会问另一个与此相关的问题。