linux – 如何在QEMU源代码中添加新设备?
使用QOM方法在qemu中模拟/添加新设备的步骤方法是什么?
DeviceState / BusState和其他属性的变化是什么以及在哪里? 解决方法
edu in-tree教育PCI设备
> https://github.com/qemu/qemu/blob/v2.7.0/hw/misc/edu.c 它很容易理解和记录良好,所以我建议你研究它. 它暴露了最小的PCI设备,具有基本IO,中断生成和DMA. 我已经编写了一个最小的Linux内核模块userland测试来使用它: > https://github.com/cirosantilli/linux-kernel-module-cheat/blob/6788a577c394a2fc512d8f3df0806d84dc09f355/rootfs_overlay/pci.sh 最小的PCI设备 我将edu最小化到QEMU前叉的四分之一:https://github.com/cirosantilli/qemu/blob/22e7e210d6fbe54c35a5ae32450a4419df25a13b/hw/misc/lkmc_pci_min.c无DMA. 内核驱动程序:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/1cd55ebf53542208f7a614a856066123b93d303d/kernel_module/pci_min.c 我的Buildroot包装器已经将QEMU fork与子模块集成,只需克隆和./run. ARM平台设备TYPE_SYS_BUS_DEVICE SoC-land烘焙芯片中的大多数器件而不是PCI,这是一个最小的可运行示例: > QEMU分叉: >设备https://github.com/cirosantilli/qemu/blob/144ea94d710c666babd06ed733007377e132ed4a/hw/misc/lkmc_platform_device.c > kernel module:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/05fa0105eaccf37d6a675f9b2bae833fd78d4270/kernel_module/platform_device.c在探测器上写入内存以测试出来,这也会生成一个IRQ. >通知内核寄存器和IRQ所在的位置,并匹配QEMU的versatilepb.c中的参数. 带有DTC修改的Linux fork是Buildroot包装器repo的子模块,所以只需克隆和./run -a arm. 树外设备 我问是否可以在How to create out-of-tree QEMU devices?制作树外设备,但它看起来不像. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |