Linux 内核挂在“正在启动内核...”

she*_*lbc 7 boot embedded arm u-boot linux-kernel

我已成功在嵌入式设备上启用安全启动。问题是,当我以这种模式启动时,该过程似乎在该行之后卡住了:

Starting kernel ...

一旦 U-boot 将内核复制到内存中并发出bootm命令。

在调试器中,我能够捕捉到 PC 卡在一条yield指令上,然后是分配给pc = pc-4- 所以本质上是一个循环。

我以前从未在如此低的水平上提出过 linux,所以我不确定从哪里开始寻找。不过,我确实注意到,我能够在非安全模式下成功启动内核映像,因此这对供应商来说可能是一个更合适的问题。

1) 一般来说,在哪里可以找到有关执行切换阶段的 U-boot 诊断信息?

2)在什么时候执行完全交给内核?即 U-boot 何时失效?

小智 3

也许您可以使用以下过程转储 linux 早期打印的内存。原因可能是,内核正在启动,但在控制台初始化之前挂起。还将打印内容放入 uboot 的内核入口点,并确认控制权已移交给内核。

找到该System.map文件。使用以下命令来识别log_buf地址:

grep __log_buf System.map
Run Code Online (Sandbox Code Playgroud)

这将输出类似的内容

c0352d88 B __log_buf
Run Code Online (Sandbox Code Playgroud)

热启动开发板(RAM 中的内容不应被删除)。

在 Uboot 中转储 (c0352d88) 的内存__log_buf。它将转储内核控制台打印。这样您就可以确定确切的挂起发生在哪里。