About the Boot Header
Bootgen attaches a boot header at the starting of any boot image. The boot
header table is a structure that contains information related to booting of primary
bootloader, such as the FSBL. There is only one such structure in entire boot image.
This table is parsed by BootROM to get the information of where FSBL is stored in
flash and where it needs to be loaded in OCM. Some encryption and authentication
related parameters are also stored in here. The boot image components are:
- Zynq UltraScale+ MPSoC Boot Header, which also has the Zynq UltraScale+ MPSoC Boot Header Attribute Bits.
- Zynq UltraScale+ MPSoC Register Initialization Table
- Zynq UltraScale+ MPSoC PUF Helper Data
- Zynq UltraScale+ MPSoC Image Header Table
- Zynq UltraScale+ MPSoC Image Header
- Zynq UltraScale+ MPSoC Authentication Certificates
- Zynq UltraScale+ MPSoC Partition Header
BootROM uses the boot header to find the location and length of FSBL and other details to initialize the system before handing off the control to FSBL. The following table provides the address offsets, parameters, and descriptions for the AMD Zynq™ UltraScale+™ MPSoC device.
Address Offset | Parameter | Description |
---|---|---|
0x00-0x1F | Arm® vector table | XIP ELF vector table:
|
0x20 | Width Detection Word | This field is used for QSPI width detection.
0xAA995566 in little endian format. |
0x24 | Header Signature | Contains 4 bytes ‘X’, ’N’, ’L’, ’X’ in byte order, which is 0x584c4e58 in little endian
format. |
0x28 | Key Source |
|
0x2C | FSBL Execution address (RAM) | FSBL execution address in OCM or XIP base address. |
0x30 | Source Offset | If no PMUFW, then it is the start offset of FSBL. If PMUFW, then start of PMUFW. |
0x34 | PMU Image Length | PMU firmware original image length in bytes. (0-128KB).
|
0x38 | Total PMU FW Length | Total PMUFW image length in bytes.(PMUFW length + encryption overhead) |
0x3C | FSBL Image Length | Original FSBL image length in bytes. (0-250KB). If 0, XIP bootimage is assumed. |
0x40 | Total FSBL Length | FSBL image length + Encryption overhead of FSBL image + Auth. Cert., + 64byte alignment + hash size (Integrity check). |
0x44 | FSBL Image Attributes | See Bit Attributes. |
0x48 | Boot Header Checksum | Inverse of sum of words from offset
0x20
to
0x44
inclusive as per standard algorithm . The words are assumed to be little
endian. |
0x4C-0x68 | Obfuscated/Black Key Storage | Stores the Obfuscated key or Black key. |
0x6C | Shutter Value | 32-bit PUF_SHUT
register value to configure PUF for shutter offset time and shutter open
time. |
0x70 -0x94 | User-Defined Fields (UDF) | 40 bytes. |
0x98 | Image Header Table Offset | Pointer to Image Header Table. |
0x9C | Partition Header Table Offset | Pointer to Partition Header. |
0xA0-0xA8 | Secure Header IV | IV for secure header of bootloader partition. |
0x0AC-0xB4 | Obfuscated/Black Key IV | IV for Obfuscated or Black key. |