qemu - 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)没有 AT91 SoC 的模型。这些系统与 QEMU 支持的通用 PB 之类的系统之间的差异不仅仅是“RAM 位于不同的地址”——它们将拥有各种不同的设备(包括 UART),它们的行为都不同,并且位于不同的位置。如果没有在 QEMU 中实现正确板的模型和至少一些 AT91 设备,就不可能运行用于 AT91 的裸机代码。所需的更改将比仅更改 RAM 基地址的几个地址要大得多。
推荐阅读
- sql-server - 禁用 SA,创建新登录,将数据库角色成员更改为数据库所有者
- hl7-fhir - _include 在 hapi fhir 中
- sql - 如何在 SQL 中将 NOT IN 语句转换为 NOT EXISTS 语句?
- html - 无法在带有媒体查询的按钮上进行样式设置
- gcc - 编译程序并链接所有库和包含路径
- javascript - 如何使高 DPI 画布变得灵活?
- python - 在类中调用 str 方法
- android - Snackbar 在给定视图中找不到合适的父级
- java - Windows 10 更改 java 版本?
- python - 有没有办法通过python中的参数在列表中搜索对象?