SPRUIU9B August   2020  – September 2022 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041-Q1 , TMS320F280041C , TMS320F280041C-Q1 , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049-Q1 , TMS320F280049C , TMS320F280049C-Q1 , TMS320F28P550SJ , TMS320F28P559SJ-Q1

 

  1.   Live Firmware Update Without Device Reset on C2000 MCUs
  2.   Trademarks
  3. 1Introduction
  4. 2Key Innovations
  5. 3Building Blocks for LFU
  6. 4Details of Proposed Solution
    1. 4.1 Flash Bank Organization
    2. 4.2 LFU Concepts and Factors Impacting Performance
    3. 4.3 Hardware Support for LFU
      1. 4.3.1 Multiple Flash Banks
      2. 4.3.2 Interrupt Vector Table Swap
      3. 4.3.3 RAM Block Swap
      4. 4.3.4 Hardware Register Flags
    4. 4.4 LFU Compiler Support
    5. 4.5 Application LFU Flow
  7. 5Results and Conclusion
  8. 6Revision History

Hardware Register Flags

Execution can reach main() either after a device reset and through a C initialization routine call to main(), or during LFU, from the LFU entry point calling the LFU Compiler initialization routine and then main(). In the former case, device specific initializations in main() need to occur, but not in the LFU case. To distinguish the two, a hardware flag in a register is supported, which indicates whether LFU is currently active or not.