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传入kernel的并读取的方法

希望朋友们多多指点,好的技术或心得一起分享:     uboot如何向kernel传递参数及kernel如何解析cmdline参数大家可以参考其他前辈的博文,这方面的讲解十分详尽。     在这里我总...

*** 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...

烧写NAND Flash时出现错误:*** Warning - bad CRC or NAND, using default environment

在对NAND Flash烧写了bootstrap和U-Boot之后,启动目标板,发现有如下显示的错误: U-Boot 2009.11-rc2 (Jun 15 2012 - 12:59:22) ...

解决vagrant default: Warning: Connection timeout. Retrying...的问题

今天需要在Windows下重装 virtualBox + vagrant 开发环境,装到后面一直提示连接不上,如图:出现了两个错误: 错误一:SSH is not running ...

【问题解决】warning MSB8012:TargetPath与Linker的OutputFile属性值不匹配

在vs下处理遗留项目时,经常需要升级解决方案。在解决方案升级过程中有时会遇到的warning MSB8012。本文是笔者遇到该问题后的一个小的总结记录。...
  • agassy
  • agassy
  • 2016年01月10日 18:41
  • 4079

VS2013 warning LNK4099:未找到 PDB“vc120.pdb”xxxx 问题解决方案

举例: “warning LNK4099: 未找到 PDB“vc120.pdb”(使用“sqlite3d.lib(sqlite3secure.obj)”或在“D:\test\Debug\vc120.p...
  • starytx
  • starytx
  • 2017年04月11日 14:36
  • 3264

PHP程序报错:Warning: Cannot modify header information - headers already sent的问题解决方法

今天把服务器的程序搬出来在本地运行测试,数据库连接好了,输入用户名密码点击登录后,页面返回一个错误提示,在login_check.php出现错误:Warning: session_start() [f...

VS2010 WCF 远程服务器返回了意外响应: (400) Bad Request等问题解决方案

1. wcf相关项目名称Service1.svc、IDataChangeTest.cs和DataChangeTest.cs(下面的专业名称可能不太准确)。 Service1.svc宿主,里面只关联接...
  • qyr20
  • qyr20
  • 2011年07月05日 14:14
  • 8361

关于spring-mvc中使用ajax调用后台接口出现400 bad request的问题解决方案

经过一段时间的学习。发现之前写的这篇博客 关于ajax 调用后台 出现400bad request  有很大问题。特地重新编辑。 先描述下我的问题: 前端代码: function test() {...

Browser JRE安全证书版本 Bad Version 问题解决

java.security.cert.CertificateParsingException: no more data allowed for version 1 certificate a...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Warning - bad CRC, using default environment问题解决
举报原因:
原因补充:

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