1

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

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

我要移植到的平台确实有一个 LED,我可以用它来尝试确定它实际挂在哪里。问题是它很乱,我不知道 MMU 什么时候会打开,所以我不能可靠地访问端口。

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

4

3 回答 3

2

MMU 在内核引导程序 ( head.S )中打开,因此只需在此处添加一些 LED。有关 ARM Linux 上的引导顺序的概述,请参阅这个稍微过时的文件

于 2012-10-01T10:55:57.993 回答
1

在我看来,这里唯一真正的选择是 JTAG 调试探针。市场上有一些相对便宜的设备。

不确定您使用的是哪个 SoC 系列,但如果是 TI, Code Composer StudioXDS560系统跟踪器可能值得一试。

Pandaboard社区可能也是一个值得关注的好地方——这里的重点是低成本解决方案。

虽然这些都是 TI 的重点,但探头通常支持不同供应商的设备。

于 2012-10-01T08:51:26.693 回答
0

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

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

于 2017-09-16T11:05:28.433 回答