SPRUII0F May 2019 – June 2024 TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S
Each CPU subsystem includes a dedicated Flash bank, which the 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:
PUMPREQUEST.SEM | Description |
---|---|
00 | CPU1 has control of the pump, but CPU2 and CM can seize control at any time |
01 | CPU2 has exclusive control of the pump and of these semaphore bits. CPU2 can relinquish control by setting the bits back to 00 |
10 | CPU1 has exclusive control of the pump and of these semaphore bits. CPU1 can relinquish control by setting the bits back to 00 |
11 | CM has exclusive control of the pump and of these semaphore bits. CM can relinquish control by setting the bits back to 00 |
Semaphore bit changes from 01→10, 01→11, 10→01, 10→11, 11→01, or 11→10 are not allowed. The CPU that currently controls the Pump semaphore must first relinquish control by setting the bits to 00 before another CPU can assume ownership.
Figure 13-5 describes the allowed states and state transitions.