如何调试Bootloader Qemu ARM?

问题描述 投票:0回答:1

我正在尝试使用QEMU启动内核(从固件中提取)。

Qemu仿真似乎从0x0开始。

问题是从0x00x04000000的记忆只有0

我该如何调试bootloader?

arm qemu bootloader low-level
1个回答
0
投票

你没有说出你的命令行是什么。 QEMU开始执行的地址取决于很多方面:

  • 来宾CPU架构
  • 你正在模仿哪种板模型
  • 你是否通过QEMU BIOS图像文件
  • 传递给-kernel的任何文件的文件格式(ELF,普通内核映像,uImage等)

但是,一般情况下,您不应期望能够从一个Arm硬件的固件转储中提取随机内核映像并在QEMU下运行它。这是因为每个Arm板或机器都不同 - RAM可能位于不同的位置,诸如串行端口的设备位于不同的地址,依此类推 - 内核只会在已编译到的系统上启动支持。 (a)QEMU没有对固件转储所用的硬件进行特定仿真,并且(b)固件内核尚未构建为也可以在任何类型的板上运行,这种可能性非常高。 QEMU确实支持。所以它几乎肯定会在启动时很早就崩溃而不会产生任何输出。

如果你想调试早期启动时发生的事情,最好的方法可能是使用QEMU内置的gdbstub,并将一个支持guest-architecture的gdb附加到它。您也可以通过'-d'选项找到QEMU的内部日志记录,但它需要熟悉QEMU如何理解输出。

© www.soinside.com 2019 - 2024. All rights reserved.