Chinaunix首页 | 论坛 | 博客
  • 博客访问: 569321
  • 博文数量: 114
  • 博客积分: 1620
  • 博客等级: 上尉
  • 技术积分: 1104
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-30 09:16
文章分类

全部博文(114)

文章存档

2016年(1)

2015年(2)

2014年(4)

2013年(9)

2012年(20)

2011年(78)

分类: LINUX

2012-02-08 20:19:39

由于项目开发中要使用到ubifs文件系统,现对开发中的技术经验作一个总结。
    ubifs是新一代的flash文件系统,其设计以及性能都优越于YAFFS2,特别是工作在大页MLC NAND FLASH上面,同时读写速度也比
yaffs2高出很多,ubifs文件系统的写入速度约为1.66M/s,读出速度约为2.27M/s.同时 ubhifs系统的高压缩率也为生产安装提高效率。
如alpha600文件系统的yaffs2镜像为440M,而ubifs镜像只有206M.

测试ubifs写入速度命令:
    time dd if=/dev/zero of=/tmp/ubifs1/zero100M  bs=1M count=100;time sync
测试ubifs读出速度命令:
    time cp ubifs1/zero100M /dev/null;time sync

    从以上的测试结论得出,ubifs优秀的读写速度,在系统启动,文件存储时间大大减少,ubifs在alpha600上应用时,开机时间由原来的
30多秒下降到20S,当然非法关机对ubifs来说,其启动时间也不会增加。。好了,现在言归正转,该说我们如何使用ubifs文件系统了。
具体步骤如下

1.配置ubi and ubifs ()
   配置内核支持UBIFS
     Device Drivers  --->Memory Technology Device (MTD) support  --->UBI - Unsorted block images  --->Enable UBI
   配置mtd支持UBI接口
       File systems  --->Miscellaneous filesystems  --->UBIFS file system support
   


2.manual attach/detach ubi to mtd (手动设置/取消 ubi和mtd分区的关联)
  ./ubiattach /dev/ubi_ctrl -m mtdnumber
  ./ubidetaach /dev/ubi_ctrl -m mtdnumber
 


3.manual create ubi volume (设定volume 大小(不是固定值,可以用工具改变)及名称 )
  ./ubimkvol /dev/ubi_device_number -s size -N name
  like:
  ./ubimkvol /dev/ubi0 -s 300MiB -N ubifs1

4.mount ubifs volume  (挂分区)
  mount -t ubifs ubi0:ubifs1 /tmp/ubifs1
 
5.ubi node and ubi_ctrl node (查看ubi和ubi_ctrl主节点信息)
#cat /sys/class/misc/ubi_ctrl/dev
10:63
加入/dev下没有ubi_ctrl,则我们可以sudo mknod ubi_ctrl c 10 63创建一个端点

#./ubiattach /dev/ubi_ctrl -m 6
#cat /sys/class/ubi/ubi0/dev
252:0
当我们attach ubi0 to mtd6后,如果/dev下没有ubi0,则创建一个,sudo mknod ubi0 c 252 0


6 .使用mkfs.ubifs命令制作出ubifs格式的镜像:

$./mkfs.ubifs -r mx31-rootfs-alpha1.0.6-20090520/ -m 2048 -e 126976 -c 7979 -o rootfs-ubi.img

参数说明:-r 文件系统目录;
     -m NandFlash的页大小;
     -e 逻辑操作块的大小; 
     -c 最大逻辑操作的块数;
     -o 使用在目标镜像文件


使用ubinize命令生产实际可用空间的ubi格式镜像,这样才可以通过ubiformat命令在板子上写入该文件系统镜像:

$./ubinize -o rootfs.img -m 2048 -p 128KiB ubinize-rootfs.cfg 

参数说明:-o 最终生成的ubi格式镜像;
     -m 页大小;
     -p 物理块大小 ; 
     ubinize-rootfs.cfg是配置文件配置文件内容如下:

[ubifs]
mode=ubi
image=rootfs-ubi.img
vol_id=0
vol_size=950MiB
vol_type=dynamic
vol_name=rootfs
vol_alignment=1
vol_flag=autoresize

说明: 
        image=rootfs-ubi.img:由mkfs.ubifs生成的镜像
        vol_size=950MiB:写入镜像可使用的分区总共大小
        vol_name=rootfs:挂载时使用的名称(rootfs请不要修改,因为在redboot的启动参数里写定了是这个启动信息)

所需要的工具,看
原文附件源代码.

Reference: http://blog.chinaunix.net/u3/104807/showart_2092905.html
阅读(1962) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~