UBIFS文件系统(二)
一、引言
上一节,我们通过《UBIFS文件系统(一)》了解了UBIFS文件系统的定义,以及分析了UBIFS文件系统结构中比较常见inode结构,如superblock、master node、innode node、data node等。通常生成了UBIFS文件系统之后,会制作UBI镜像文件,通过镜像文件与MTD关联、绑定,最后才能正常挂载文件系统。
为了管理架构栈中的各个子系统,ubi在用户态导出多个控制接口,以便于对模型进行控制管理。
- /dev/mtd0:
- mtd对象,对mtd设备操作的实体
- /dev/ubi_ctrl:
- ubi控制对象,用于ubi与mtd的映射与解映射(attach and detach)
- /dev/ubi0:
- ubi 抽象层对象,对ubi操作的实体
- /dev/ubi0_0:
- ubi volume对象,对ubi volume操作的实体
根据官方文档《ubifs.pdf》的说法,UBI是UBIFS的一个子系统,其位于MTD之上,UBIFS之下,如下图所示:

根据官方文档《ubifs.pdf》的说法,UBI卷与MTD设备的对比如下所示:

二、准备工作
使用上一节结束的rootfs.ubifs文件系统为基础。
1、UBI镜像文件生成
将rootfs.ubifs文件系统打包为镜像文件:
ubinize -o ubi.img -m 512 -O 512 -p 128KiB ubinize.cfg
常用参数说明:
序号 | 参数 | 说明 |
1 | -o ubi.img | 输出的根文件系统镜像文件为ubi.img |
2 | -m 512 | Nand Flash的最小读写单元,这里设置为512字节 |
3 | -O 512 | 卷标识符头(VID header)在物理擦除块(PEB)的偏移,这里设置为512字节 |
4 | -p 128KiB | 物理擦除块(PEB)的大小,这里设置为128KB |
5 | ubinize.cfg | ubi镜像配置文件 |
其中ubinize.cfg配置文件的内容如下所示:
[ubifs]
mode=ubi
image=./rootfs.ubifs
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
2、挂载UBIFS文件系统
以下我们来回忆一下,如何挂载的过程:
- 模拟创建一个大小合适的闪存设备;
- 启动ubi驱动,并关联/dev/mtd0;
- 格式化/dev/mtd0,并写入ubi.img镜像文件;
- 关联mtd0与ubi_ctrl;
- 挂载ubi0到/mnt/ubi目录。
命令如下所示,可以参考《mount命令技巧之巧解文件系统》:
modprobe nandsim first_id_byte=0x2c second_id_byte=0xda third_id_byte=0x00 fourth_id_byte=0x15
modprobe ubi mtd=0
ubiformat /dev/mtd0 -s 2048 -f ubi.img
ubiattach /dev/ubi_ctrl -m 0 -O 2048
mkdir /mnt/ubi
mount -t ubifs ubi0 /mnt/ubi
三、UBI镜像文件结构分析
上述所示的ubi.img就是UBI镜像文件,通过官方文档《ubidesign.pdf》可以详细了解UBI镜像的结构,它包含的头Erase count header、Volume identifier header的内容都是大端序存储,下面我们来着重看一下。
1、Erase count header
Erase count header(以下简称EC头)记录了物理擦除块(PEB)的擦写次数。
使用hexdump查看16进制数据:
00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00000010 00 00 02 00 00 00 04 00 08 77 f6 02 00 00 00 00 |.........w......|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 5d 01 09 1e |............]...|
00000040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000200
根据源码的定义(struct ubi_ec_hdr),可知结构:
序号 | 偏移 | 说明 |
1 | 0x00-0x03 | EC头标志,字符串UBI# |
2 | 0x04 | 版本,值为1 |
3 | 0x05-0x07 | padding1,值为0 |
4 | 0x08-0x0F | 此擦除块的擦除个数(ec),值为0 |
5 | 0x10-0x13 | 卷头偏移(vid_hdr_offset),值为0x200 |
6 | 0x14-0x17 | 数据偏移,值为0x400 |
7 | 0x18-0x1B | 镜像序号(image_seq),值为0x0877f602 |
8 | 0x1C-0x3B | padding2,值为0 |
9 | 0x3C-0x3F | EC头CRC,值为0x5D01091E |
最后以0xFF填充对齐。
2、Volume identifier header
Volume identifier header(以下简称VID头)记录了此物理擦除块(PEB)包含的卷标号、逻辑擦除块(LEB)号。
使用hexdump查看16进制数据:
00000200 55 42 49 21 01 01 00 05 7f ff ef ff 00 00 00 00 |UBI!............|
00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000230 00 00 00 00 00 00 00 00 00 00 00 00 b8 25 64 a8 |.............%d.|
00000240 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00000400
通过分析源码(struct ubi_vid_hdr),并结合文件,分析结构如下:
序号 | 偏移 | 说明 |
1 | 0x200-0x203 | VID头标志,字符串UBI! |
2 | 0x204 | 版本,值为1 |
3 | 0x205 | 卷类型(vol_type),值为1 |
4 | 0x206 | 此LEB是否从其他PEB拷贝(copy_flag),值为0 |
5 | 0x207 | 卷适应性(compat),值为0x200 |
6 | 0x208-0x20B | 卷编号(vol_id),值为0x7fffefff |
7 | 0x20C-0x20F | LEB编号(lnum),值为0 |
8 | 0x210-0x213 | LEB版本(leb_ver),值为0 |
9 | 0x214-0x217 | 数据大小(data_size),值为0 |
10 | 0x218-0x21B | 此卷中使用的LEB总数(used_ebs),值为0 |
11 | 0x21C-0x21F | 此PEB末尾有多少字节未使用(data_pad),值为0 |
12 | 0x220-0x223 | LEB中数据的CRC(data_crc),值为0 |
13 | 0x224-0x227 | padding2,值为0 |
14 | 0x228-0x22F | 序号(sqnum),值为0 |
15 | 0x230-0x23B | padding3,值为0 |
16 | 0x23C-0x23F | VID头的CRC(hdr_crc),值为0xb82564a8 |
最后以0xFF填充对齐。
3、a record in the volume table
a record in the volume table(以下简称vtbl)记录了卷表的1条记录。
使用hexdump查看16进制数据:
00000400 00 00 00 0e 00 00 00 01 00 00 00 00 01 00 00 06 |................|
00000410 72 6f 6f 74 66 73 00 00 00 00 00 00 00 00 00 00 |rootfs..........|
00000420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000490 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000004a0 00 00 00 00 00 00 00 00 88 3c 63 e5 00 00 00 00 |.........<c.....|
000004b0
根据源码的定义(struct ubi_vtbl_record),可知结构:
序号 | 偏移 | 说明 |
1 | 0x400-0x403 | 为此卷保留了多少物理块(reserved_pebs),值为0x0e |
2 | 0x404-0x407 | 卷对齐,值为1 |
3 | 0x408-0x40B | 在每个物理过程结束时,有多少字节未使用的PEB以满足所请求的对齐(data_pad),值为0 |
4 | 0x40C | 卷类型(vol_type),值为1 |
5 | 0x40D | 如果卷更新已启动但未完成(upd_marker),值为0 |
6 | 0x40E-0x40F | 卷名称长度(name_len),值为6 |
7 | 0x410-0x48F | 卷名称(name),字符串为rootfs |
8 | 0x490 | 卷标识(flags),值为1 |
9 | 0x491-0x4A7 | padding,值为0 |
10 | 0x4A8-0x4AB | 此记录的CRC,值为0x883c63e5 |
4、数据内容部分
通过检索可以发现数据内容的关键部分在以下区段(共计0x20000字节,128KB),其中第3部分为何要加入大量的填充,还未研究透彻。
序号 | 偏移 | 说明 |
1 | 0x180000-0x1801FF | EC header |
2 | 0x180200-0x1803FF | VID header |
3 | 0x180400-0x182BFF | 填充0xFF? |
4 | 0x182C00-0x1832BB | UBIFS文件系统的部分node内容 |
5 | 0x1832BC-0x1833FF | 填充0x00,UBIFS文件系统对齐 |
6 | 0x183400-0x19FFFF | 填充0xFF,对齐 |
使用hexdump查看数据
00180000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00180010 00 00 02 00 00 00 04 00 08 77 f6 02 00 00 00 00 |.........w......|
00180020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00180030 00 00 00 00 00 00 00 00 00 00 00 00 5d 01 09 1e |............]...|
00180040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00180200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 0a |UBI!............|
00180210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00180230 00 00 00 00 00 00 00 00 00 00 00 00 f3 0a ac 29 |...............)|
00180240 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
00182c00 31 18 10 06 42 0a 25 cb 03 00 00 00 00 00 00 00 |1...B.%.........|
00182c10 ab 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00 |........A.......|
00182c20 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 |................|
00182c30 0b 00 00 00 00 00 00 00 49 11 f7 62 00 00 00 00 |........I..b....|
00182c40 47 11 f7 62 00 00 00 00 47 11 f7 62 00 00 00 00 |G..b....G..b....|
00182c50 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00182c60 e9 03 00 00 e9 03 00 00 ff a1 00 00 01 00 00 00 |................|
00182c70 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00182c80 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
00182c90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00182ca0 30 30 31 2f 30 30 32 2e 74 78 74 ff ff ff ff ff |001/002.txt.....|
00182cb0 31 18 10 06 e7 03 5a 56 04 00 00 00 00 00 00 00 |1.....ZV........|
00182cc0 41 00 00 00 02 00 00 00 01 00 00 00 2d 68 f9 57 |A...........-h.W|
00182cd0 00 00 00 00 00 00 00 00 41 00 00 00 00 00 00 00 |........A.......|
00182ce0 00 02 08 00 00 00 00 00 30 30 32 2e 6c 69 6e 6b |........002.link|
00182cf0 00 ff ff ff ff ff ff ff 31 18 10 06 78 e5 c1 c1 |........1...x...|
00182d00 06 00 00 00 00 00 00 00 38 00 00 00 01 00 00 00 |........8.......|
00182d10 42 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 |B...... ........|
00182d20 08 00 00 00 00 00 00 00 74 65 73 74 30 30 35 0a |........test005.|
00182d30 31 18 10 06 59 8a c3 d3 07 00 00 00 00 00 00 00 |1...Y...........|
00182d40 a0 00 00 00 00 00 00 00 42 00 00 00 00 00 00 00 |........B.......|
00182d50 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 |................|
00182d60 08 00 00 00 00 00 00 00 c4 13 f7 62 00 00 00 00 |...........b....|
00182d70 91 11 f7 62 00 00 00 00 91 11 f7 62 00 00 00 00 |...b.......b....|
00182d80 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00182d90 e9 03 00 00 e9 03 00 00 b4 81 00 00 01 00 00 00 |................|
00182da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00182db0 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
00182dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00182dd0 31 18 10 06 ee c5 ac 35 08 00 00 00 00 00 00 00 |1......5........|
00182de0 40 00 00 00 02 00 00 00 01 00 00 00 c8 c6 ec 59 |@..............Y|
00182df0 00 00 00 00 00 00 00 00 42 00 00 00 00 00 00 00 |........B.......|
00182e00 00 00 07 00 00 00 00 00 30 30 35 2e 74 78 74 00 |........005.txt.|
00182e10 31 18 10 06 0b fc 1d 6c 0b 00 00 00 00 00 00 00 |1......l........|
00182e20 38 00 00 00 01 00 00 00 44 00 00 00 00 00 00 20 |8.......D...... |
00182e30 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................|
00182e40 74 65 73 74 30 30 34 0a 31 18 10 06 c1 99 82 e2 |test004.1.......|
00182e50 0c 00 00 00 00 00 00 00 a0 00 00 00 00 00 00 00 |................|
00182e60 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |D...............|
00182e70 0a 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 |................|
00182e80 c4 13 f7 62 00 00 00 00 7a 11 f7 62 00 00 00 00 |...b....z..b....|
00182e90 7a 11 f7 62 00 00 00 00 00 00 00 00 00 00 00 00 |z..b............|
00182ea0 00 00 00 00 01 00 00 00 e9 03 00 00 e9 03 00 00 |................|
00182eb0 b4 81 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
00182ec0 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00182ed0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00182ee0 00 00 00 00 00 00 00 00 31 18 10 06 b1 e2 f2 a9 |........1.......|
00182ef0 0d 00 00 00 00 00 00 00 40 00 00 00 02 00 00 00 |........@.......|
00182f00 43 00 00 00 18 75 c5 59 00 00 00 00 00 00 00 00 |C....u.Y........|
00182f10 44 00 00 00 00 00 00 00 00 00 07 00 00 00 00 00 |D...............|
00182f20 30 30 34 2e 74 78 74 00 31 18 10 06 14 7e 41 15 |004.txt.1....~A.|
00182f30 0e 00 00 00 00 00 00 00 a0 00 00 00 00 00 00 00 |................|
00182f40 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |C...............|
00182f50 09 00 00 00 00 00 00 00 e0 00 00 00 00 00 00 00 |................|
00182f60 7b 11 f7 62 00 00 00 00 7a 11 f7 62 00 00 00 00 |{..b....z..b....|
00182f70 7a 11 f7 62 00 00 00 00 00 00 00 00 00 00 00 00 |z..b............|
00182f80 00 00 00 00 02 00 00 00 e9 03 00 00 e9 03 00 00 |................|
00182f90 fd 41 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |.A..............|
00182fa0 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00182fb0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00182fc0 00 00 00 00 00 00 00 00 31 18 10 06 a1 c4 96 26 |........1......&|
00182fd0 0f 00 00 00 00 00 00 00 3c 00 00 00 02 00 00 00 |........<.......|
00182fe0 01 00 00 00 35 38 11 40 00 00 00 00 00 00 00 00 |....58.@........|
00182ff0 43 00 00 00 00 00 00 00 00 01 03 00 00 00 00 00 |C...............|
00183000 30 30 33 00 ff ff ff ff 31 18 10 06 a7 1b 31 64 |003.....1.....1d|
00183010 12 00 00 00 00 00 00 00 38 00 00 00 01 00 00 00 |........8.......|
00183020 46 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 |F...... ........|
00183030 08 00 00 00 00 00 00 00 74 65 73 74 30 30 32 0a |........test002.|
00183040 31 18 10 06 47 85 6b 9b 13 00 00 00 00 00 00 00 |1...G.k.........|
00183050 a0 00 00 00 00 00 00 00 46 00 00 00 00 00 00 00 |........F.......|
00183060 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 |................|
00183070 08 00 00 00 00 00 00 00 c4 13 f7 62 00 00 00 00 |...........b....|
00183080 3c 11 f7 62 00 00 00 00 22 11 f7 62 00 00 00 00 |<..b...."..b....|
00183090 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|
001830a0 e9 03 00 00 e9 03 00 00 b4 81 00 00 01 00 00 00 |................|
001830b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
001830c0 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
001830d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
001830e0 31 18 10 06 b9 32 7a 8e 14 00 00 00 00 00 00 00 |1....2z.........|
001830f0 40 00 00 00 02 00 00 00 45 00 00 00 b8 d1 76 59 |@.......E.....vY|
00183100 00 00 00 00 00 00 00 00 46 00 00 00 00 00 00 00 |........F.......|
00183110 00 00 07 00 00 00 00 00 30 30 32 2e 74 78 74 00 |........002.txt.|
00183120 31 18 10 06 41 f8 91 2f 15 00 00 00 00 00 00 00 |1...A../........|
00183130 a0 00 00 00 00 00 00 00 45 00 00 00 00 00 00 00 |........E.......|
00183140 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 |................|
00183150 e0 00 00 00 00 00 00 00 42 11 f7 62 00 00 00 00 |........B..b....|
00183160 3c 11 f7 62 00 00 00 00 3c 11 f7 62 00 00 00 00 |<..b....<..b....|
00183170 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 |................|
00183180 e9 03 00 00 e9 03 00 00 fd 41 00 00 01 00 00 00 |.........A......|
00183190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
001831a0 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
001831b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
001831c0 31 18 10 06 d4 d1 c3 df 16 00 00 00 00 00 00 00 |1...............|
001831d0 3c 00 00 00 02 00 00 00 01 00 00 00 d5 36 11 40 |<............6.@|
001831e0 00 00 00 00 00 00 00 00 45 00 00 00 00 00 00 00 |........E.......|
001831f0 00 01 03 00 00 00 00 00 30 30 31 00 ff ff ff ff |........001.....|
00183200 31 18 10 06 92 4a 20 c8 17 00 00 00 00 00 00 00 |1....J .........|
00183210 a0 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
00183220 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................|
00183230 a8 01 00 00 00 00 00 00 91 11 f7 62 00 00 00 00 |...........b....|
00183240 91 11 f7 62 00 00 00 00 91 11 f7 62 00 00 00 00 |...b.......b....|
00183250 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 |................|
00183260 e9 03 00 00 e9 03 00 00 fd 41 00 00 01 00 00 00 |.........A......|
00183270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00183280 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
00183290 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
001832a0 31 18 10 06 36 6f 6c a4 00 00 00 00 00 00 00 00 |1...6ol.........|
001832b0 1c 00 00 00 05 00 00 00 44 01 00 00 00 00 00 00 |........D.......|
001832c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00183400 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
*
001a0000
通过分析源码(struct ubifs_ch),并结合文件,分析结构如下:
序号 | 偏移 | 说明 |
1 | 0x00182C00-0x00182C03 | ubifs_ch头标志,值0x06101831 |
2 | 0x00182C04-0x00182C07 | 头的CRC,值为0xCB250A42 |
3 | 0x00182C08-0x00182C0F | 序号(sqnum),值为3 |
4 | 0x00182C10-0x00182C13 | 数据段的长度(len),值为0xAB |
5 | 0x00182C14-0x00182C17 | 数据段的类型(node_type),值为0x0 |
6 | 0x00182C08-0x00182C0B | 数据段的组类型(group_type),值为0x41 |
7 | 0x00182C0C-0x00182C0D | 填充,值为0 |
还有一些结构ubifs_ino_node、ubifs_data_node等,可以参考源码。
5、整体结构
整个ubi.img文件包含UBI标志的结构如下:
$ hexdump -C ubi.img |grep UBI
00000000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00000200 55 42 49 21 01 01 00 05 7f ff ef ff 00 00 00 00 |UBI!............|
00020000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00020200 55 42 49 21 01 01 00 05 7f ff ef ff 00 00 00 01 |UBI!............|
00040000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00040200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 00 |UBI!............|
00060000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00060200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 01 |UBI!............|
00080000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00080200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 02 |UBI!............|
000a0000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
000a0200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 03 |UBI!............|
000c0000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
000c0200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 04 |UBI!............|
000e0000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
000e0200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 05 |UBI!............|
00100000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00100200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 06 |UBI!............|
00120000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00120200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 07 |UBI!............|
00140000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00140200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 08 |UBI!............|
00160000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00160200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 09 |UBI!............|
00180000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
00180200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 0a |UBI!............|
001a0000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
001a0200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 0b |UBI!............|
001c0000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
001c0200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 0c |UBI!............|
001e0000 55 42 49 23 01 00 00 00 00 00 00 00 00 00 00 00 |UBI#............|
001e0200 55 42 49 21 01 01 00 00 00 00 00 00 00 00 00 0d |UBI!............|
参考文档: