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

未完待续...

相关文章
|
9月前
|
Java Android开发
Rockchip系列之CAN APP测试应用实现(4)
Rockchip系列之CAN APP测试应用实现(4)
147 1
|
9月前
|
Linux API Android开发
Rockchip系列之客制化GPIO接口Hardware部分(3)
Rockchip系列之客制化GPIO接口Hardware部分(3)
129 0
|
9月前
|
存储 Linux 开发工具
Rockchip系列之浅度分析UART接口系列(1)
Rockchip系列之浅度分析UART接口系列(1)
501 1
|
9月前
|
Java Android开发
Rockchip系列之客制化GPIO接口应用部分(5)
Rockchip系列之客制化GPIO接口应用部分(5)
88 0
|
9月前
|
存储 Android开发
Rockchip系列之客制化GPIO接口Driver部分(2)
Rockchip系列之客制化GPIO接口Driver部分(2)
145 0
|
6月前
|
编解码 数据格式
IMX6ULL开发板spi OLED驱动
【8月更文挑战第24天】本文档介绍在IMX6ULL开发板上实现SPI接口OLED显示器驱动的步骤。首先需正确连接OLED至开发板的SPI接口,包括时钟(SCLK)、数据(MOSI)及片选(CS)等线路。理解SPI协议与OLED规格也很关键:SPI为同步串行通信,涉及主从设备交互;OLED参数如分辨率、颜色深度等须明确。接下来配置IMX6ULL的SPI控制器,通过设备树设定时钟频率、数据宽度等参数,并加载内核驱动。最后编写驱动程序,初始化SPI设备、发送控制命令与数据以完成OLED初始化,并实现文本或图像的显示功能。
126 1
|
9月前
MTK之外部中断篇
MTK之外部中断篇
88 2
|
9月前
|
芯片
MTK平台驱动调试指南 GPIO设置篇
MTK平台驱动调试指南 GPIO设置篇
536 1
|
Linux Windows
LINUX编译alsa
LINUX编译alsa
149 0
ALSA驱动源码之devm_snd_soc_register_component源码分析
ALSA驱动源码之devm_snd_soc_register_component源码分析