SDAA104 September   2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2Error Handling Architecture Overview
  6. 3Example Overview
  7. 4Error Aggregator Overview
    1. 4.1 Error Aggregation
    2. 4.2 Error Logging
    3. 4.3 Error Debugging Using EAM Module
      1. 4.3.1 EAM Error Debugging
      2. 4.3.2 Interpreting Error Address and Program Counter Values
  8. 5Error Signaling Module Overview
    1. 5.1 ESM Error Event Output Configuration and Status Information
      1. 5.1.1 Sysconfig ESM Configuration
    2. 5.2 ESM Error Events Debugging
    3. 5.3 Miscellaneous Debug Tips for ESM
  9. 6BootROM EAM and ESM Error Status
  10. 7FAQ's:
  11. 8Summary
  12. 9References

EAM Error Debugging

  1. Run the Error_Agg_Check_Status() GEL file hotmenu function, Figure 4-3 is the CCS GEL output for the ESM Multicore example (esm_ex1_cpu1_cpu3) from the F29 SDK. The Error_Agg_Check_Status() function does the following for the output:
    1. Error_Agg_Check_Status() maps the error type value to the error. In this example as seen in the GEL output, the error is CPU3 DW Security Violation error since in the example CPU3 code writes to M0RAM location which is not allowed. This was intentionally done to create an error scenario to showcase the error debug example.
    2. High priority error address is 0x20000000 and Program counter is 0x10402C14 as seen from the GEL output below, this is fetched from the corresponding CPU3_DW high priority error address and program counter registers.
       Error Aggregator Check Status
                  GEL Output Log Figure 4-3 Error Aggregator Check Status GEL Output Log
  2. The Error_Agg_Check_Status() GEL function needs to be run before clearing the ESM/EAM flags from either CPU1 or CPU3 as shown below. To achieve this the breakpoint was placed before ESM/EAM flag clear function execution as shown in the NMI ISR – ESM/EAM Clear Flags figure below so that the EAM register can be read and decoded by GEL function before they are cleared.

    Interrupt_clearEsmEaFlags() is the reference driverlib function provided as part of F29 SDK that clears all the EAM and ESM flags which is used in this example's CPU1 and CPU3 NMI ISR's (as seen in NMI ISR – ESM/EAM Clear Flags) and also present in driverlib default NMI handler. In case, the Interrupt_clearEsmEaFlags() function was already executed then user can look at the nmiStatus struct (memory location used to store the ESM/EAM error flag register values) to find the error information in the CCS watch window as shown in Figure 4-5.

    Note: The clearing of EAM and ESM flags is an important step in NMI (Non-Maskable Interrupt) ISR since that avoids NMIWD (NMI Watchdog) to timeout and trigger system reset (XRSn).
     NMI ISR – ESM/EAM Clear
              Flags Figure 4-4 NMI ISR – ESM/EAM Clear Flags
     NMI Status Capture log Figure 4-5 NMI Status Capture log
  3. Following is the register view output from CCS for the same example.
    1. The register output high priority error address, program counter address and error type value matches with the GEL function file output shown in Error Aggregator Check Status GEL Output Log - Figure 4-3.
 CCS Register View of Error Aggregator
          Registers Figure 4-6 CCS Register View of Error Aggregator Registers