我在为Linux开发串行应用程序,mips。我正在运行QEMU,里面有Linux for mips,希望使用所有可用的串行端口。根据QEMU文档,它最多只支持4个串行端口,为了使用它们,我必须将“-serial”选项添加到QEMU run命令中,以便使用任何其他端口。
然而,当qemu启动时,看起来只有ttyS0和ttyS1可以实际使用。当我向ttyS2写入数据时,我被卡住了,而到ttyS3时,我得到了:“标准输出:输入/输出错误”。
在/dev/下有ttyS2和ttyS3 FDs。
当我执行"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和0。当我试图用sty命令将BR改为ttyS2时,什么都没有发生。
有谁能帮我弄明白我缺了什么来激活ttyS2和ttyS3吗?
最佳答案
这一点文档相当误导人,因为它是在我们真正只有x86 PC仿真时写回的。实际情况是,QEMU支持许多串行端口的板仿真,最多达到4。所以这取决于你使用MIPS板的实际最大串口数是多少。实验上,这里的答案似乎是“3”。。。
(特别是如果您没有运行x86客户机,那么给您正在使用的QEMU命令行总是很重要的,因为非x86系统彼此之间以及同一客户机体系结构中的不同板之间可能有很大的差异。x86是所有机器几乎完全相同的唯一一个例外。)