How do I enable tracing of interrupt handlers?

Oct 17, 2013 |

(This answer is only applicable for Percepio’s own recorder library, used for e.g. FreeRTOS, OpenRTOS, SafeRTOS and Micrium µC/OS)

Interrupt handlers (ISRs) are not recorded by default. To record ISRs, you need to add two calls in the interrupt handlers you wish to record, vTraceStoreISRBegin in the very beginning and vTraceStoreISREnd in the very end. The parameter of vTraceStoreISRBegin is a “trace handle” returned from xTraceSetISRProperties, that should be called one time per ISR before starting the tracing.

Note: ISRs without the above mentioned instrumentation are in some cases recorded anyway, but with incomplete information. This occurs if a kernel call is made to an “ISR only” function, but without a previous vTraceStoreISRBegin call. Since it is assumed such kernel functions may only be called from interrupt context, short ISR fragment are added to encapsulate such kernel call events. Such ISR fragments are labeled “ISR using Object”, e.g., “ISR using Queue #1”.