u-boot引导内核启动问题Verifying Checksum ... Bad Data CRC


大家好,这几天把刚刚移植好的u-boot用来下载内核然后运行,我是用tftp下载的,运行的时候出了问题。
以下给出问题:
Dennis Yang > tftp 0x32000000 uImage     
TFTP from server 192.168.1.249; our IP address is 192.168.1.17
Filename 'uImage'.
Load address: 0x32000000
Loading: #################################################################
 #################################################################
 #################################################################
 #################################################################
 ##################################################
done
Bytes transferred = 1582349 (18250d hex)
Dennis Yang > bootm 0x32000000
## Booting image at 32000000 ...
   Image Name:   Linux-2.6.25
   Created:      2009-04-29   7:17:59 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1587800 Bytes =  1.5 MB
   Load Address: 30008000
   Entry Point:  30008000
    Verifying Checksum ... Bad Data CRC

我的环境参数信息如下:
Dennis Yang > printenv
bootargs=noinitrd root=/dev/mtdblock2 console=ttySAC0 rootfstype=jffs2
bootcmd=nand read.jffs2 0x32000000 0x80000 0x180000; bootm 0x32000000
bootdelay=3
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
stdin=serial
stdout=serial
stderr=serial
filesize=18250d
fileaddr=32000000
netmask=255.255.255.0
ipaddr=192.168.1.17
serverip=192.168.1.249

Environment size: 335/65532 bytes

我实在是没辙了,请大家帮忙看看!

14 个解决方案

#1


引用楼主 yasewang1985 的帖子:
Bytes transferred = 1582349 (18250d hex) 

bootcmd=nand read.jffs2 0x32000000 0x80000 0x180000; bootm 0x32000000 


从上面来看,貌似你编译的核心太大了(0x18250d) ...

你能不能说说 bootcmd 后面带的命令行参数具体的意思是...

#2


猜测,有坏块或地址长度不够,把0x180000改大些

#3


那些命令都是自启动的,如果手动启动就不会执行那些了

#4


你的内核实际大小(18250d )超过了你bootcmd所指定的0x180000,uboot只会去读0x180000个字节到内存中开始运行,当然校验失败了,把bootcmd改大一点吧

#5


4楼正解~

#6


对,是四楼说的那样,启动时读取到内存的image不是全部。

#7


楼主没用bootcmd来启动啊,直接用的bootm,应该不会是这个问题吧

#8


bootcmd=nand read.jffs2 0x32000000 0x80000 0x180000; bootm 0x32000000
0x32000000是nand flash的地址怎能bootm 0x32000000 ,应该bootm 0x80000。

#9


出现这个错误,应该就是烧到盒子里的kernel不对了。或者是文件本身坏了,或者是4楼说的,没有烧写完全。你可以先把空间放大,试试的。

#10


七楼的说法是不正确的,

#11



## Booting image at 32000000 ...
  Image Name: Linux-2.6.25
  Created: 2009-04-29 7:17:59 UTC
  Image Type: ARM Linux Kernel Image (uncompressed)
  Data Size: 1587800 Bytes = 1.5 MB
  Load Address: 30008000
  Entry Point: 30008000
按我的理解是Image放在0x32000000,而你在制作Image时的参数为0x30008000,你在tftp下载uIamge至0x30008000,再bootm 0x30008000试试

#12


Bytes transferred = 1582349 (18250d hex)
Data Size: 1587800 Bytes
1587800 - 1582349 !=0 
你的uImage在传输中丢了数据。

tftp 0x32000000 uImage   传至内存0x32000000
bootm 0x32000000 从内存启动
这两步跟u-boot 中的环境变量没关系。

Load Address: 30008000
 Entry Point: 30008000
加载点和入口点和上面内存也无必然联系

#13


我的板子最近也出问题了,无论是从nor flash还是nandflash启动,用ping命令和tftp时会出现checksum bad,(nor flash的u-boot是出厂自带我从来更改过)
 大家说说是什么问题?怎么解决?

#14


12楼的回答应该是对的
关注微信公众号

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com