【问题标题】:How to add new QEMU machine types without modifying the mainline source code?如何在不修改主线源代码的情况下添加新的 QEMU 机器类型?
【发布时间】:2012-10-09 12:19:44
【问题描述】:

是否可以为qemu-system-arm -M <MachineType> 添加新的机器类型而无需重新编译 qemu 或编写代码?有文档可以做到这一点吗?我希望能够使用 qemu 模拟 raspberry pipandaboard

我知道 meego 的 qemu 分支支持 pandaboard,但我试图坚持使用我可以从 apt-get 包管理器管理的主流 qemu。主流 qemu 现在支持以前仅在 meego fork 中支持的 beagleboard rev C 和 beagleboard xm。

【问题讨论】:

标签: arm qemu raspberry-pi device-emulation pandaboard


【解决方案1】:

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

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

【讨论】:

  • 谢谢。但是你碰巧知道这样做的任何文档/指南吗?我试图搜索代码以找到处理 beagleboard 的方式并迷路了。我希望我可以浏览树莓派技术文档并尝试找到一些解决方案。
  • @LordLoh:嗯,归结为获取目标系统的示意图,弄清楚每个外围设备是如何连接的(即它最终在哪个内存区域中)。您还必须阅读使用过的 CPU 文档,了解它的外围设备。如果目标 CPU 已经存在于 QEmu 源中,那么您只需调整内存映射并为外部外围设备添加仿真。如果使用的 CPU 还不存在,那么您还必须为所有内部外围设备添加仿真。 CPU 是指特定的芯片 BTW。就嵌入式系统而言,这不仅仅与架构有关。
  • @LordLoh.:PC 系统或多或少是标准化的。一切都非常相似。 BIOS 或 UEFI 始终位于同一地址,所有 HDD 控制器都使用 ATA 或 AHCI,并且行为或多或少相同。 PCI 总线总是映射到相同的内存区域。这就是为什么您可以将带有操作系统的 CD 放入您的 PC 中并安装它的原因。嵌入式系统OTOH非常具体。在您可以在其上运行操​​作系统内核之前,您必须向其中添加某些代码,使其在该特定板上运行。这称为板级支持包 (BSP)。本质上,您必须创建一个“逆”BSP。
  • 一段时间后我发现我不仅要模拟处理器(我相信它已经内置在 qemu 中),而且还要模拟板上的所有外围设备(很可能没有内置进入qem)。谢谢你的解释。
【解决方案2】:

我已经能够使用 -M versatilepb 模拟 Pi:https://raspberrypi.stackexchange.com/questions/165/emulation-on-a-linux-pc/53991#53991-M raspi2 后来被添加到 QEMU 2.6 中。

也许这个功能实现是可行的,看我添加新平台设备的经验:How to add a new device in QEMU source code?

在那里,我只需要添加一行即可将新设备附加到versatilepb

sysbus_create_simple("lkmc_platform_device", 0x101e9000, pic[18]);

所以也许我们可以有一个包含以下类型行的配置文件:

type    name                  regid        irq
sysbus  lkmc_platform_device  0x101e9000   18

相关:树外设备:How to create out-of-tree QEMU devices?

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 2018-12-12
    • 2012-07-01
    • 1970-01-01
    相关资源
    最近更新 更多