SPRUIZ1B July 2023 – August 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
Secure LFU Flash boot performs the same Flash bank selection as the non-secure LFU described in Section 4.7.8.2.9. Once the bank entry address is determined, this address + 16KB is authenticated using a CMAC algorithm. The CPUBROM_verifySecureFlash and CMAC algorithms are reused from the Section 4.7.5 to perform this authentication.
The flow is:
To support Secure LFU Flash boot mode, the application image has to have a few fields as shown in Table 4-33.
Image Address Offset | Content |
---|---|
0x0 | Application entry point (32-bit) |
0x2 | Golden CMAC Tag (128-bits) |
0xA | Key (32-bit) Valid Key = 0x5A5A 5A5A |
0xC | Firmware version number (32-bit) |
Application entry point: This is the code execution start address of the image stored in Flash.
Key: This 32-bit field determines if this image is valid. The image in a bank is considered valid only if the location contains the value 0x5A5A 5A5A. In case all banks have invalid keys, an error is flagged in boot_status variable and program jumps to a while loop in standalone boot mode (ESTOP in emulation boot mode).Firmware version number: This 32-bit field is the version number of the application. 0xFFFF FFFF is considered as the initial value and this needs to be decremented after every update. The image with lower version number is the latest application. If all valid images have same version number, then bank-0 (or the lowest numbered bank) is chosen.
Golden CMAC Tag: This 128-bit field stores the calculated golden CMAC tag that is used as part of the secure Flash CMAC authentication.
Table 4-34 shows the entry points for CPU1 LFU boot mode.
Table 4-35 shows the entry points for CPU2 LFU boot mode.
Option | BOOTDEFx Value | Bank 0 | Bank 1 | Bank 2 | Bank3 | Bank4 |
---|---|---|---|---|---|---|
0 | 0x0C | 0x0008 0000 | 0x000A 0000 | 0x000C 0000 | 0x000E 0000 | 0x0010 0000 |
1 | 0x2C | 0x0008 FFF0 | 0x000A FFF0 | 0x000C FFF0 | 0x000E FFF0 | 0x0010 FFF0 |
2 | 0x4C | 0x0009 0000 | 0x000B 0000 | 0x000D 0000 | 0x000F 0000 | 0x0011 0000 |
Option | BOOTDEFx Value | Bank 0 | Bank 1 | Bank 2 | Bank3 | Bank4 |
---|---|---|---|---|---|---|
0 | 0x07 | 0x0008 0000 | 0x000A 0000 | 0x000C 0000 | 0x000E 0000 | 0x0010 0000 |
1 | 0x27 | 0x0008 FFF0 | 0x000A FFF0 | 0x000C FFF0 | 0x000E FFF0 | 0x0010 FFF0 |
2 | 0x47 | 0x0009 0000 | 0x000B 0000 | 0x000D 0000 | 0x000F 0000 | 0x0011 0000 |
For example, if Option 0 with Bank 0 has the application image:
[0008 0000-0008 0001] = Application entry point
[0008 0002-0008 0009] = Golden CMAC Tag[0008 000A-0008 000B] = Key
[0008 000C-0008 000D] = Firmware version number