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

未完待续...

相关文章
|
存储 Linux Android开发
Rockchip系列之VendorStorage uboot/kernel/user space 阶段接口使用介绍(2)
Rockchip系列之VendorStorage uboot/kernel/user space 阶段接口使用介绍(2)
1284 0
|
Java Android开发
Rockchip系列之VendorStorage 新增framework系统jni+service接口访问(3)
Rockchip系列之VendorStorage 新增framework系统jni+service接口访问(3)
364 0
|
Ubuntu 安全 Linux
Linux(34)Rockchip RK3568 Ubuntu22.04和Debian 10上配置远程桌面工具
Linux(34)Rockchip RK3568 Ubuntu22.04和Debian 10上配置远程桌面工具
1678 0
|
存储 传感器 JSON
Rockchip系列之VendorStorage 新增framework封装VendorStorageManager访问(4)
Rockchip系列之VendorStorage 新增framework封装VendorStorageManager访问(4)
358 0
|
监控 数据可视化 Ubuntu
|
存储 芯片
Rockchip 自定义vendorstorages数据再u-boot通过cmdline给kernel传递数据
Rockchip 自定义vendorstorages数据再u-boot通过cmdline给kernel传递数据
1143 1
|
机器学习/深度学习 Java Shell
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
[RK3568][Android12.0]--- 系统自带预置第三方APK方法
1775 0
|
Android开发
Android 配置蓝牙遥控器键值
本文详细介绍了Android系统中配置蓝牙遥控器键值的步骤,包括查看设备号、配置键位映射文件(kl文件)、部署kl文件以及调试过程,确保蓝牙遥控器的按键能正确映射到Android系统对应的按键功能。
2461 1
|
Linux
Realtek 网卡 支持RK vendor mac地址写入
Realtek 网卡 支持RK vendor mac地址写入
522 4
|
Ubuntu
Ubuntu 20.04通过udev规则修改网卡名称(例如eth0)
注意:这种方法可能会对系统的网络配置产生影响,因此在生产环境中使用时需要谨慎。
1442 1