Versal ACAP 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

Boot header is used by PMC BootROM. Based on the attributes set in the boot header, PMC BootROM validates the Platform Loader and Manager (PLM) and loads it to the PPU RAM. The first 16 bytes are intended for SelectMAP Bus detection. PMC BootROM and PLM ignore this data so Bootgen does not include this data in any of its operations like checksum/SHA/RSA/Encryption and so on. The following code snippet is an example of SelectMAP Bus width detection pattern bits. Bootgen places the following data in first 16-bytes as per the width selected.

The individual image header width and the corresponding bits are shown in the following list:
X8
[LSB] 00 00 00 DD 11 22 33 44 55 66 77 88 99 AA BB CC [MSB]
X16
[LSB] 00 00 DD 00 22 11 44 33 66 55 88 77 AA 99 CC BB [MSB]
X32
[LSB] DD 00 00 00 44 33 22 11 88 77 66 55 CC BB AA 99 [MSB]
Note: The default SelectMAP width is X32.

The following table shows the boot header format for a Versal® ACAP.

Table 1. Versal ACAP Boot Header Format
Offset (Hex) Size (Bytes) Description Details
0x00 16 SelectMAP bus width Used to determine if the SelectMAP bus width is x8, x16, or x32
0x10 4 QSPI bus width QSPI bus width description. This is required to identify the QSPI flash in single/dual stacked or dual parallel mode. 0xAA995566 in the little endian format.
0x14 4 Image identification Boot image identification string. Contains 4 bytes X, N, L, X in byte order, which is 0x584c4e58 in the little endian format.
0x18 4 Encryption key source This field is used to identify the AES key source: 0x00000000

0x00000000 - Unencrypted

0xA5C3C5A3 - eFUSE red key

0xA5C3C5A5 - eFUSE black key

0x3A5C3C5A - BBRAM red key

0x3A5C3C59 - BBRAM black key

0xA35C7C53 - Boot Header black key

0x1C 4 PLM source offset PLM source start address in PDI
0x20 4 PMC data load address PMC CDO address to load
0x24 4 PMC data length PMC CDO length
0x28 4 Total PMC data length PMC CDO length including authentication and encryption overhead
0x2C 4 PLM length PLM original image size
0x30 4 Total PLM length PLM image size including the authentication and encryption overhead
0x34 4 Boot header attributes Boot Header Attributes
0x38 32 Black key 256-bit key, only valid when encryption status is set to black key in boot header
0x58 12 Black IV Initialization vector used when decrypting the black key
0x64 12 Secure header IV Secure header initialization vector
0x70 4 PUF shutter value Length of the time the PUF samples before it closes the shutter
Note: This shutter value must match the shutter value that was used during PUF registration.
0x74 12

Secure Header IV for PMC Data

The IV used to decrypt secure header of PMC data.
0x80 68 Reserved Populate with zeroes.
0xC4 4 Meta Header Offset Offset to the start of meta header.
0xC8-0x124 96 Reserved  
0x128 2048 Register init Stores register write pairs for system register initialization
0x928 1544 PUF helper data PUF helper data
0xF30 4 Checksum Header checksum
0xF34 76 SHA3 padding SHA3 standard padding