【发布时间】:2020-04-08 11:45:53
【问题描述】:
我有一个基于 QorIQ (P2041) 处理器的物联网设备固件。我有 uBoot、内核和 initrd ramdisk。无论我用qemu-system-ppc 做什么,我都无法让它工作。我怀疑qemu-system-ppc 不支持 QorIQ 处理器。无论如何我可以在 Qemu 或任何其他模拟器中加载和启动这个固件吗?
【问题讨论】:
标签: qemu u-boot powerpc firmware
我有一个基于 QorIQ (P2041) 处理器的物联网设备固件。我有 uBoot、内核和 initrd ramdisk。无论我用qemu-system-ppc 做什么,我都无法让它工作。我怀疑qemu-system-ppc 不支持 QorIQ 处理器。无论如何我可以在 Qemu 或任何其他模拟器中加载和启动这个固件吗?
【问题讨论】:
标签: qemu u-boot powerpc firmware
U-Boot 有配置文件 qemu-ppce500_defconfig。您应该能够使用命令运行使用此配置构建的 U-Boot
qemu-system-ppc -nographic -bios u-boot -M ppce500
CPU可以通过-cpu参数指定为e500mc。
要运行您的内核,它需要模拟机器提供的硬件驱动程序,例如 E1000 网卡和 NS16550 控制台。
使用 U-Boot 的 fdt 命令获取模拟机中可用设备的概览。
【讨论】:
固件二进制文件通常与构建它们运行的硬件密切相关——它们对可用的硬件、可以在内存中的哪些地址等做出假设。您需要使用与您要求 QEMU 模拟的硬件相对应的固件 blob。由于 QEMU 不会模拟您的随机物联网设备,因此您需要使用与 QEMU 实际拥有的硬件相匹配的 u-boot(例如 Xypron 的回答中所建议的)。
一旦您启动了固件,您可能仍然会发现内核存在完全相同的问题——它是为在一个硬件上运行而构建的,而您正试图在不同的硬件上运行它,而这根本行不通。
【讨论】: