Warning - bad CRC, using default environment问题解决
2012-03-22 23:49
691 查看
环境: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作为附件给出, 希望可以给大家以参考.
现象:配置好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作为附件给出, 希望可以给大家以参考.
相关文章推荐
- 【已解决】*** Warning - bad CRC or NAND, using default environment
- Uboot中*** Warning - bad CRC or MMC, using default environment解决
- uboot: Warning - bad CRC or NAND, using default environment
- U-Boot移植(13)Warning - bad CRC or NAND, using default environment
- Warning - bad CRC, using default environment
- Warning - bad CRC, using default environment
- Warning - bad CRC or NAND, using default environment 错误的解决方案
- 烧写NAND Flash时出现错误:*** Warning - bad CRC or NAND, using default environment
- 烧写NAND Flash时出现错误:*** Warning - bad CRC or NAND, using default environment
- Warning - bad CRC, using default environment
- 编译器显示 warning: built-in function ‘memset’ [enabled by default]问题解决
- android开发的WARNING: Could not initialize OpenglES emulation, using software renderer问题的解决
- Python中关于“warning: Debugger speedups using cython not found”问题的解决
- 解决vagrant default: Warning: Connection timeout. Retrying...的问题
- command line warning #10006: ignoring unknown option '/NODEFAULTLIB'错误解决(XPDF编译时出现的问题)
- Pyharm中关于“warning: Debugger speedups using cython not found”问题的解决
- eclipse中WARNING: Default charset GBK not supported, using ISO-8859-1 instead的问题终极解决
- Python调用TensorFlow出现“Cannot evaluate tensor using `eval()`: No default session is registered”错误问题的解决
- 解决tomcat报的错“The JRE_HOME environment variable .......”问题
- 解决 [warn]_default_ VirtualHost overlap on port 80, the first has precedence 问题