Zynq UltraScale+ MPSoC 启动头文件 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文

关于启动头文件

Bootgen 将启动头文件附加到任意启动镜像开头处。启动头文件表为包含主启动加载程序(如 FSBL)相关启动信息的结构。此结构在整个启动镜像中唯一。该表由 BootROM 解析,以获取闪存中 FSBL 存储位置以及 OCM 中所需的 FSBL 加载位置的信息。其中还存储有部分加密和身份验证相关的参数。启动镜像组件包括:

在向 FSBL 交接控制权之前,BootROM 使用启动头文件来查找 FSBL 的位置和长度信息以及有关对系统进行初始化的详细信息。下表提供了 AMD Zynq™ UltraScale+™ MPSoC 器件的地址偏移、参数和描述。

表 1. Zynq UltraScale+ MPSoC 器件启动头文件
地址偏移 参数 描述
0x00-0x1F Arm® vector table XIP ELF 矢量表:
  • 0xEAFFFFFE:对应于 Cortex®-R5FCortex A53(32 位)
  • 0x14000000:对应于 Cortex A53(64 位)
0x20 Width Detection Word 该字段用于 QSPI 宽度检测。0xAA995566(小字节序格式)。
0x24 Header Signature 包含 4 字节的“X”、“N”、“L”、“X”(按字节顺序),按小字节序格式为 0x584c4e58
0x28 Key Source
  • 0x00000000(未加密)
  • 0xA5C3C5A5(eFUSE 中存储的黑密钥)
  • 0xA5C3C5A7(eFUSE 中存储的模糊密钥)
  • 0x3A5C3C5A(BBRAM 中存储的红密钥)
  • 0xA5C3C5A3(eFUSE 中存储的 eFUSE 红密钥)
  • 0xA35C7CA5(启动头文件中存储的模糊密钥)
  • 0xA3A5C3C5(启动头文件中存储的用户密钥)
  • 0xA35C7C53(启动头文件中存储的黑密钥)
0x2C FSBL Execution address (RAM) OCM 或 XIP 基址中的 FSBL 执行地址。
0x30 Source Offset 如无 PMUFW,则这是 FSBL 的起始偏移。如有 PMUFW,则为 PMUFW 的起始偏移。
0x34 PMU Image Length PMU 固件原始镜像长度(以字节为单位)。(0-128 KB)。
  • 如果大小 > 0,PMUFW 将作为 FSBL 的前缀。
  • 如果大小 = 0,则无 PMUFW 镜像。
0x38 Total PMU FW Length PMUFW 镜像总长(以字节为单位)。(PMUFW 长度 + 加密开销)
0x3C FSBL Image Length 原始 FSBL 镜像长度(以字节为单位)。(0-250 KB)。如为 0,则使用 XIP 启动镜像。
0x40 Total FSBL Length FSBL 镜像长度 + FSBL 镜像的加密开销 + 身份验证。证书 + 64 字节对齐 + 散列大小(完整性检查)。
0x44 FSBL Image Attributes 请参阅 位属性
0x48 Boot Header Checksum 从偏移 0x20 到 0x44(含)的字数总和。这些字假定按小字节序。
0x4C-0x68 Obfuscated/Black Key Storage 存储模糊密钥或黑密钥。
0x6C Shutter Value 32 位 PUF_SHUT 寄存器值,用于配置 PUF 的快门偏移时间和快门打开时间。
0x70 - 0x94 User-Defined Fields (UDF) 40 字节。
0x98 Image Header Table Offset 指向镜像头文件表的指针。
0x9C Partition Header Table Offset 指向分区头文件的指针。
0xA0-0xA8 Secure Header IV 用于启动加载程序分区的安全头文件的 IV。
0x0AC-0xB4 Obfuscated/Black Key IV 用于模糊密钥或黑密钥的 IV。