我正在尝试使用QEMU引导内核(从固件中提取)。
Qemu仿真似乎始于0x0
。
问题是从0x0
到0x04000000
的内存仅填充0
。
我如何调试引导加载程序?
答案 0 :(得分:0)
您没有说命令行是什么。 QEMU开始执行的地址取决于很多事情:
但是,通常,您不应该期望能够从固件转储中为一件Arm硬件提取随机内核映像并在QEMU下运行它。这是因为每个Arm板或机器都不相同-RAM可能位于不同的位置,诸如串行端口之类的设备位于不同的地址,依此类推-并且内核将仅在已将其编译为的系统上引导。支持。 (a)QEMU对固件转储所针对的硬件没有特定的仿真,并且(b)固件的内核尚未构建为也可以在任何以下类型的主板上运行,这样的机会非常高QEMU确实支持。因此,几乎可以肯定的是,它会在启动时很早就崩溃,而不会产生任何输出。
如果您想调试早期启动时发生的情况,最好的方法可能是使用QEMU内置的gdbstub,并在其上附加一个可了解访客架构的gdb。您可能还可以通过'-d'选项找到QEMU的内部日志记录,尽管它需要一定程度的熟悉QEMU的工作方式才能理解输出。