开机卡在start kernel...情况分析

本文记录了一次Linux4.4内核启动失败的详细排查过程,通过对比不同硬件环境、添加打印信息及利用early_printk进行内存泄漏检测,最终定位到不兼容DDR内存的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件描述

环境:Linux4.4的内核
从rk拉下来的代码,然后直接编译,烧录完以后停在了Start Kernel…然后进行原因分析.
在这里插入图片描述

分析

1 在板子上烧录安卓的固件,可以正常跑起来,初步排除硬件问题.

2 在另外项目的板子上烧录同样的固件,也可以跑起来,这就奇怪了,但是在我调试的板子上就是Start Kernel…

3 添加打印信息,确定跑到了kernel_entry(0, machid, r2);

(此时,陷入了迷茫了,开始查资料)
在网上看的很多都可以排除,然后提交readme,官方人员一直没有回复…

4 然后在uboot启动阶段暂停,打印系统信息.

4.1 内核中打开early_printk.

在这里插入图片描述
kernel --> make menuconfig --> Kernel hacking --> Memory Debugging --> Kernel memory leak detector
或者直接在config中添加
+CONFIG_DEBUG_KMEMLEAK=y
然后烧录内核,开机按热键Ctrl+c暂停自动启动.进入命令模式
执行命令md c10ce5cc
这个命令怎么来的呢?
kernel下查找grep __log_buf System.map得到这个值.
在这里插入图片描述
然后一直按回车.知道看到异常信息,或者按网上说的,直到全部为0为止.我这边的信息如下:

然后在一点一点的往上找,今天有点累了,明天继续分析.

结果分析

最终结果是换了一颗ddr,ddr不在官方支持列表里面。
(小声逼逼:各种换料,各种稀奇古怪的bug)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值