SPRUHM8K December 2013 – May 2024 TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1
Each CPU subsystem has a Flash bank, which the CPU subsystem can read, program, and erase. Both Flash banks share a single charge pump for program and erase operations. Hence, only one CPU can program or erase the Flash at any given time. A CPU can read data and execute code from the Flash even when the other CPU is programming or erasing. The Flash pump ownership semaphore allows one CPU to take control of the pump without being interrupted by the other CPU.
The pump ownership semaphore is implemented as a two-bit field in a PUMPREQUEST register with special write protections. This register requires a key field to be written at the same time as the semaphore bits. The possible semaphore states are:
00 or 11 | Either CPU can write to the semaphore. CPU1 has control of the resource by default. 00 is the reset state. |
01 | CPU2 has exclusive control of the resource and exclusive write access to the semaphore. |
10 | CPU1 has exclusive control of the resource and exclusive write access to the semaphore. |
Each CPU is only allowed to take control of the pump for itself. Direct transfer between the 01 and 10 states is not allowed. However, CPU1 can force both semaphores into the default state (00) at any time by putting CPU2 into reset. Figure 3-20 shows the allowed states and state transitions.