在 QEMU 中运行 MLO 文件
Posted
技术标签:
【中文标题】在 QEMU 中运行 MLO 文件【英文标题】:Run MLO Files in QEMU 【发布时间】:2020-01-07 23:52:49 【问题描述】:我有一个 ARMv7 Cortex-A8 芯片,带有一个 TI AM335x 嵌入式芯片(我的芯片非常接近 Beaglebone Black 控制器)。我编译了整个系统堆栈,从MLO
文件开始,到u-boot
,到Linux 内核zImage
,再到Linux 用户空间以及应该在我的控制器上运行的程序。但是,对于特定的分析案例,我可能需要在 QEMU 中模拟我的控制器的架构和系统堆栈。在我研究大多数嵌入式设备的启动顺序时,顺序如下:MLO
-> u-boot
-> 内核 -> 用户空间 -> 等等。
当我开始模拟系统时,我从qemu-system-arm
开始(因为我使用的是 ARM 32 位设备,因此是 ARMv7),并通过了以下机器类型(因为这是唯一可用的 Cortex-A8 设备在 QEMU 中):realview-pb-a8
,以及以下 CPU:cortex-a8
。我还使用-bios
参数加载了我编译的u-boot.bin
。但是,除了Guest has not initialized the display (yet)
之外,VGA 显示器上没有显示任何内容,串行 IO 上也没有显示任何内容。我的直觉告诉我,我必须在 u-boot
文件之前加载 MLO,但如果可能的话,我该怎么做?
【问题讨论】:
【参考方案1】:您不能在另一种 Arm 嵌入式板上运行为一种 Arm 嵌入式板构建的低级程序(如 u-boot 或内核)。 realview-pb-a8 是与 AM335x SoC 完全不同的硬件,客户代码在尝试对硬件执行任何操作时都会崩溃。
您需要在 QEMU 中有一个正确的硬件模型来运行这个软件,但是 QEMU 没有那个 SoC 的模型,所以恐怕你不能。
【讨论】:
嗯...所以我想我必须从源代码构建 QEMU,然后为我正在使用 CPU + RAM + 外围设备模拟的硬件添加条目以符合我的硬件规范。太糟糕了 QEMU 不支持开箱即用的 TI 机器,但至少我可以学习 QEMU API :)。以上是关于在 QEMU 中运行 MLO 文件的主要内容,如果未能解决你的问题,请参考以下文章
在linux下编译并以qemu user模式运行mips架构的文件
使用 QEMU 在 LEON3 处理器上运行 .elf 文件