免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 14850 | 回复: 18
打印 上一主题 下一主题

[求助]Verifying Checksum ... Bad Data CRC [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-08 09:57 |只看该作者 |倒序浏览
请问一下.

我使用的是CPU 8695 Kernel= 2.6.17.8

我把编译好的内核和文件系统使用
mkimage -A arm -O linux -T multi -C none -a 0x8000 -e 0x8000 -n "Kernel-Ramdisk-Image" -d zImage:Ramdisk mImage
命令生成了一个mImage文件,

我使用tftp 0xA00000 mImage 到版主中后.

bootm 0xA00000

   Image Name:   Kernel-Ramdisk-Image
   Image Type:   ARM Linux Multi-File Image (uncompressed)
   Data Size:    2093015 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Contents:
   Image 0:   946956 Bytes = 924.8 kB
   Image 1:  1146047 Bytes =  1.1 MB
   Verifying Checksum ... OK

这样就可以起来了.

但是我通过起来后的系统进板子的串口,使用
flash_erase /dev/mtd1
cp mImage /dev/mtdblock1

重启后就不能启动了.在U-BOOT校验时就出现错误了.

   Image Name:   Kernel-Ramdisk-Image
   Image Type:   ARM Linux Multi-File Image (uncompressed)
   Data Size:    2093015 Bytes =  2 MB
   Load Address: 00008000
   Entry Point:  00008000
   Contents:
   Image 0:   946956 Bytes = 924.8 kB
   Image 1:  1146047 Bytes =  1.1 MB
   Verifying Checksum ... Bad Data CRC

难道是u-boot和内核写文件的方式不同.

论坛徽章:
0
2 [报告]
发表于 2008-09-08 14:48 |只看该作者
大家都很少使用U-BOOT吗?
还是没有遇到过这种问题呢?

论坛徽章:
0
3 [报告]
发表于 2008-09-08 15:03 |只看该作者
sbc2410=>tftp 0x30008000 zImage.img
sbc2410=>nand erase 0x30000 0x1d0000
sbc2410=>nand write 0x30008000 0x30000 0x1d0000

论坛徽章:
0
4 [报告]
发表于 2008-09-08 15:13 |只看该作者
原帖由 sep 于 2008-9-8 15:03 发表
sbc2410=>tftp 0x30008000 zImage.img
sbc2410=>nand erase 0x30000 0x1d0000
sbc2410=>nand write 0x30008000 0x30000 0x1d0000



0x30008000不是RAM区域吗?你写到那里是想干什么?
就算是Nand区域,这个地址是哪里呀?你有这么大的Nand(768MB)?

论坛徽章:
0
5 [报告]
发表于 2008-09-08 15:30 |只看该作者
我是在内核中写就会出现错误,
通过U-BOOT tftp是可以正常启动的....

论坛徽章:
0
6 [报告]
发表于 2008-09-08 16:13 |只看该作者
原帖由 rodgerluo 于 2008-9-8 15:13 发表



0x30008000不是RAM区域吗?你写到那里是想干什么?
就算是Nand区域,这个地址是哪里呀?你有这么大的Nand(768MB)?

具体看http://blog.chinaunix.net/u/25764/showart_1011879.html
0x30008000的确是RAM区域
nand erase 0x30000 0x1d0000 是将0x30000(这个是你flash上kernel分区的首地址)开始、大小为0x1d0000(这个是kernel分区大小)擦除
nand write 0x30008000 0x30000 0x1d0000是将内存地址0x30008000开始、大小为0x1d0000的内容拷贝到flash地址0x30000
这样说,你明白吗?

评分

参与人数 1可用积分 +15 收起 理由
bitmilong + 15 鼓励下

查看全部评分

论坛徽章:
0
7 [报告]
发表于 2008-09-08 16:25 |只看该作者
原帖由 cltnet 于 2008-9-8 15:30 发表
我是在内核中写就会出现错误,
通过U-BOOT tftp是可以正常启动的....

所以我叫你不要进入系统copy啊,copy文件系统好像是可以
在uboot命令行下copy

论坛徽章:
0
8 [报告]
发表于 2008-09-08 17:05 |只看该作者
原帖由 sep 于 2008-9-8 16:25 发表

所以我叫你不要进入系统copy啊,copy文件系统好像是可以
在uboot命令行下copy




是啊,在uboot下我copy后系统是正常启动的.并且也可以断电重启.

现在我是想在系统中先用flash_erase擦除.在copy进分区里面保存.

但是现在我在系统中就不行了.

在uboot下面是正常的读写,保存了的.

论坛徽章:
0
9 [报告]
发表于 2008-09-08 17:13 |只看该作者
原帖由 cltnet 于 2008-9-8 17:05 发表




是啊,在uboot下我copy后系统是正常启动的.并且也可以断电重启.

现在我是想在系统中先用flash_erase擦除.在copy进分区里面保存.

但是现在我在系统中就不行了.

在uboot下面是正常的读写,保存了的.

我明白你意思了
这样吧,你mount -o loop /dev/mtdblock1 /mnt,然后cp mImage /mnt,看看行不?

论坛徽章:
0
10 [报告]
发表于 2008-09-09 10:10 |只看该作者
原帖由 sep 于 2008-9-8 17:13 发表

我明白你意思了
这样吧,你mount -o loop /dev/mtdblock1 /mnt,然后cp mImage /mnt,看看行不?



也不行.

我在想flash空间是划分够了的.那会是什么错误呢?

会不会是uboot copy时使用的二进制或是ASCII与在系统中copy不一样造成的呢?

我想除了这点原因我暂时还想不到其他的原因了...

有什么不同呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP