各位好!
最近有部分客户反馈一个kernel解压后没有起来,其具体情况为:
1、RTC部分按照disable RTC的管脚设置进行设计。
具体该部分引脚连接参考schematics checklist , http://processors.wiki.ti.com/index.php/AM335x_Schematic_Checklist#RTC
2. 使用SDK-06.00.00.00
问题表现是:
u-boot能够正常跑起来,而在引导kernel启动时,发现卡在kernel解压之后,如
Uncompressing Linux... done, booting the kerne
对于上述问题的分析及解决方法:
由于设置internal RTC disabled,而在kernel中没有取消register。
解决方法:
(1)需要在.config中注释掉以下设置:CONFIG_RTC_DRV_OMAP
具体实现,需要在menuconfig中的Device driversàReal Time Clock中去掉选中。
(2) 在HWMOD中取消RTC部分的注册
在linux源码的arch/arm/mach-omap2/omap-hwmod-33xx_data.c中进行修改:
在结构体中am33xx_hwmods[]
注释掉:
/* rtc class */
&am33xx_rtc_hwmod,
同时,对于此问题,还有其他原因也可导致,可以从如下方面分析:
(1)DDR是否稳定: 因为解压kernel会频率操作DDR,如果DDR不够稳定,会造成在解压时kernel的某些数据出错,从而导致无法启动kernel。
如DDR3,解决核对DDR3的相关配置参数,同时记得做SW leveling。
(2)其他原因:可以参考如下链接
http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux