我正在尝试使用QEMU引导内核(从固件中提取)。
Qemu模拟似乎是从0x0
开始的。
问题是从0x0
到0x04000000
的内存只填满了0
。
如何调试bootloader?
发布于 2019-03-01 04:00:13
你没有说你的命令行是什么。QEMU开始执行的地址取决于很多因素:
您正在为QEMU传递architecture
不过,一般来说,您不应该期望能够从一个Arm硬件的固件转储中随机拉出一个内核映像,并在QEMU下运行它。这是因为每个ARM板或机器都是不同的-- RAM可能在不同的位置,串口等设备在不同的地址,等等--内核只能在编译为支持的系统上引导。(a) QEMU没有固件转储所针对的硬件位的特定仿真,以及(b)固件中的内核未被构建为在QEMU支持的任何主板类型上运行的可能性很高。因此,几乎可以肯定的是,它只会在启动早期崩溃,而不会产生任何输出。
如果您想要调试早期启动过程中发生的事情,最好的方法可能是使用QEMU内置的gdbstub,并将一个支持来宾架构的gdb附加到它。您可能还会发现QEMU的内部日志记录通过'-d‘选项很有用,尽管它需要对QEMU的工作原理有一定的了解才能理解输出。
https://stackoverflow.com/questions/54928101
复制相似问题