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

Fundamental HWBIST Operation

Executing the HWBIST involves the following four code segments:

  • Initialize the HWBIST controller
  • Execute the HWBIST
  • Recover from the HWBIST
  • Manage results

Most of this is accomplished by Software Diagnostic Library functions that can be called by the user's application. The function definitions are provided in the header file, stl_hwbist.h. For more details on these function descriptions, see the stl_hwbist.h or the device-specific SDL User's Guide, which is in the /docs folder of the library release package.

There are up to eight functions included, as follows:

__interrupt void STL_HWBIST_errorNMIISR(void);
uint16_t STL_HWBIST_runFull(const STL_HWBIST_Error errorType);
uint16_t STL_HWBIST_runMicro(void);
void STL_HWBIST_restoreContext(void);
void STL_HWBIST_init(const STL_HWBIST_Coverage coverage);
void STL_HWBIST_injectError(const STL_HWBIST_Error errorType);
bool STL_HWBIST_claimSemaphore(const STL_HWBIST_Core core);
void STL_HWBIST_releaseSemaphore(void);