1 ubi文件系统的制作
1.1 测试项目的文件目录结构如下
其中diag.img和diag.ubifs是生成的产物。
ubinize.cfg的内容如下
[ubifs]
mode=ubi
image=diag.ubifs
vol_id=0
vol_size=9216KiB
vol_type=dynamic
vol_name=diag
vol_alignment=1
vol_flags=autoresize
ubi_source_dir是待制作的ubi 镜像的原始文件。
1.2 使用如下命令制作出diag.ubifs
mkfs.ubifs –F -q -r ubi_source_dir -m 2048 -e 126976 -c 71 -o diag.ubifs
我们使用的nand flash是 page size: 2k block size: 64 page
block_size: 2k * 1024 * 64 = 131,072
-F: 使能“white-space-fixup”,如果是通过u-boot烧写需要使能此功能
-r: 待制作的文件系统目录
-m: 最小输入输出大小,一般为page_size, 当前spinand的page_size为2048byte
-e: LEB size 逻辑可擦除块大小,block_size - (2*page_size) = 128k - 4k = 126976 2 * 1024 * 62 = 126976 62个page size
-c: 文件系统所占用的最大block数,一般小于等于(block_count - 1)。
目前有如下两种方式,我已经验证的是方式一,所以这里写-c 71
方式一:131072 * (71 + 1) = 9,437,184
方式二:LEB = 9216 * 1024 / 126976 - 4 = 70.322
1.3 使用如下命令制作出最终可以烧录的diag.img
ubinize -o diag.img -m 2048 -p 128KiB ubinize.cfg
-p: block size
-m: spi nand flash的最小读写单元,一般为page_size
-o:输出的diag.img文件
ubinize.cfg: 为ubinize所需的配置文件,内容如上