The boot header is used by BootROM in Versal AI Edge Series Gen 2 and Versal Prime Series Gen 2 devices. Based on the attributes set in the boot header, it validates the platform loader and manager (PLM) and loads it to the PMC RAM. The initial 16 bytes are reserved for SelectMAP bus width detection. BootROM/PLM ignores this data, so Bootgen does not include this data in any of the operations for example checksum, SHA, and encryption. The boot header is always in plain text.
The following are the values in binaries used for detecting SMAP width while in table it is pattern used for that purpose.
- 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.
Start Offset (Dec) | Start Offset (Hex) | Size (B) | Size (words) | Field | Description |
---|---|---|---|---|---|
0 | 0x0 | 16 | 4 | SMAP Bus Width Words | Used to determine the SMAP bus width 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] |
16 | 0x10 | 4 | 1 | Width detection | 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. |
20 | 0x14 | 4 | 1 | Image identification | Boot image identification string. Contains 4 bytes X, N, L, X in byte order, which is 0x584c4e58 in the little-endian format. |
24 | 0x18 | 4 | 1 | Encryption status | AES Key Source and Type |
28 | 0x1C | 4 | 1 | Source offset | Source offset of PMCFW in DPI |
32 | 0x20 | 4 | 1 | PMC CDO load address | Data partition start address to load |
36 | 0x24 | 4 | 1 | PMC CDO length | Data partition size |
40 | 0x28 | 4 | 1 | Total PMC CDO length | Data partition size including authentication and encryption overhead |
44 | 0x2C | 4 | 1 | PLM length | PMCFW size |
48 | 0x30 | 4 | 1 | Total PLM length | PMCFW partition size including authentication and encryption overhead |
52 | 0x34 | 4 | 1 | Image attributes | Image Attributes |
56 | 0x38 | 32 | 8 | Grey/Black Key | Boot header black/Grey key storage |
88 | 0x58 | 12 | 3 | Grey/Black IV | Boot header black/Grey IV storage |
100 | 0x64 | 12 | 3 | Secure Header IV for Hash Block | Secure header IV |
112 | 0x70 | 4 | 1 | PUF Shutter Value | PUF shutter value |
116 | 0x74 | 4 | 1 | Ring Oscillator Config value | Ring Oscillator Value, Default is zero |
120 | 0x78 | 4 | 1 | Partition revocation ID | Partition revocation ID |
124 | 0x7C | 516 | 129 | User Data | User Data (Default - fill with zeroes) |
640 | 0x280 | 4 | 1 | Authentication Header-1 | Authentication Header |
644 | 0x284 | 4 | 1 | HASH Block Size - 1 | HASH Block size - Filled with Zeros (for optional block) |
648 | 0x288 | 4 | 1 | Total PPK Size - 1 | PPK Size with padding to align |
652 | 0x28C | 4 | 1 | Actual PPK Size - 1 | Actual PPK 1 Size |
656 | 0x290 | 4 | 1 | Total PDI Signature Size - 1 | Signature Size with padding to align |
660 | 0x294 | 4 | 1 | Actual PDI Signature Size - 1 | Actual PDI Signature 1 Size |
664 | 0x298 | 56 | 14 | ROM Reserved | Reserved. Fill with zeroes |
720 | 0x2D0 | 100 | 25 | PLM Reserved | Reserved for PLM |
820 | 0x334 | 2048 | 512 | Reg Init | Register initialization. Same as that of Alto |
2868 | 0xB34 | 1544 | 386 | PUF HD | PUF Helper data |
4412 | 0x113C | 4 | 1 | Check Sum | checksum is calculated from 0x10 till 0x1138 First, sum all the values then negate that and extract 4 bytes out of it. |