Overview
The software component Event Recorder provides API functions for event annotations in the application code or software component libraries. These API functions record event timing and data information while the program is executing.
The Event Filter which is controlled from the target application or the debugger allows to specify the event ids that are stored in the event buffer that is located in the memory of the target system. This event buffer may be continuously read by the debug unit and displayed in the Event Recorder window of the debugger.
During program execution, the debugger reads the content of the event buffer using a standard debug unit that is connected via JTAG or SWD to the CoreSight Debug Access Port (DAP). The Event Recorder requires no trace hardware and can be therefore used on any Cortex-M processor.
Event Recorder block diagram with exemplary output in an IDE
- Theory of operation explains in details how the Event Recorder collects event data, generates time stamps, and transfers this information via a debug unit to a host computer.
- Using Event Recorder provides instructions on how to enable Event Recorder in a project.
Features and Benefits
- Provides visibility to the dynamic execution of an application at little (memory) cost.
- Works on all Cortex-M devices with JTAG or SWD debug ports.
- Adds RTOS awareness to a development tool without complex DLL programming.
- printf re-targeting for devices without ITM, such as Arm Cortex-M0/M0+/M23.
- Fast time-deterministic execution of event recorder functions with minimal code and timing overhead.
- For Arm Cortex-M3/M4/M7/M33/M55/M85 processor based devices, Event Recorder functions will not disable interrupts.
- No need for a debug or release build as the event annotations can remain in production code.
- Collecting the data from the on-chip memory is done using simple read commands.
- Using the DWT Cycle Count register for creating time stamps reduces code overhead (available on Arm Cortex-M3/M4/M7/M33/M55/M85).