SPRSP69B July 2023 – November 2023 TMS320F28P650DK , TMS320F28P659DK-Q1
PRODMIX
Refer to the PDF data sheet for device specific package drawings
This section describes the general boot ROM procedure each time a CPU core is reset. CPU1 always boots first. Once CPU1 boots to the application, then the user's application code in CPU1 can configure the CPU2 and releases CPU2 from reset to boot. Table 7-13 and Table 7-14 list the general boot-up procedures for each core.
During boot, each CPU's boot ROM code updates a boot status location in RAM that details the actions taken during this process. Additionally, CPU2 writes the boot status to the CPU2TOCPU1IPCBOOTSTS register to communicate the status to CPU1.
For more details, see the Boot Status information section of the TMS320F28P65x Real-Time Microcontrollers Technical Reference Manual.
STEP | CPU1 ACTION |
---|---|
1 | Initialize the device C28x CPU and M0/M1 RAM configuration |
2 | Initialize the device to use stack addressing mode, initialize DP to lower 64k and clear overflow mode bit |
3 | Trims are loaded from OTP and device configuration registers are programmed |
4 | On POR, all CPU RAMs (including GSxRAMs) are initialized. Boot continues once the 2KB RAMs are initialized |
5 | Non-maskable interrupt (NMI) handling is enabled and DCSM initialization is performed |
6 | If enabled, the MPOST POR memory test is run. The original clock frequency is NOT restored post MPOST execution |
7 | Pull-ups are enabled on unbonded IOs |
8 | Device calibration is performed, setting the analog trims. Then resets are handled and RAM is checked for initialization completion |
9 | The boot mode GPIO pins are polled to determine the boot mode to run. Boot loader is executed based on boot mode/configurations. Refer to Boot Flow diagram in the TMS320F28P65x Real-Time Microcontrollers Technical Reference Manual for a flow chart of the boot sequences |
10 | After the application is loaded, the watchdog is enabled before executing application |
STEP | CPU1 ACTION |
---|---|
1 | CPU2 release from reset by CPU1 application |
2 | Once CPU1TOCPU2IPCFLG0 is set, read the CPU1TOCPU2IPCBOOTMODE register. If it isn’t set correctly or has an invalid value, IPC is sent to CPU1 and CPU2 waits forever. The user must reset CPU2 and set valid values |
3 | The flash is powered up and waits for power up to complete |
4 | On POR, all CPU2 RAMs (excluding GSxRAMs) are initialized (they are split into two initialization groups) |
5 | NMI is enabled |
6 | Initialize the device to configure lock step (not enable). This is to initialize the uninitialized flops in the device |
7 | Resets are handled |
8 | Using the value from CPU2 CPU1TOCPU2IPCBOOTMODE register, if “wait for command” mode is specified, a wait loop is entered that waits for CPU1 C28x to update the boot mode and set IPCFLG0. If a boot mode is specified, then boot ROM will enable watchdog and boot to the specified boot mode location |
9 | When IPCFLG0 is set in “wait for command” mode, watchdog is enabled, and then boot ROM runs the specified boot mode in CPU1TOCPU2IPCBOOTMODE |