打包system.img成HIT archive data格式的包

有些人看了上一篇的解包过程后问到关于HIT archive data格式的打包方法,之前没有写打包的方法,现在附上。

其实方法没有解包那么麻烦。

如下:

1.  mkfs.ubifs -v -r /mnt/system/ -m 4096 -e 253952 -c 2048 -o syst.img

2.  du -h syst.img (查看大小,后面的tmp.cfg中的vol_size项用到)

3.  vi tmp.cfg

tmp.cfg的内容为:

[ubifs]
mode=ubi
image=syst.img
vol_id=0
vol_size=224MiB
vol_type=dynamic
vol_name=rootfs
vol_alignment=1
vol_flags=autoresize

4.  ubinize -o system.img -m 4096 -p 256KiB -s 1024 -O 4096 tmp.cfg

      system.img就是做成的HIT archive data格式的包了。

以上命令用到的参数的含义:

    -r:制定文件内容的位置 
    -m:页面大小 
    -e:逻辑擦除块大小 
    -p:物理擦除块大小 
    -c:最大的逻辑擦除块数量 
    -s:最小的硬件输入输出页面大小,如:k9f1208为256(上下半页访问)

在制作UBI镜像时,需要首先确定以下几个参数:
       MTD partition size; //对应的FLASH分区大小 
       flash physical eraseblock size; // FLASH物理擦除块大小 
       minimum flash input/output unit size; //最小的FLASH输入输出单元大小 
       for NAND flashes - sub-page size; //对于nand flash来说,子页大小 
       logical eraseblock size.//逻辑擦除块大小


参数可以由几种方式得到
1)如果使用的是2.6.30以后的内核,这些信息可以通过工具从内核获得,如:mtdinfo –u。


2)之前的内核可以通过以下方法:
   ● MTD partition size:从内核的分区表或cat /proc/mtd获得
       ● flash physical eraseblock size:从flash芯片手册中可以得到FLASH物理擦除块大小,或cat /proc/mtd
       ● minimum flash input/output unit size: 
           1)nor flash:通常是1个字节 
           2)nand falsh:一个页面 
       ● sub-page size:通过flash手册获得 
       ● logical eraseblock size:对于有子页的NAND FLASH来说,等于“物理擦除块大小-1页的大小”

3)也可以通过ubi和mtd连接时的产生的信息获取, 如:

           解包执行ubiattach /dev/ubi_ctrl -m 0 -O 4096命令时产生的信息

猜你喜欢

转载自ye-good-job.iteye.com/blog/2055569