Zynq UltraScale+ MPSoC Boot Header - 2021.2 English

Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400)

Document ID
UG1400
ft:locale
English (United States)
Release Date
2021-12-15
Version
2021.2 English

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:

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 Zynq® UltraScale+™ MPSoC device.

Table 1. Zynq UltraScale+ MPSoC Device Boot Header
Address Offset Parameter Description
0x00-0x1F Arm® vector table XIP ELF vector table:
  • 0xEAFFFFFE: for Cortex®-R5F and Cortex A53 (32-bit)
  • 0x14000000: for Cortex A53 (64-bit)
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
  • 0x00000000 (Un-Encrypted)
  • 0xA5C3C5A5 (Black key stored in eFUSE)
  • 0xA5C3C5A7 (Obfuscated key stored in eFUSE)
  • 0x3A5C3C5A (Red key stored in BBRAM)
  • 0xA5C3C5A3 (eFUSE RED key stored in eFUSE)
  • 0xA35C7CA5 (Obfuscated key stored in Boot Header)
  • 0xA3A5C3C5 (USER key stored in Boot Header)
  • 0xA35C7C53 (Black key stored in Boot Header)
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).
  • If size > 0, PMUFW is prefixed to FSBL.
  • If size = 0, no PMUFW image.
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 Sum of words from offset 0x20 to 0x44 inclusive. 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.