ARM CORTEX-M3
Instrumentation Trace Microcell
Date Published: | |
Last Modified: |
The ITM can be used to redirect `printf()` function calls. This allows a `printf()` style debugging capabilities on an embedded platform, which typically doesn't have a standard terminal window for output.
The ITM is part of the Coresight debugging and trace system, shown in the right of the below diagram.

The ARM Cortex-M3 Coresight debug and trace overview diagram. Image from http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm.
printf()
ultimately relies on the function fputc()
to do the low-level character outputting. So this is the function we are going to replace. The following code shows the re-definition of fputc()
.
|
|
Note that the passed in file argument f
is ignored altogether.
ITM_SendChar()
is a Cortex-M3 function provided by ARM and is defined in core_cm3.h
. The declaration of it is shown below (for reference purposes).
|
|
Authors

This work is licensed under a Creative Commons Attribution 4.0 International License .