【发布时间】:2022-11-01 19:29:15
【问题描述】:
我想在 qemu 7.1.0 版中创建一个虚拟树莓派机器。然后我想在虚拟树莓派客户系统和我的主机系统之间共享数据。查看 qemu 文档,我思考Inter-VM Shared Memory Device 是我想要的。
我已经按照here 的说明进行操作,因此以下命令允许我正确启动树莓派虚拟机:
qemu-system-aarch64 -M raspi3b -display none -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1" -dtb ./dtbs/bcm2710-rpi-3-b-plus.dtb -sd raspios.qcow -kernel kernel8.img -m 1G -smp 4 -serial mon:stdio -usb -device usb-mouse -device usb-kbd -device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22
到目前为止,一切都很好。现在,当我将以下标志添加到上面的命令中以包含 Ivshmem 设备时,如下所示:
-object memory-backend-file,size=1M,share=on,mem-path=/dev/shm/ivshmem,id=hostmem -device ivshmem-plain,memdev=hostme
我收到以下错误:
-device ivshmem-plain,memdev=hostmem: No 'PCI' bus found for device 'ivshmem-plain'
显然arm设备没有PCI总线。但是根据this article,有人确实在基于 ARM 的设备上成功使用了 ivshmem 设备多才多艺的pb系统。顺便说一句,那篇文章看起来与我在我的系统上尝试做的完全一样,但它似乎也很旧,如果我尝试逐字遵循命令,我会左右遇到问题和错误。
是否可以使用 ivshmem inter-vm 共享内存设备在我的主机 x86_64 系统和来宾树莓派 3b 嵌入式板之间设置共享内存区域?
如果可能,那么我怀疑这只是找到正确标志的问题。
我对嵌入式系统非常陌生,并且 qemu 文档密集且庞大,我不确定这是否是正确的方向。
我正在尝试连接这两个系统,因为我希望我的主机系统上的程序能够向虚拟树莓派的 gpio 引脚发送输入和接收输出。任何帮助和/或其他方法将不胜感激。
【问题讨论】:
标签: linux virtualization qemu gpio robotics