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

 

  1.   C2000™ Hardware Built-In Self-Test
  2.   Trademarks
  3. 1Introduction
    1. 1.1 HWBIST Overview
      1. 1.1.1 HWBIST Working In-System
    2. 1.2 HWBIST Failure Response
    3. 1.3 Advantages of Using HWBIST In-System
  4. 2Using HWBIST In-System
    1. 2.1 Fundamental HWBIST Operation
      1. 2.1.1 Initializing the HWBIST Controller
      2. 2.1.2 Executing HWBIST
        1. 2.1.2.1 Executing HWBIST Micro-Run
        2. 2.1.2.2 Executing HWBIST Full-Run
      3. 2.1.3 Error Management
    2. 2.2 Managing HWBIST on Dual-Core Device
      1. 2.2.1 Semaphore Management
      2. 2.2.2 Interprocessor Communications
    3. 2.3 System Considerations When Using HWBIST
      1. 2.3.1 Interrupt Latency
      2. 2.3.2 Power Considerations
      3. 2.3.3 HWBIST Memory Requirements
      4. 2.3.4 Injecting Errors
    4. 2.4 Debugging HWBIST In-System
  5. 3References
  6. 4Revision History

Injecting Errors

The HWBIST includes some error injection features to help validate the system error handling code. These errors can be invoked by running the following function:

void STL_HWBIST_injectError(const STL_HWBIST_Error errorType);

Table 2-1 lists the injected error types, values, and expected behaviors.

Table 2-1 Injecting Errors, Values, and Behaviors
STL_HWBIST_ERROR Type Value Description and Behavior
STL_HWBIST_NO_ERROR 0x00000000 Clears the error injection feature for future operation.
The HWBIST passes under normal operation, if no faults present.
STL_HWBIST_TIMEOUT 0x0000000A Invokes a time-out error
This is related to the timer in the HWBIST controller. If the HWBIST controller times out during a micro-run, then the micro-run has lost control.
This generates a time-out failure flag and an NMI to the CPU or to both CPUs in a dual-core device.
STL_HWBIST_FINAL_COMPARE 0x000000A0 Corrupts the MISR compare
The HWBIST executes as normal, but compares to a corrupted MISR upon completion. This does not cause a failing condition, but it does allow the CPU to check the MISR for circuit issues.
No NMI is generated, and no fail status is generated.
STL_HWBIST_NMI_TRAP 0x00000A00 Forces an NMI to the HWBIST controller to invoke a shut down and returns control to the CPU.
The micro-run is stopped before beginning the HWBIST micro-run execution and an NMI is generated to the CPU under test.
Note: Although an NMI is triggered, no NMI flags are set.
STL_HWBIST_LOGIC_FAULT 0x00002000 Injects a logic error into the circuitry under test to see if it is caught by the HWBIST
This results in the appropriate HWBIST fail status bits being set, and generates an NMI to the CPU or to both CPUs if a dual CPU device.
Note: Valid logic error injection values are from 0x00001000 to 0xFFFFF000. The Diagnostic Library only supplies one value (0x00002000). However, you may wish to modify the source code to allow for writing other or multiple logic error injection values to the CSTCTEST register. See the source code in stl_hwbist.h of the Software Diagnostic Library.

If the code is lost during debugging error management, the most likely cause is that the NMI execution is not appropriately initialized. For more information, see Section 2.1.3.