分类:
u-boot/驱动开发
Linux
图像处理/去噪/增强 2012-12-01 16:34
2135人阅读
收藏
举报
NAND read: device 0 offset 0x40000, size 0x800000
Reading data from 0x83fe00 -- 100% complete.
8388608 bytes read: OK
Boot with zImage
Starting kernel ...
Uncompressing Linux...............................................................................................................................................................................................
crc error
-- System halted
******************************************************************
ARM板子启动出现如上错误,求解释。
在网上找到一个回答如下:
内核代码我没有修改过,怎么会出现这么个错误呢,这个问题苦闷了我很久。
后来看到一位网友的博客,给了我提示,是不是cpu的频率太高了呢。立马我就在uboot中把cpu的频率降到100MHz(以前是304MHz),这样重新编译后就好了。下载内核上去运行也不再有crc error了。很高兴。
我这边有几块一样的板子,有几块可以正常启动,有几块跑到上面的CRC就死掉了。
于是,将好的板子的Nand Flash和坏版进行调换,发现坏版是可以跑的很正常,说明
是我们某些板子在硬件的某个地方可能有所谓的"死角"。
仍在查找中。。。
最后发现是板子上面:
少贴了一个电阻。
O(∩_∩)O哈哈~
以前在做嵌入式开发的时候,有的板子在内核启动初期不稳定,在自解压时就出错情形如下:
- Starting kernel ...
- Uncompressing Linux........................................................................................................................
- crc error
-
Starting kernel ...
Uncompressing Linux...............
incomplete literal tree
在uboot下测试内存都没有什么问题,但是一上内核就死在自解压上。
最后究其原因是内存问题:
(1)内存与CPU见的走线设计不好。
(2)CPU不支持ODT或者DDR2内存芯片没有ODT,且硬件设计没有加匹配电阻。
(3)在硬件不稳的情况下,内存频率配置过高。
(4)超频使用
以上的问题都可以通过降频尝试解决。但是如果是硬件设计问题,改善走线才是最终解决方法。有ODT支持的话,尽量开启,可以减少信号反射,保持信号完整性。
有些内存控制器的配置比较复杂,需要板级相关的参数,比如Ti8168芯片