PQIII Debugger | 14
©
1989-2021 Lauterbach GmbH
1. The source of the data access (read and/or write) must be the core, as the data address
breakpoints are part of the core. Any other accesses from on-chip or off-chip peripherals (DMA
etc.) will not be recognized by the data address breakpoints.
2. The data being targeted must be qualified by an address in memory. It is not possible to set a
data address breakpoint to GPR, SPR etc.
Breakpoints on Data Access at Program Address
A normal data access breakpoint as described above hits on all data accesses to the memory address or
address range, independent of the program address which caused the access. It is also possible to set a
data address breakpoint which only hits if the access is performed from a specified program address. The
specified program address must be a load or store instruction.
The program address can also be an address range or a range of debug symbols:
Breakpoints on Data Value
The e500 core does not support onchip breakpoints on data values, but TRACE32 supports them by
software emulation. When a data value breakpoint is set, the debugger will use one of the data address
breakpoint s. When the core hits that breakpoint, the target application will stop and the debugger will
evaluate if the data value matches. If the value matches, the debugger will stop execution, if it does not
match, the debugger will restart the application. Using software emulated data value breakpoints will cause
the target application to slow down.
;Break if the instruction at address 0x40001148 reads from variable count
Break.Set 0x40001148 /MemoryRead count
;Break if the instruction at address 0x40001148 writes to range
Break.Set 0x40001148 /MemoryWrite 0xFFFFF000--0xFFFFFFFF
;Break on all accesses to count from code of the address range
Break.Set 0x40000100--0x400001ff /MemoryReadWrite count
;Break if variable nMyIntVar is written by an interrupt handler
;(debug symbols IVORxx_Handler loaded from debug symbols)
Break.Set IVOR0_Handler--IVOR15_Handler /MemoryWrite nMyIntVar
;Break if variable nTestValue is written within function test_func
Break.Set sYmbol.RANGE(test_func) /MemoryWrite nTestValue
;Break if variable nTestValue is written outside of test_func
Break.Set sYmbol.RANGE(test_func) /EXclude /MemoryWrite nTestValue