SPRACA7A October 2017 – September 2022 TMS320F28075 , TMS320F28075-Q1 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S
A failing condition from a HWBIST execution is a serious situation. If this occurs, then the behavior of the CPU that failed cannot be ensured. Code that takes appropriate action to gracefully shut down the system must be included. This can be done by decoding the return value of STL_HWBIST_runFull() or STL_HWBIST_runMicro().
The code can be managed through a trap to the NMI. This is the quicker method for managing a HWBIST failure, especially in the case of a dual CPU device, because the NMI is sent to both CPUs. To take advantage of the NMI traps, the system code must do the following:
SysCtl_clearNMIStatus(STL_HWBIST_NMI_CPU1_HWBISTERR);
SysCtl_clearNMIStatus(STL_HWBIST_NMI_CPU2_HWBISTERR);
Interrupt_register(INT_NMI, STL_HWBIST_errorNMIISR);
Interrupt_enablePIE();
The ENPIE bit of the PIECTRL register is set on the CPU being tested by the HWBIST software, but it must also be set on the other CPU (in a dual-CPU device) for it to respond to the failure.
For more details about the NMIFLG register and the HWBIST flags it contains, see the device-specific Technical Reference Manual.