rockchip vendor storage简介
rockchip vendor storage是一种用于存储SN, MAC, LAN, BT等数据的区域,它具有不会丢失和系统启动各个阶段都可以访问的特性。它使用GPT分区表格式,并在U-boot, kernel和用户空间中提供了相应的驱动文件和接口。
定义和特性
rockchip vendor storage是一种特殊的存储区域,用于存储一些设备相关的信息,比如序列号,MAC地址,蓝牙地址等。这些信息通常是在出厂时写入的,不会随着系统更新而改变。rockchip vendor storage的特点是:
- 不会丢失:即使系统出现异常或者被恢复出厂设置,vendor storage中的数据也不会被擦除或者覆盖。
- 可访问性:vendor storage中的数据可以在系统启动的各个阶段被访问,包括U-boot, kernel和用户空间。这样可以方便地获取或者设置一些设备相关的参数。
- 安全性:vendor storage中的数据是加密的,只有通过特定的接口才能读写。这样可以防止数据被篡改或者泄露。
存储数据结构
rockchip vendor storage使用GPT分区表格式来组织数据。GPT分区表是一种新型的分区表格式,它支持更大的磁盘容量,更多的分区数量,以及更好的兼容性和可靠性。GPT分区表由以下几个部分组成:
- MBR:主引导记录,位于磁盘的第一个扇区,用于兼容老式的BIOS启动方式。
- Primary GPT:主GPT头,位于磁盘的第二个扇区,包含了分区表的基本信息,比如磁盘标识符,分区数量,分区表起始和结束位置等。
- Partition entries:分区条目,位于主GPT头之后的若干个扇区,每个条目占用128字节,包含了一个分区的详细信息,比如分区标识符,分区类型,分区起始和结束位置等。
- Secondary GPT:备份GPT头,位于磁盘的最后一个扇区,与主GPT头完全相同,用于备份和恢复。
- Backup partition entries:备份分区条目,位于备份GPT头之前的若干个扇区,与主分区条目完全相同,用于备份和恢复。
rockchip vendor storage占用了磁盘上4个连续的分区(vendor0, vendor1, vendor2, vendor3),每个分区大小为64KB。这4个分区被视为一个整体来存储数据。每个分区中包含以下几个部分:
- vendor_hdr:vendor头部结构体,占用32字节,包含了vendor数据块的基本信息,比如标签,版本号,下一个索引号,项目数量,空闲空间偏移量和大小等。
- vendor_item:vendor项目结构体数组,每个结构体占用16字节,包含了一个项目的信息,比如项目标识符(id),项目长度(len),项目偏移量(offset)等。项目标识符用于表示项目的类型,比如VENDOR_SN_ID表示序列号项目,VENDOR_WIFI_MAC_ID表示WiFi MAC地址项目等。
- data:vendor数据数组,存放了各个项目的具体内容。
- hash:vendor哈希值数组,占用4字节,用于未来扩展。
- version2:vendor版本号2,占用4字节,与vendor头部结构体中的版本号相同,用于校验vendor数据块的完整性。
分区信息
rockchip vendor storage的分区信息如下表所示:
Partition |
Start Sector |
Number of Sectors |
Partition Size |
PartNum in GPT |
Requirements |
MBR |
0 |
1 |
512 |
0.5KB |
|
Primary GPT |
1 |
63 |
32256 |
31.5KB |
|
loader1 |
64 |
7104 |
4096000 |
2.5MB |
preloader (miniloader or U-Boot SPL) |
Vendor Storage |
7168 |
512 |
262144 |
256KB |
SN, MAC and etc. |
Reserved Space |
7680 |
384 |
196608 |
192KB |
Not used |
reserved1 |
8064 |
128 |
65536 |
64KB |
legacy DRM key |
U-Boot ENV |
8128 |
64 |
32768 |
32KB |
|
reserved2 |
8192 |
8192 |
4194304 |
4MB |
legacy parameter |
loader2 |
16384 |
8192 |
4194304 |
4MB |
U-Boot or UEFI |
trust |
24576 |
8192 |
4194304 |
4MB |
trusted-os like ATF, OP-TEE |
boot(bootable must be set) |
32768 |
229376 |
117440512 |
112MB |
kernel, dtb, extlinux.conf, ramdisk |
rootfs |
- |
- |
- |
-MB |
未完待续...