SPRUII0F May 2019 – June 2024 TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S
Table 5-16 explains the actions each boot ROM performs if any exceptions that can occur happen during boot. The exception handling philosophy for CPU1, in most cases, is to log the error and continue booting to reach the application. The exception handling philosophy for CPU2 and CM is to log the error, notify CPU1, and let CPU1 handle the action.
For any CPU2 NMI event sources, CPU2 NMI handler will clear the NMI flag to stop the NMI watchdog counter and prevent CPU2 from resetting. The error pin will go low or high (depending on the polarity configuration on the error pin and the reset type) temporarily before the NMI flag is cleared. Therefore, a shorter pulse width of the error pin signal means CPU2 (or CM) is the source of the error. Following this, CPU2 sends an error IPC message to CPU1 in order for CPU1 to handle the error and reset CPU2.
For any CM NMI event sources, the CM NMI handler will clear the NMI flag to stop the NMI watchdog counter and prevent CM from resetting. The error pin will go low or high (depending on the polarity configuration on the error pin and the reset type) temporarily before the NMI flag is cleared. Therefore, a shorter pulse width of the error pin signal means CM (or CPU2) is the source of the error. Following this, the CM sends an error IPC message to CPU1 in order for CPU1 to handle the error and reset CM.
Exception Event Source | CPU1 Boot ROM Action | CPU2 Boot ROM Action | CM Boot ROM Action | Event Logged |
---|---|---|---|---|
Single-bit error in FUSEERR | Ignore and continue to boot | No action | No action | No |
Multi-bit error in FUSEERR | Reset the device | No action | No action | No |
Clock Fail | Clear the NMI flag and continue to boot | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Yes |
RAM Uncorrectable Error ROM Parity Error | Perform RAM initialization and reset the device | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Yes(1) |
Flash Uncorrectable Error | Reset the device | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Yes |
HWBIST Error | Clear the NMI flag and continue to boot | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | No action | Yes |
PIE Vector Mismatch(2) | Fetch error handler address, if address is configured, call handler, else reset the device | Fetch error handler address, if address is configured, call handler, else clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | No action | Yes |
Embedded Real-time Analysis and Diagnostic (ERAD) NMI | Clear the NMI flag and continue to boot | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | No action | Yes |
MCAN Uncorrectable Error | Clear the NMI flag and continue to boot | No action | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Yes |
EtherCAT NMI | Clear the NMI flag and continue to boot | No action | Clear NMI flag, update boot status to CPU1, send error IPC to CPU1, and wait in loop | Yes |
ITRAP Exception | Record memory address of where the illegal instruction was executed and let device reset | Send IPC to CPU1 with memory address of the illegal instruction and wait in loop | No action | Yes |
Invalid IPCBOOTMODE Value upon Reset | No action | Send IPC to CPU1 and wait in loop | Send IPC to CPU1 and wait in loop | Yes |
Secure Flash Boot Failure | Enable watchdog and let device reset | Send IPC to CPU1 and return to wait boot mode | Send IPC to CPU1 and return to wait boot mode | Yes |
Hard Fault Exception | No action | No action | Update boot status to CPU1, send error IPC to CPU1, and wait in loop | Yes |
Any Unsupported Interrupt | Ignore and continue to boot | Ignore and continue to boot | Update boot status to CPU1, send error IPC to CPU1 with the interrupt exception number, and wait in loop | Yes (CM Only) |