µVision User's GuideAbout µVision User Interface Creating Applications Debugging Start Debugging Start Energy Measurement without Debug Application Program Execution Debug Windows and Dialogs Breakpoints Window Call Stack and Locals Window Code Coverage Command Window Component Viewer Disassembly Window Editor Window Event Recorder Setup Event Recorder Event Recorder Window Events Filtering Event Statistics Window Post-mortem Analysis Event Viewer Execution Profiler Instruction Trace Window System Analyzer Usage tips Save System Analyzer Contents Statistics Restrictions Logic Analyzer Setup Setup in Detail Restrictions Cortex-M Trace Configuration Memory Map Memory Window Performance Analyzer Registers Window Serial Window Debug (printf) Viewer Symbols Window System Viewer Adding System Viewer Windows System and Thread Viewer Thread States Toolbox Trace Data Window Trace Navigation Trace Exceptions Event Counters ULINKplus Window Watch Window Core Peripherals Cortex-M0 and Cortex-M0+ Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports (Cortex-M0+ only) Cortex-M3, Cortex-M4, and Cortex-M7 Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports Memory Protection Unit Cortex-M23 and Cortex-M33 Nested Vector Interrupt Controller System Control and Configuration System Tick Timer Fault Reports Memory Protection Unit Security Attribution Unit Debug Scripting Expressions Constants System Variables Peripheral Variables I/O Ports Serial Ports Program Variables (Symbols) Fully Qualified Symbols Non-Qualified Symbols Literal Symbols Using Symbols Line Numbers Bit Addresses Type Specifications Memory Attribution Specifiers Operators Differences between µVision and C Expression Examples Code and Data Trace (Cortex-M) Trace Features Configuring Trace Tracepoint Expressions Tracepoint Intrinsics Tracepoint Limitations Tracepoint Marks Tips and Tricks Review Peripherals and CPU Configuration Simulate I/O Ports Simulate Interrupts and Clock Inputs Simulate external I/O Devices Assign Serial I/O to a PC COM Port Check Illegal Memory Access Command Input from File Preset I/O Ports or Memory Contents Write Debug Output to a File Keyboard Shortcuts TPIU Initialization after RESET (Cortex-M) Prevent Opening Files Show Japanese Messages Debug Commands Debug Functions Simulation Flash Programming Dialogs Utilities Command Line Example Programs Appendix
Arm Cortex-M processor-based devices use Arm CoreSight Trace Macrocells to offer a powerful set of trace features. These provide additional means to analyze the program behavior beyond traditional debugger functionality and common debug techniques like "printf"-debugging.
Trace Units and Features
Micro Trace Buffer (MTB) is optionally available on various Cortex-M architectures (often present in Cortex-M0+ based devices, but also possible for Cortex-M23, Cortex-M33 and Cortex-M7). The MTB collects information on non-sequential Program Counter changes and allows the reconstruction of the instruction trace.
The Data Watchpoint and Trace Unit (DWT), the Instrumentation Trace Macrocell (ITM), and the Embedded Trace Macrocell (ETM) can optionally be implemented on Cortex-M3/M4/M7/M23/M33 processor-based devices. These provide the following trace features:
One or more of the following optional trace interfaces can be implemented on a Cortex-M device:
ETB vs. Streaming Trace
Streaming trace is a powerful method of capturing a gap-less stream of trace data from the running target. Besides enabling debuggers to process and display trace data in real-time, it is possible to store the complete trace data from a long target run. This length is only limited by the host PC’s disk space.
Optionally an ETB can be implemented close to the processor core. It stores the trace data, which are then read via a register interface. However, the ETB has limited storage.
The data stream capture can be controlled and filtered by using tracepoints.
of your data.