提问者:小点点

在Linux中启用串行端口ttyS2和ttyS3


我正在为Linux开发串行应用程序,mips。我在运行QEMU,并在其中运行Linux for mips,我想使用所有可用的串行端口。根据QEMU文档,它最多只支持4个串行端口,为了使用它们,我必须在QEMU run命令中添加"- serial "选项,以便使用我想使用的任何附加端口。

然而,当qemu启动时,看起来只有ttyS0和ttyS1可以实际使用。当我向ttyS2写入数据时,我被卡住了,而向ttyS3写入数据时:“标准输出:输入/输出错误”。

在/dev/下有ttyS2和ttyS3 FD。

当我是"dmesg|grep tty"命令时,我得到以下输出:

Kernel command line: root=/dev/sda clocksource=GIC console=ttyS0
console [ttyS0] disabled
serial8250.0: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
console [ttyS0] enabled
serial8250.0: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A
serial8250.0: ttyS2 at MMIO 0x1f000900 (irq = 20, base_baud = 230400) is a 16550A

如果您查看它,您可以看到ttyS3没有出现,ttyS2存在,但ttyS1之外的另一个baudRate

任何人都可以帮助我了解我缺少什么以激活 ttyS2 和 ttyS3?


共1个答案

匿名用户

这段文档很容易让人误解,因为它是在我们只有x86 PC仿真的时候写的。实际情况是QEMU支持电路板仿真的任意数量的串行端口,最多4个。因此,这取决于您使用的是哪种MIPS板,串行端口的实际最大数量是多少。根据实验,这里的答案似乎是“3”...

(特别是如果您没有运行x86客户机,给出您正在使用的QEMU命令行总是很重要的,因为非x86系统彼此之间以及同一客户机架构内的不同板之间可能有很大的不同。x86确实是所有机器几乎完全相同的一个特例。)