ubifs烧写到nand flash中的几种方法
来源:互联网 发布:磁条卡读写软件 编辑:程序博客网 时间:2024/04/24 00:06
1. UBIFS文件系统镜像的制作过程
1.1 所需的工具制作UBIFS镜像所需的工具有mkfs.ubifs和ubinize,可以通过以下方式获取到此两个工具:
1. 方法一:从官网通过git工具下载源码,编译可得之,下载命令:
- git clone git://git.infradead.org/mtd-utils.git
下载到源码后,编译需要的的软件包有:uuid-dev和lzo,uuib-dev可以通过apt-get直接安装,lzo需要手动下载编译,官方网站为:http://www.oberhumer.com/opensource/lzo/download/
2. 方法二:安装mtd-utils工具包,安装命令为:
- sudo apt-get install mtd-utils
不过此方法不保证安装的工具可以正常使用(可能版本过低)。
1.2 UBIFS镜像的制作有了mkfs.ubifs和ubinize两个工具后,就可以制作UBIFS镜像了,具体步骤如下:
1. 使用mkfs.ubifs命令将某个文件夹制作为UBIFS镜像,具体命令为:
- mkfs.ubifs -r /tmp/rootfs-m 2048 -e 126976-c 992 -o ubifs.img
以上命令的含义为将/tmp/rootfs文件夹制作为UBIFS文件系统镜像,输出的镜像名为ubifs.img,-m参数指定了最小的I/O操作的大小,也就是NAND FLASH一个page的大小,-e参数指定了逻辑擦除快的大小,-c指定了最大的逻辑块号。
通过此命令制作的出的UBIFS文件系统镜像可在u-boot下使用ubi write命令烧写到NAND FLASH上。
2. 使用ubinize命令可将使用mkfs.ubifs命令制作的UBIFS文件系统镜像转换成可直接在FLASH上烧写的格式(带有UBI文件系统镜像卷标):
- ubinize -o ubi.img-m 2048 -p 128KiB-s 512 -O 2048 ubinize.cfg
ubinize.cfg为一些配置参数:
- [ubifs]
- mode=ubi
- image=ubifs.img
- vol_id=0
- vol_size=100MiB
- vol_type=dynamic
- vol_alignment=1
- vol_name=rootfs
- vol_flags=autoresize
通过此命令生成的ubi.img可直接使用NAND FLASH的烧写命令烧写到FLASH上。
2. UBIFS文件系统镜像的烧写以下主要说以下将UBIFS镜像烧写到NAND FLASH中的三种方法。
2.1 在u-boot下通过nand write命令烧写使用ubinize命令制作的带有卷标的UBIFS文件系统镜像可以直接使用nand flash的烧写命令烧写到NAND FLASH上,具体命令为:
- tftp 0xc1180000 ubi.img
- nand erase 0x400000 0x7c00000
- nand write.e 0xc1180000 0x400000 0x3660000
关于tftp,nand 等命令使用格式请参见u-boot的help。
2.2 在u-boot下通过ubi write命令烧写使用mkfs.ubifs命令制作的UBIFS文件系统镜像可以使用命令ubi write烧写到NAND FLASH上,具体命令为:
1. 设置FLASH的分区,此处以128M NAND FLASH为例,分为5个区:
- setenv mtdids nand0=nand0
- setenv mtdparts mtdparts=nand0:0x20000(u-boot env),0x20000(UBL),0x1c0000(u-boot),0x200000(kernel),0x7c00000(filesystem)
设置完后,使用mtdparts命令可以看到分区信息:
- device nand0 <nand0>, # parts= 5
- #: namesize offset mask_flags
- 0: u-boot env 0x00020000 0x00000000 0
- 1: UBL 0x00020000 0x00020000 0
- 2: u-boot 0x001c0000 0x00040000 0
- 3: kernel 0x00200000 0x00200000 0
- 4: filesystem 0x07c00000 0x00400000 0
- active partition: nand0,0- (u-boot env) 0x00020000 @ 0x00000000
2. 烧写文件系统:
- nand erase 0x400000 0x7c00000
- tftp 0xc1180000 ubifs.img
- ubi create rootfs
- ubi part nand filesystem
- ubi write 0xc1180000 rootfs 0x1d1000
通过以上命令,可以将文件系统烧写到第4个分区上,UBIFS文件系统卷标为rootfs。
3. 设置内核启动参数:
- setenv bootargs 'console=ttyS2,115200n8 ubi.mtd=4,2048 root=ubi0:rootfs rootwait rootfstype=ubifs rw ip=off'
这样就可以将烧写的UBIFS文件系统用作根分区了。
4. 要在u-boot下使用ubi,mtd等命令,需要配置一下u-boot,具体可参见:http://blog.csdn.net/longfeey/article/details/5881433
2.3 在linux系统下烧写在linux系统下,可以使用ubiformat工具烧写使用ubinize工具制作的UBIFS文件系统映像,此处以烧写到NAND FLASH的5个分区上为例,具体命令为:
1. 查看FLASH的当前分区:
- # cat /proc/mtd
- dev: size erasesizename
- mtd0: 00020000 00020000 "u-boot env"
- mtd1: 00020000 00020000 "UBL"
- mtd2: 00080000 00020000 "u-boot"
- mtd3: 00200000 00020000 "kernel"
- mtd4: 07c00000 00020000 "filesystem"
2. 擦除要烧写的分区:
- flash_eraseall /dev/mtd/mtd4
3. 烧写UBIFS文件系统:
- ubiformat /dev/mtd/mtd4-f /ubi.img
4. 挂载烧写好的文件系统:
- ubiattach /dev/ubi_ctrl-m 4 -O 2048
- mount -t ubifs ubi0:rootfs/mnt/
- flash_eraseall /dev/mtd/mtd4
- ubiattach /dev/ubi_ctrl-m 4 -O 2048
- ubimkvol /dev/ubi0-N rootfs -s 100MiB
- mount -t ubifs ubi0:rootfs/mnt/
原文参考:
http://www.linux-mtd.infradead.org/faq/ubifs.html
http://www.linux-mtd.infradead.org/faq/ubi.html
文章摘自:http://blog.chinaunix.net/uid-20729605-id-2386476.html
- ubifs烧写到nand flash中的几种方法
- ubifs烧写到nand flash中的几种方法
- ubifs烧写到nand flash中的几种方法
- ubifs烧写到nand flash中的几种方法(非常好)
- ubifs烧写到nand flash中的几种方法
- ubifs烧写到nand flash中的几种方法
- 基于Nand Flash的UBIFS多任务读写错误
- mini2440烧写到nand flash 的方法
- nand flash中的坏块
- arm 中的nor flash 和 nand flash
- NAND Flash控制器访问NAND Flash的方法
- NAND flash -三种
- Nand Flash 中的坏块(Bad Block)
- FLASH外部链接的几种方法
- 几种屏蔽 flash 右键的方法
- 总结调用Flash的几种方法
- 总结调用Flash的几种方法
- 总结调用Flash的几种方法
- cordys 的 ESB如果实现数据转换
- ostringstream的简单用法(用于一次文件内容全部读入)
- windows7安装oracle 10g安装过程及注意事项
- 内存操作GetMemory
- 创建型模式之工厂方法模式(日志记录器)
- ubifs烧写到nand flash中的几种方法
- Android动画学习笔记
- ccflow 删除附件bug&审核时节点字段数据丢失bug&递归查找签核人bug
- Linux内核源代码情景分析笔记---对照4.2.5内核 续
- MyBatis 缓存机制深度解剖 / 自定义二级缓存
- ZooKeeper-3.3.4集群安装配置
- solr乱七八糟总结,真的很乱
- Android之AlertDialog详解
- extjs简单左边树形菜单布局