在启动过程中很早就调试内核

时间:2012-10-01 06:47:44

标签: debugging linux-kernel arm porting

我正在将Linux内核移植到一个新平台,我在调试方面遇到了一些麻烦。

Uncompressing Linux... done, booting the kernel.打印到UART后内核似乎挂起。我已经启用了早期的printk,但它仍然没有打印任何新的东西,所以我假设它在启动过程中很早就挂了。

我正在移植的平台上有一个LED,我可以用它来确定它实际悬挂的位置。这个问题是它很乱,我不知道MMU什么时候打开,所以我无法可靠地访问端口。

还有其他方法可以尝试确定内核挂起的位置吗?

3 个答案:

答案 0 :(得分:2)

MMU在内核引导程序(head.S)中打开,所以只需在那里添加一些LED戳。有关ARM Linux上引导顺序的概述,请参阅this slightly outdated file

答案 1 :(得分:1)

听起来好像这里唯一真正的选择是JTAG调试探针。市场上有一些相对便宜的设备。

不确定您正在使用哪个SoC系列,但如果它是TI,Code Composer Studio和  XDS560系统跟踪器可能值得一试。

Pandaboard community可能也是一个值得关注的好地方 - 重点在于低成本解决方案。

虽然这些都是TI专注的,但探针通常支持不同供应商的设备。

答案 2 :(得分:0)

内核确实有一个EARLY_PRINTK配置。启用此选项将在启动标准控制台之前打印调试消息。

请注意,此选项取决于DEBUG_LL选项。