MM912_634 Advance Information, Rev. 10.0
Freescale Semiconductor
221
the disarmed state0. If tracing is enabled a breakpoint request can occur at the end of the tracing session. If neither tracing nor
breakpoints are enabled then when the final state is reached it returns automatically to state0 and the debug module is disarmed.
5.32.4.5
Trace Buffer Operation
The trace buffer is a 64 lines deep by 20-bits wide RAM array. The DBG module stores trace information in the RAM array in a
circular buffer format. The system accesses the RAM array through a register window (DBGTBH:DBGTBL) using 16-bit wide
word accesses. After each complete 20-bit trace buffer line is read, an internal pointer into the RAM increments so that the next
read receives fresh information. Data is stored in the format shown in
Table 325 and
Table 329. After each store the counter
register DBGCNT is incremented. Tracing of CPU activity is disabled when the BDM is active. Reading the trace buffer whilst the
DBG is armed returns invalid data and the trace buffer pointer is not incremented.
5.32.4.5.1
Trace Trigger Alignment
the end or the beginning of a tracing session.
If end alignment is selected, tracing begins when the ARM bit in DBGC1 is set and State1 is entered; the transition to Final State
signals the end of the tracing session. Tracing with Begin-Trigger starts at the opcode of the trigger. Using end alignment or when
the tracing is initiated by writing to the TRIG bit whilst configured for begin alignment, tracing starts in the second cycle after the
DBGC1 write cycle.
5.32.4.5.1.1
Storing with Begin Trigger Alignment
Storing with begin alignment, data is not stored in the Trace Buffer until the Final State is entered. Once the trigger condition is
met the DBG module remains armed until 64 lines are stored in the Trace Buffer. If the trigger is at the address of the
change-of-flow instruction the change of flow associated with the trigger is stored in the Trace Buffer. Using begin alignment
together with tagging, if the tagged instruction is about to be executed then the trace is started. Upon completion of the tracing
session the breakpoint is generated, thus the breakpoint does not occur at the tagged instruction boundary.
5.32.4.5.1.2
Storing with End Trigger Alignment
Storing with end alignment, data is stored in the Trace Buffer until the Final State is entered, at which point the DBG module
becomes disarmed and no more data is stored. If the trigger is at the address of a change of flow instruction, the trigger event is
not stored in the Trace Buffer. If all trace buffer lines have been used before a trigger event occurs then the trace continues at
the first line, overwriting the oldest entries.
5.32.4.5.2
Trace Modes
Four trace modes are available. The mode is selected using the TRCMOD bits in the DBGTCR register. Tracing is enabled using
the TSOURCE bit in the DBGTCR register. The modes are described in the following subsections.
5.32.4.5.2.1
Normal Mode
In Normal Mode, change of flow (COF) program counter (PC) addresses are stored.
COF addresses are defined as follows:
Source address of taken conditional branches (long, short, bit-conditional, and loop primitives)
Destination address of indexed JMP, JSR, and CALL instruction
Destination address of RTI, RTS, and RTC instructions
Vector address of interrupts, except for BDM vectors
LBRA, BRA, BSR, BGND as well as non-indexed JMP, JSR, and CALL instructions are not classified as change of flow and are
not stored in the trace buffer.
Stored information includes the full 18-bit address bus and information bits, which contains a source/destination bit to indicate
whether the stored address was a source address or destination address.
NOTE
When a COF instruction with destination address is executed, the destination address is
stored to the trace buffer on instruction completion, indicating the COF has taken place. If
an interrupt occurs simultaneously then the next instruction carried out is actually from the
interrupt service routine. The instruction at the destination address of the original program
flow gets executed after the interrupt service routine.