ARM板子启动出现:crc error-- System halted

2019-07-12 21:05发布

 

ARM板子启动出现:crc error-- System halted

分类: u-boot/驱动开发 Linux 图像处理/去噪/增强 2135人阅读 评论(1) 收藏 举报 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哈哈~   以前在做嵌入式开发的时候,有的板子在内核启动初期不稳定,在自解压时就出错情形如下:
  1. Starting kernel ...
  2. Uncompressing Linux........................................................................................................................
  3. crc error
  1. Starting kernel ... Uncompressing Linux............... incomplete literal tree
在uboot下测试内存都没有什么问题,但是一上内核就死在自解压上。
最后究其原因是内存问题:    (1)内存与CPU见的走线设计不好。    (2)CPU不支持ODT或者DDR2内存芯片没有ODT,且硬件设计没有加匹配电阻。    (3)在硬件不稳的情况下,内存频率配置过高。    (4)超频使用
  以上的问题都可以通过降频尝试解决。但是如果是硬件设计问题,改善走线才是最终解决方法。有ODT支持的话,尽量开启,可以减少信号反射,保持信号完整性。    有些内存控制器的配置比较复杂,需要板级相关的参数,比如Ti8168芯片