mini2440 uboot中大文件系统(大于内存大小)的烧写

我采购的mini2440 ,内存64M,flash 256M,而板子上提供的rootfs_qtopia_qt4有92M, 一般情况下,用原板提供的vivi是可以的。

用uboot烧写,可以通过tftp或者是u盘


1,在linux下将rootfs_qtopia_qt4.img分割

这里分割要特别注意,由于nand write.yaffs 是按照块大小写入的。所以分割文件也要以块为单位,

在linux下可以用split命令进行分割,

split  -b  0x3390000 rootfs_qtopia_qt4.img  rootfs_qtopia_qt4_

-b  要分割的文件平均大小

以上命令将产生 rootfs_qtopia_qt4_aa, rootfs_qtopia_qt4_ab两个文件,前一个文件大小为0x3390000,后一个则小于0x3390000

由于我的flash是每页2048字节+64字节OOB,一个块有128页, 所以0x3390000个字节相当于 (0x3390000 / (2048+64) / 128) = 200 块。


2,烧写

fatload usb 0 0x30008000 roofs_qtopia_qt4_aa 

nand write.yaffs 0x30008000 0x580000 0x3390000

这里也要特别注意下:write.yaffs会跳过第一个好的块(super block),上面的命令实际烧写会从0x5a0000开始(如果0x580000是好的块)

所以后面那条命令的烧写的起始地址可要注意了,要写成之前烧写的最后一个块,这样在写的时候跳过这个块,两个文件在flash上就连续了。

计算第二个块的起始地址要特别注意,假如第二个文件大小为两个块大小,0x84000, 那么起始地址可能是  0x5a0000+(0x84000/(2048+64)*2048)-0x20000,

在第一个文件的烧写过程中要注意跳过的坏块,必要时可以用nand dump 查看页,一般出现全部ff 的就是erase过的,不过为确保不出问题,还是多擦一次flash。


(yaffs以页为单位存文件)



你可能感兴趣的:(mini2440 uboot中大文件系统(大于内存大小)的烧写)