SPRZ496D October 2021 – May 2024 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1
Avoiding Spurious Interrupts While Using HWBIST
0
HWBIST has the capability to log interrupts that are received while the CPU is under test and re-issue them after HWBIST completes. Interrupts that are received in the clock cycle before the interrupt logging is enabled will be executed before the HWBIST runs. In the next cycle, once interrupt logging is enabled, interrupts will be logged and re-issued once the HWBIST completes.
The interrupt events for CPU Timer 1 and CPU Timer 2 are valid for 2 SYSCLK cycles. If the first cycle happens a cycle before interrupt logging is enabled and the second cycle coincides with the enabling of interrupt logging, the interrupt will be executed once before the logging (clearing the CPU Timer TCR.TIF flag), but then will be logged by the interrupt logger and triggered again after HWBIST completes. Since the TCR.TIF flag was already cleared by the previous ISR, this is an unexpected spurious interrupt.
Note that this scenario is only applicable to the non-PIE CPU Timer interrupts. The CPU Timer 0 interrupt is managed by the PIE and its pulse width is only one SYSCLK cycle.
Disable CPU Timer 1 and 2 interrupts before enabling interrupt logging and restore them later. This workaround is already implemented in the C2000 Software Diagnostic Library in the stl_hwbist_s.asm file. The steps are: