SPRUIZ1B July 2023 – August 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
Firmware Update (FWU) boot mode is required to handle the Firmware Update feature. In this boot mode, the boot loader reads the version number from images present in multiple banks and identifies the latest image. The boot ROM then hands off the execution to the application with the latest version. To support FWU boot mode, each Flash bank containing an application image needs a few fields as shown in Table 4-45.
Image Address Offset | Content |
---|---|
0x0 | Application entry point (32-bit) |
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 firmware or 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.
For example, if bank-0 has invalid Key and bank-1 and bank-2 have valid keys, then the one having the lowest Firmware version number is selected for boot. If both are same, then bank-1 is selected.
Table 4-46 shows the entry points for FWU boot mode for CPU1 and Table 4-47 shows the entry points for FWU boot mode for CPU2.
Option | BOOTDEFx Value | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Bank 4 |
---|---|---|---|---|---|---|
0 | 0x0B | 0x0008 0000 | 0x000A 0000 | 0x000C 0000 | 0x000E 0000 | 0x0010 0000 |
1 | 0x2B | 0x0008 FFF0 | 0x000A FFF0 | 0x000C FFF0 | 0x000E FFF0 | 0x0010 FFF0 |
2 | 0x4B | 0x0009 0000 | 0x000B 0000 | 0x000D 0000 | 0x000F 0000 | 0x0011 0000 |
3 | 0x6B | 0x0009 FFF0 | 0x000B FFF0 | 0x000D FFF0 | 0x000F FFF0 | 0x0011 FFF0 |
Option | BOOTDEFx Value | Bank 0 | Bank 1 | Bank 2 | Bank 3 | Bank 4 | Package Supported |
---|---|---|---|---|---|---|---|
0 | 0x06 | 0x0008 0000 | 0x000A 0000 | 0x000C 0000 | 0x000E 0000 | 0x0010 0000 | All |
1 | 0x26 | 0x0008 FFF0 | 0x000A FFF0 | 0x000C FFF0 | 0x000E FFF0 | 0x0010 FFF0 | All |
2 | 0x46 | 0x0009 0000 | 0x000B 0000 | 0x000D 0000 | 0x000F 0000 | 0x0011 0000 | All |
3 | 0x66 | 0x0009 FFF0 | 0x000B FFF0 | 0x000D FFF0 | 0x000F FFF0 | 0x0011 FFF0 | All |
For example, if Option 0 with Bank 0 has the application image:
[0008 0000-0008 0001] = Application entry point
[0008 000A-0008 000B] = Key
[0008 000C-0008 000D] = Firmware version number