Warning - bad CRC, using default environment问题解决

转载 2012年03月22日 23:49:15
环境:RedHat 9.0+u-boot-1.1.2+cross-2.95.3
现象:配置好u-boot,在RAM里正常启动如下:
--------------------------------
U-Boot 1.1.2 (Aug 17 2006 - 14:07:56)
U-Boot code: 21F00000 -> 21F156CC  BSS: -> 21F198D0
RAM Configuration:
Bank #0: 20000000 32 MB
Flash:  8 MB
*** Warning - bad CRC, using default environment
In:    serial
Out:   serial
Err:   serial
U-boot>
--------------------------------
flash读写擦除均正常,当设置好环境变量,固化到flash之后,启动仍然如上,即总是提示“*** Warning - bad CRC, using default environment”。使用md查看环境变量所在63扇区,发现设置的环境变量仍然在。
问题解决:
通过分析u-boot的启动流程,调试代码,得知问题出在cpu/at91rm9200/start.S中。其中有一段代码:
--------------------
        ldr     r0, =_start
        ldr     r1, =0x0
        mov     r2, #16
copyex:
        subs    r2, r2, #1
        ldr     r3, [r0], #4
        str     r3, [r1], #4
        bne     copyex
--------------------
它的作用是把中断向量表从flash reload到RAM,以提高速度。但是它没有进行remap。故而使得u-boot启动之后无法寻找到环境变量所在的第63扇区。更改如下:
--------------------
if 0       
        ldr     r0, =_start
        ldr     r1, =0x0
        mov     r2, #16
copyex:
        subs    r2, r2, #1
        ldr     r3, [r0], #4
        str     r3, [r1], #4
        bne     copyex
endif
--------------------
即把此段代码注释掉。
【或者是在此段前面加上remap部分,不过如果加上remap,则需要把前面的设置svc部分的代码注释掉,否则在u-boot>reset时会进入异常状态。】
此解决方案对u-boot-1.1.1也有效。

===============================================================================

u-boot: Warning - bad CRC, using default environment 问题的处理
 关于 "Warning - bad CRC, using default environment" 启动问题的解决:
 原因是flash中环境变量区无数据, 所以读取后会报错, 用户通过save或是saveenv保存变量之后再次启动便不会有此提示了. 


这个问题网络上很多大侠都讲过了.


 但是自己的u-boot试了几遍还是不行, 调了一个晚上才发现是自己的flash驱动有些问题.


 我的flash驱动是照着AMD的修改的, 自己太懒了, 只是修改了命令字以及地址, 别的部分也没细看, 粗心害死人啊!


 AMD的flash用DQ5作为操作错误的判断, 而SST好像没有, 这便导致我的擦除操作总是错误, 因而参数写入错误! 其实在程序里


注释掉下面两行基本就好了
//  if (!chip && ((result&0xFFFF)&BIT_PROGRAM_ERROR))
//   chip = ERR;
 下面将改写的flash.c作为附件给出, 希望可以给大家以参考.


uboot - bad crc

先来看一张图 void sf_env_relocate_spec(void) { int ret; /* 初始化Spi Flash。应用在操作Spi Flash之...
  • leesagacious
  • leesagacious
  • 2016年08月15日 18:29
  • 1363

Warning - bad CRC, using default environment

原因是flash 扇区 或者是ERPROM 含有的环境变量 还从没被初始化。 使用了saveenv 命令 保存了环境变量后,这个报错消息就能消失了。...
  • commshare
  • commshare
  • 2011年04月30日 09:59
  • 2147

Warning - bad CRC, using default environment

U-Boot 1.1.6 (Jan 19 2015 - 15:14:53) Mindspeed 0.08.0 C300_V2 EVM ARM 550MHz, SPU 425MHz, BUS 150M...
  • q123456789098
  • q123456789098
  • 2015年10月30日 19:03
  • 1288

uboot: Warning - bad CRC or NAND, using default environment

when uboot start,dispaly following info: U-Boot 1.1.6 (Mar 19 2008 - 14:02:12) DRAM: 32 MB NAND: ...
  • Canbus
  • Canbus
  • 2012年02月11日 16:36
  • 2287

Uboot中*** Warning - bad CRC or MMC, using default environment解决

首先找到打印此信息的位置,搜索可知在/common/env_cmm.c文件中。 程序如下: #if !defined(ENV_IS_EMBEDDED) static void use_defau...
  • wshini7316
  • wshini7316
  • 2013年01月25日 17:28
  • 1779

Warning - bad CRC or NAND, using default environment 错误的解决方案

DRAM:  64 MB Flash:  1 MB NAND:  64 MiB *** Warning - bad CRC, using default environment 还存在警告,这个...
  • jimmy2013_1_1
  • jimmy2013_1_1
  • 2013年08月29日 09:24
  • 1806

Linux下设置u-boot环境变量简

编译fw_printenv工具 在你使用的uboot代码中用以下编译指令: make env 这样就可以编译tools/env下的代码,编译出的fw_printenv工具有读写ubo...
  • gl1987807
  • gl1987807
  • 2014年01月09日 17:38
  • 6005

Redis:安装、配置、操作和简单代码实例(C语言Client端)

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主...
  • educast
  • educast
  • 2014年06月28日 16:10
  • 1626

关于AM335X uboot启动的时候找不到nand的问题

关于AM335X uboot启动的时候找不到nand的问题 /******************************************************************...
  • luhao806
  • luhao806
  • 2013年04月01日 17:00
  • 3290

*** Warning - bad CRC or NAND, using default environment

when uboot start,dispaly following info: U-Boot 1.1.6 (Mar 19 2008 - 14:02:12) so google a...
  • gexueyuan
  • gexueyuan
  • 2012年04月25日 20:59
  • 866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Warning - bad CRC, using default environment问题解决
举报原因:
原因补充:

(最多只允许输入30个字)