我正在将 Linux 内核移植到新平台,但在调试时遇到了一些麻烦。
内核似乎在 Uncompressing Linux... done, booting the kernel.
之后挂了打印到 UART。我已经启用了早期的 printk,但它仍然没有打印任何新的东西,所以我假设它在启动过程中很早就挂了。
我要移植到的平台确实有一个 LED,我可以用它来尝试确定它实际悬挂的位置。这样做的问题是它很乱,而且我不知道 MMU 何时会开启,因此我无法可靠地访问端口。
还有其他方法可以尝试查明内核卡在哪里吗?
最佳答案
MMU 在内核 bootstrap ( head.S ) 中打开,所以只需在那里添加一些 LED 指示灯。见 this slightly outdated file有关 ARM Linux 上启动顺序的概述。
关于在启动过程的早期调试内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668628/