SPRUJH3 April 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F2800152-Q1 , TMS320F2800153-Q1 , TMS320F2800154-Q1 , TMS320F2800155 , TMS320F2800155-Q1 , TMS320F2800156-Q1 , TMS320F2800157 , TMS320F2800157-Q1 , TMS320F280021 , TMS320F280023 , TMS320F280023C , TMS320F280025 , TMS320F280025C , TMS320F280034 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037C , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039C , TMS320F280040-Q1 , TMS320F280040C-Q1 , TMS320F280041 , TMS320F280041C , TMS320F280045 , TMS320F280048-Q1 , TMS320F280048C-Q1 , TMS320F280049 , TMS320F280049C , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377S , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379S , TMS320F28384D , TMS320F28384S , TMS320F28386D , TMS320F28386S , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
Flash operations on all C2000 operations are performed by the CPU. Algorithms are loaded into RAM and executed by the CPU to perform any Flash operations. For instance, erasing or programming the Flash of a C2000 device with CCS entails loading Flash algorithms into the RAM over JTAG and having the CPU execute them.
All Flash operations are performed using the Flash Application Programming Interface (API); the device-specific library and reference guide is available in C2000Ware [3] at “libraries/flash_api”. Applications that require erase or program Flash at runtime can link the Flash API library to perform Flash programming.
However, applications that call the Flash API are not advised to execute from the same Flash bank, since erasing or programming the Flash while also executing code introduces race conditions and undefined behavior. Hence, the Flash API needs to be executed from the RAM or another Flash bank (if additional banks exists for the same core).
This can be achieved by allocating the Flash API to the “.ti.ramfunc” section in the linker command file, designating a Flash load address and RAM run address, and then copying the functions to RAM in the main function before executing. Comprehensive details on Flash programming on C2000 devices can be referenced in [4] and [5].