SPRUIU8A March 2020 – August 2021 TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1
C2000, Code Composer Studio, are trademarks of Texas Instruments.
All trademarks are the property of their respective owners.
In applications like server power supply, metering, and so forth. the system is desired to be run continuously to reduce downtime. But typically during firmware upgrades due to bug fixes, new features, and/or performance improvements, the system is removed from service causing downtime for associated entities as well. This can be handled with redundant modules but with increase in total system cost. An alternate approach, called Live Firmware Update (LFU), allows firmware to be updated while the system is still operating. Switching to new firmware can be done either with or without resetting the device, with the latter being more complex.
LFU is feasible when the device has enough resources of various kinds – CPU bandwidth, Memory, and Peripheral availability:
LFU is easier to implement in devices with multiple Flash banks. In this document and the reference example, it is assumed that the device has 2 Flash banks. The device considered is TMS320F28004x, which has dual flash banks. Their address space is 64K x 16 each, with addresses ranging from 0x80000-0x8FFFF, and 0x90000-0x9FFFF.
The Flash memory has been partitioned as shown in Figure 3-1.
Assuming each Flash bank has 16 sectors, two sectors have been allocated to Static code (code that will not change between applications). This is described in Section 4.
A few locations in sector 2 have been reserved to store the below entries:
The rest of sector 2 and sectors 3-15 can be used to store the application image. This allows the static code in sectors 0 and 1 to be programmed once, and remain unchanged during LFU.