分类: 嵌入式
2012-11-12 11:51:46
1、 在内核中添加对ubifs文件系统的支持
在MTD选项中进入UBI配置选项
在file system中配置ubifs,如下
配置完成后重新编译内核生成uImage,上电加载启动内核,可以看到/proc/filesystem已经有了ubifs的选项
2、 修改arch/arm/mach-davinci/board-da850-evm.c文件中nandflash分区
点击(此处)折叠或打开
3、 在u-boot中添加ubifs支持,编辑include/configs/da850evm.h文件
在
点击(此处)折叠或打开
这里u-boot分区尽量与内核划分的分区一致。
4、 使用工具测试ubi
把生成的arm版mtd工具复制到nfs文件夹
通过ubiattch把mtd5作为ubi0
注意这些信息,接下来创建ubifs镜像时要一一对应
通过ubimkvol创建ubi卷ubi0_0,名称为rootfs
./ubimkvol /dev/ubi0 -N rootfs -s 48MiB
通过卷名mount:
mount –t ubifs ubi0:rootfs /tmp
或者通过卷序号mount:
mount –t ubifs ubi0_0 /tmp
mount 成功后系统的信息:
6、生成ubifs镜像
mk.ubifs -r /root/targetfs -m 2048 -e 126976 -c 230 -o /tftpboot/ubifs.img
-r 参数指定输入的源文件夹名称
-m 参数指定页大小(min-io-size)
这个可以通过./ ubiattch输出信息看出
-e 参数指定逻辑擦除块大小(leb-size)
./ ubiattch输出信息 UBI:logical eraseblock size: 126976bytes
-c 参数指定逻辑擦除块数量(max-leb-cnt)
UBI:total number of reserved 257.一共有257块,选取230个,这个参数比较随意,不要太小,也不要超过总块数
从u-boot启动
擦除建立ubifs分区并下载镜像
nand erase.part ubifs
ubi part ubifs 2048
ubi create rootfs
tftp 0xc1180000 ubifs.img
ubi write 0xc1180000 rootfs 0x1000000
setenv bootargs console=ttyS0,115200n8 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs init=/linuxrc rw
启动系统成功界面
备注:
ubi分区一定不能有坏块,因为ubi write命令不坏检测坏块并跳过,有坏块的话经常会导致ubi无法启动。内核的ubifs为48M,u-boot的为32M,这样是能成功的,尝试过内核对应u-boot的32M,出错ubi分区过小,呃。。。。。再看
参考资料:
http://blog.csdn.net/yx_l128125/article/details/7478042
mcuzone的MAN3010A_CH