首页 > 解决方案 > qemu中的ARM At91 CPU启动

问题描述

ARM AT91 在 QEMU 中无法启动。我无法在控制台上打印任何内容。

我正在尝试使用 QEMU(git 提取的最新代码)来模拟 ARM AT91 板。但是当启动 QEMU 时,我在控制台中没有打印。据我了解,实现这一目标需要两个步骤:

1、用QEMU中的内存地址设置属性,让QEMU解压zImage。在这一步中,我将看到“Uncompressing Linux...done, booting the kernel”。

2、属性设置输出设备(如:uart0)。我将收到内核启动消息。

我已经成功启动了 ARM 多功能 PB,因为 QEMU 本身支持多功能 PB。通用PB 和AT91 之间的区别在于它们具有不同的SDRAM 地址。我试图修改loader_start为 0x20000000 但它似乎仍然不起作用。

hwaddr loader_start;//0x2000000, which is AT91 SDRAM address
memory_region_add_subregion(sysmem, 0x2000000, ram);

至少它应该 print Uncompressing Linux...done, booting the kernel.,这表明 zImage 已执行并解压缩。

标签: qemu

解决方案


QEMU(至少上游 QEMU)没有 AT91 SoC 的模型。这些系统与 QEMU 支持的通用 PB 之类的系统之间的差异不仅仅是“RAM 位于不同的地址”——它们将拥有各种不同的设备(包括 UART),它们的行为都不同,并且位于不同的位置。如果没有在 QEMU 中实现正确板的模型和至少一些 AT91 设备,就不可能运行用于 AT91 的裸机代码。所需的更改将比仅更改 RAM 基地址的几个地址要大得多。


推荐阅读