Rockchip系列之VendorStorage 浅浅的介绍(1)

简介: Rockchip系列之VendorStorage 浅浅的介绍(1)

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

未完待续...

相关文章
|
6月前
|
存储 Linux 开发工具
Rockchip系列之浅度分析UART接口系列(1)
Rockchip系列之浅度分析UART接口系列(1)
329 1
|
6月前
|
Linux API Android开发
Rockchip系列之客制化GPIO接口Hardware部分(3)
Rockchip系列之客制化GPIO接口Hardware部分(3)
78 0
|
6月前
|
Java Android开发
Rockchip系列之CAN APP测试应用实现(4)
Rockchip系列之CAN APP测试应用实现(4)
97 1
|
6月前
|
Java Android开发
Rockchip系列之客制化GPIO接口应用部分(5)
Rockchip系列之客制化GPIO接口应用部分(5)
58 0
|
6月前
|
存储 Android开发
Rockchip系列之客制化GPIO接口Driver部分(2)
Rockchip系列之客制化GPIO接口Driver部分(2)
91 0
|
6月前
|
Linux 内存技术
U-BOOT小全(六):BootLoader源码(UBoot-Kernel 1)
U-BOOT小全(六):BootLoader源码(UBoot-Kernel 1)
73 0
|
22天前
|
Linux 网络安全 Windows
smart210 烧写uboot、uImage和rootfs
smart210 烧写uboot、uImage和rootfs
启动报错“No bootable device”
三个步骤排查启动报错“No bootable device”
启动报错“No bootable device”
|
Linux 编译器
Uboot + Kernel
Uboot + Kernel
192 0
|
物联网 中间件
AliOS Things 使用HAL库的USB_DEVICE MSC调用SPI W25Q128
AliOS Things的USB_DEVICE MSC的SPI W25Q128实现
1129 0