如何调试Bootloader Qemu ARM?

时间:2019-02-28 14:37:21

标签: arm qemu bootloader low-level

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

Qemu仿真似乎始于0x0

问题是从0x00x04000000的内存仅填充0

我如何调试引导加载程序?

1 个答案:

答案 0 :(得分:0)

您没有说命令行是什么。 QEMU开始执行的地址取决于很多事情:

  • 来宾CPU架构
  • 您要仿真的板模型
  • 是否向QEMU传递了BIOS映像文件
  • 传递给-kernel的任何文件的文件格式(ELF,纯内核映像,uImage等)

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

如果您想调试早期启动时发生的情况,最好的方法可能是使用QEMU内置的gdbstub,并在其上附加一个可了解访客架构的gdb。您可能还可以通过'-d'选项找到QEMU的内部日志记录,尽管它需要一定程度的熟悉QEMU的工作方式才能理解输出。