Instrumentation Trace Macrocell (ITM)
ITM module enables software instrumentation in the target application (same concept as with printf()). Software instrumentation is performed by the target application writing application specific values into a series of ITM stimulus port registers which cause trace messages to be output over the trace port. winIDEA displays ITM output either in the Trace window or the Terminal window (Refer to ITM Trace via Terminal Window chapter for more information).
ITM with DWT is usually featured on Cortex-M devices.
ITM can generate timestamp messages in the trace stream. Timestamps provide information on the timing of event generation regarding their visibility at a trace output port.
A Local timestamp packet encodes timestamp information, for generic control and synchronization, based on a timestamp counter in the ITM. Local timestamp counter can be clocked via synchronous clocking and/or asynchronous clocking. It is dependent on the used device if synchronous and/or asynchronous clocking is available.
ITM module configuration is located in Trigger - [Advanced Coverage Trigger] dialog.
Refer to tutorial ARM Cortex-M Instrumentation Trace to explore Software Tracing on ARM Cortex-M architecture using the Instrumentation Trace Macrocell (ITM) via two use cases: printf() debugging using GCC/newlib and Function and Data Profiling based on the AUTOSAR application.
Local - Enable and set:
•Source > Sync - Timestamp counter uses the processor system clock. Counter increments on each core clock cycle. No prescaling is available in this mode.
•Source > ASync > Prescaler None - Timestamp counter uses asynchronous clock from the TPIU interface. The clock is connected through configurable Prescaler.
•Source > ASync > Select Prescaler - Configurable Prescaler for clock when using asynchronous source.
Global > Generate - Enable and defines how often the ITM generates a global timestamp, based on the global timestamp clock frequency.
Note: Device might not implement support for global timestamping.
Configure enabled stimulus registers that will generate trace messages. Depending on the ITM implementation in the target device, not all stimulus registers might be available.
Enable ITM timestamps - Configure the CPU to generate ITM timestamp messages.
Timestamp Source - Use ITM generated timestamps as main analyzer time source. This option is intended to be used together with on-chip trace buffer (OCTB / SWO trace), where timestamps would otherwise not be available.
Do not enable this option when parallel trace is being used. When disabled, winIDEA will use the debugger's internal timestamp (which is only possible when parallel trace is being used). For more information check ARM reference manual.
In the Trace window the stimulus register ID is shown in Address column and data written to it in Data column. Click Trace button to open the Trace window.