Arm 如何在不修改主线源代码的情况下添加新的QEMU机器类型?

Arm 如何在不修改主线源代码的情况下添加新的QEMU机器类型?,arm,qemu,raspberry-pi,device-emulation,pandaboard,Arm,Qemu,Raspberry Pi,Device Emulation,Pandaboard,是否可以为qemu系统arm-M添加新的机器类型,而无需重新编译qemu或编写代码?有医生来做这个吗?我希望能够使用qemu模拟raspberry pi和Pandorn 我知道meego的qemu分支支持Pandorn,但我试图坚持主流qemu,我可以从apt get包管理器管理它。主流qemu现在支持beagleboard rev C和beagleboard xm,这两个版本以前仅在meego fork中支持 无需重新编译qemu或编写代码 不需要。必须有一些代码进行特定于设备的仿真,例如Ra

是否可以为
qemu系统arm-M
添加新的机器类型,而无需重新编译qemu或编写代码?有医生来做这个吗?我希望能够使用qemu模拟raspberry pi和Pandorn

我知道meego的qemu分支支持Pandorn,但我试图坚持主流qemu,我可以从apt get包管理器管理它。主流qemu现在支持beagleboard rev C和beagleboard xm,这两个版本以前仅在meego fork中支持

无需重新编译qemu或编写代码


不需要。必须有一些代码进行特定于设备的仿真,例如Raspberry Pi或Pandorn实现视频输出的方式。这不仅仅是几个配置文件的问题。

我已经能够用
-M versatilepb
模拟Pi:
-M raspi2
后来被添加到QEMU 2.6中

也许此功能可以实现,请参阅我添加新平台设备的经验:

在那里,我只需添加一行代码即可将新设备连接到versatilepb:

sysbus_create_simple("lkmc_platform_device", 0x101e9000, pic[18]);
因此,也许我们可以有一个包含以下类型行的配置文件:

type    name                  regid        irq
sysbus  lkmc_platform_device  0x101e9000   18

相关:树外设备:

谢谢。但是你知道关于这方面的任何文档/指南吗?我试图搜索代码,以找到处理beagleboard的方法,但还是迷路了。我希望我能看完raspberry Pi技术文档,并尝试找出一些解决方案。@Lorloh:好吧,归根结底就是要看目标系统的示意图,找出每个外围设备是如何连接的(即它在哪个内存区域结束)。此外,您还必须阅读有关外围设备的使用过的CPU文档。如果目标CPU已经存在于QEmu源中,那么您只需调整内存映射并为外部外设添加仿真。如果使用的CPU还没有出现,那么您还必须为所有内部外围设备添加仿真。顺便说一句,CPU意味着一个特定的芯片。当涉及到嵌入式系统时,它不仅仅是架构。@LordLoh.:PC系统或多或少都是标准化的。每件事都很相似。BIOS或UEFI始终位于同一地址,所有HDD控制器都使用ATA或AHCI,其行为或多或少相同。PCI总线始终映射到相同的内存区域。这就是为什么你可以在你的电脑里放一张带有操作系统的CD,然后安装。嵌入式系统OTOH非常具体。在运行操作系统内核之前,必须向其添加特定代码,使其在特定的板上运行。这称为板支持包(BSP)。基本上,您必须创建一个“反向”BSP。过了一段时间,我发现我不仅要模拟处理器(我相信它已经内置在qemu中),还要模拟板上的所有外围设备(很可能没有内置在qemu中)。感谢您的解释。如果您只需要一个Raspberry Pi仿真器,那么它已经存在了: