关于启动头文件
Bootgen 将启动头文件附加到任意启动镜像开头处。启动头文件表为包含主启动加载程序(如 FSBL)相关启动信息的结构。此结构在整个启动镜像中唯一。该表由 BootROM 解析,以获取闪存中 FSBL 存储位置以及 OCM 中所需的 FSBL 加载位置的信息。其中还存储有部分加密和身份验证相关的参数。启动镜像组件包括:
在向 FSBL 交接控制权之前,BootROM 使用启动头文件来查找 FSBL 的位置和长度信息以及有关对系统进行初始化的详细信息。下表提供了 AMD Zynq™ UltraScale+™ MPSoC 器件的地址偏移、参数和描述。
地址偏移 | 参数 | 描述 |
---|---|---|
0x00-0x1F | Arm® vector table | XIP ELF 矢量表:
|
0x20 | Width Detection Word | 该字段用于 QSPI 宽度检测。0xAA995566 (小字节序格式)。 |
0x24 | Header Signature | 包含 4 字节的“X”、“N”、“L”、“X”(按字节顺序),按小字节序格式为 0x584c4e58 。 |
0x28 | Key Source |
|
0x2C | FSBL Execution address (RAM) | OCM 或 XIP 基址中的 FSBL 执行地址。 |
0x30 | Source Offset | 如无 PMUFW,则这是 FSBL 的起始偏移。如有 PMUFW,则为 PMUFW 的起始偏移。 |
0x34 | PMU Image Length | PMU 固件原始镜像长度(以字节为单位)。(0-128 KB)。
|
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。 |