11.3.2 Overview

When enabled, MTB records changes in program flow reported by the Cortex-M0+ processor over the execution trace interface shared between the Cortex-M0+ processor and the CoreSight MTB-M0+. This information is stored as trace packets in the SRAM by the MTB. An off-chip debugger can extract the trace information using the Debug Access Port to read the trace information from the SRAM. The debugger can then reconstruct the program flow from this information.

The MTB simultaneously stores trace information into the SRAM, and gives the processor access to the SRAM. The MTB ensures that trace write accesses have priority over processor accesses.

The execution trace packet consists of a pair of 32-bit words that the MTB generates when it detects the processor PC value changes non-sequentially. A non-sequential PC change can occur during branch instructions or during exception entry. Refer to the “CoreSight MTB-M0+ Technical Reference Manual” for details on the MTB execution trace packet format.

Tracing is enabled when the MASTER.EN bit in the Host Trace Control Register is 1. There are various ways to set the bit to 1 to start tracing, or to 0 to stop tracing. Refer to the “CoreSight Cortex-M0+ Technical Reference Manual” for details on the Trace start and stop and for a detailed description of the MTB’s MASTER register. The MTB can be programmed to stop tracing automatically when the memory fills to a specified watermark level or to start or stop tracing by writing directly to the MASTER.EN bit. If the watermark mechanism is not being used and the trace buffer overflows, then the buffer wraps around overwriting previous trace packets.

The base address of the MTB registers is 0x41008000, and this address is also written in the CoreSight ROM table. The offset of each register from the base address is fixed and as defined by the “CoreSight MTB-M0+ Technical Reference Manual”. The MTB has the following four programmable registers to control the behavior of the trace features:

  • The POSITION register: Contains the trace write pointer and the wrap bit.
  • The MASTER register: Contains the main trace enable bit and other trace control fields.
  • The FLOW register: Contains the WATERMARK address and the AUTOSTOP and AUTOHALT control bits.
  • The BASE register: Indicates where the SRAM is located in the processor memory map. This register is provided to enable auto discovery of the MTB SRAM location, by a debug agent.

Refer to the “CoreSight MTB-M0+ Technical Reference Manual” for a detailed description of these registers.