运行我的启动时qemu错误

时间:2017-07-10 21:52:08

标签: arm boot qemu bootloader

我写了一个简短的启动代码并试图用Qemu运行它:

  

qemu-system-arm.exe -M versatilepb -cpu cortex-a9 -kernel boot.bin

我希望代码加载到地址0x8400000,但qemu返回错误

  

尝试在0x84000000处执行RAM或ROM外部的代码   这通常意味着发生以下情况之一:

     

(1)你告诉QEMU为错误的机器类型执行内核,它在启动时崩溃(例如尝试在versatilepb QEMU机器上运行raspberry pi内核)   (2)你根本没给QEMU一个内核或BIOS文件名,QEMU执行了一个充满无操作指令的ROM,直到它结束了   (3)你的客户内核有一个错误,并且跳入无处崩溃

     

这几乎总是前两个中的一个,因此请检查命令行,并确保为此计算机使用正确类型的内核。   如果您认为可能有选项(3),那么您可以尝试使用-d调试选项调试guest虚拟机;特别是-d guest_errors将导致日志包含此时guest虚拟机寄存器状态的转储。

     

执行无法继续;在这里停下来。

所以我猜我的代码还没有开始运行,因为它没有加载到正确的位置

我错了什么?

由于

1 个答案:

答案 0 :(得分:0)

你说“我希望代码加载到地址0x8400000”,但是QEMU的错误信息显示“0x84000000”,这是一个不同的数字(它有一个额外的0)。这表明您的链接描述文件或创建boot.bin文件的任何内容都有拼写错误。 (我假设boot.bin是一个ELF文件,QEMU加载到ELF文件指定的地址,因为否则它将被加载到RAM中,假设它是一个能够自我重定位的Linux内核映像。)< / p>