Chinaunix首页 | 论坛 | 博客
  • 博客访问: 413343
  • 博文数量: 75
  • 博客积分: 2020
  • 博客等级: 大尉
  • 技术积分: 663
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-04 16:56
文章分类

全部博文(75)

文章存档

2010年(10)

2009年(65)

分类:

2009-12-14 00:14:48

由于项目开发中要使用到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的启动参数里写定了是这个启动信息)

所需要的工具,看附件源代码
阅读(2385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~