我有 5 个不同的串行设备,它们连接到 Debian Striking 计算机上的物理串行端口,并且内部应该转发到 QEMU 机器。qemu 内部是 QNX 6.5.0 系统,所以我不确定是否可以使用 virtio-seral 驱动程序或类似的解决方案。
Linux 标准对 4 个串口的限制通过以下方式解决:
/etc/default/grub: 8250.nr_uarts=8
所以现在我遇到的唯一问题是 QEMU 最大串行端口 = 4。
可以通过重新编译qemu来解决这个问题吗?还有其他解决方案吗?
答案1
重新编译似乎适用于所有 8 个端口。
1)linux主机限制通过以下方式解决:/etc/default/grub: 8250.nr_uarts=8 ... update grub
2)qemu限制通过以下方式解决:
git clone git://git.qemu-project.org/qemu.git; cd qemu
include/sysemu/sysemu.h: changing MAX_SERIAL_PORTS 4->8
hw/char/serial-isa.c: adding 4 values to each of 2 arrays:
isa_serial_io [MAX_SERIAL_PORTS] = {0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x5f8, 0x4f8, 0x5e8, 0x4e8}
isa_serial_irq[MAX_SERIAL_PORTS] = {4,3,4,3,4,3,4,3}
...
./configure --target-list=x86_64-softmmu
make; sudo make install
3) qnx-guest 限制通过运行解决:devc-ser8250 5f8,4 4f8,3 5e8,4 4e8,3
笔记:
sudo apt-get install libpixman-1-dev
是唯一缺少的依赖项- 初始
make
时间约为 10 分钟 - 随机选择的 io 地址和 irqs 并尝试了哪些工作(没有真正了解原因,一些 io/irq 组合工作,一些不工作)