Attempt to write error length data

来源:互联网 发布:鬼脚七为什么离开淘宝 编辑:程序博客网 时间:2024/06/06 21:02

1 实验环境

    Host:Ubuntu14.04(64bit)

    Target:Mini2440

    U-Boot:u-boot-2010.03-tekkaman

2 错误描述

    使用下述命令下载根文件系统到Nand Flash时出错:

nand write.yaffs 0x30008000 0x560000 0x400000

    错误如下所示:


3 问题分析

    根据参考资料[1]的说明,这是由于上述size参数不对所导致的(size必须满足特定规则),参考资料[2]将size取为0xdbb040时,可以成功下载;参考资料[3]将size取值为0x3b22c00,也可以成功下载(我都验证过,确实是可以的)。

    通过上述分析可以得出结论,必须要将size取一个满足特定条件的值才可以避免上述错误。那么,size应该满足什么条件呢?

    根据参考资料[1]的提示,在uboot源码中找到错误提示的位置:


     参考资料[1]分析道:对于128M的NAND Flash来说,nand->oobsize = 64,nand->writesize = 2048,所以写入NAND Flash的数据应该是2112(=2048 + 64)字节的整数倍。

4 问题解决    

    虽然我的开发的Nand Flash是256MB的,但是使用2112的倍数大小的size时,确实可以成功,如0x3c6cc00


参考资料

[1]ARM9之家论坛 -> U-boot交流区 -> nand_write: Attempt to write not page aligned data

[2]u-boot烧写yaffs2文件系统 

[3]u-boot烧写yaffs2文件系统

0 0