在启动过程的早期调试内核

标签 debugging linux-kernel arm porting

我正在将 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/

相关文章:

c - 使用全局 C 变量的 IAR 内联汇编

调试 ARM Cortex-M4 中的硬故障

安卓 ARM 指令

ios - 无法在 iPhone 设备 Xcode 7.1 错误上启动调试服务器

node.js - 使用 Node 检查器进行调试 : Cannot GET/

java - 如何在 Eclipse Java 调试器中跟踪变量的值

css - 无效字符使声明无效时的意外 css 行为

c - 如何刷新 Linux 中地址空间区域的 CPU 缓存?

timer - Linux 内核定时器函数在什么上下文中运行?

c - 为什么 Android 2.6.29 中的 syscalls.h 文件中不存在 sys_mmap?