ICEBreaker Module
ARM7TDMI Data Sheet
ARM DDI 0029E
9-7
O
9.3.1 Hardware breakpoints
To make a watchpoint unit cause hardware breakpoints (ie on instruction fetches):
1
Program its Address Value register with the address of the instruction to be
breakpointed.
2
For a breakpoint in ARM state, program bits [1:0] of the Address Mask register
to 1. For a breakpoint in THUMB state, program bit 0 of the Address Mask to
1. In both cases the remaining bits are set to 0.
3
Program the Data Value register only if you require a data-dependent
breakpoint: ie only if the actual instruction code fetched must be matched as
well as the address. If the data value is not required, program the Data Mask
register to 0xFFFFFFFF (all bits to1), otherwise program it to0x00000000.
4
Program the Control Value register with
nOPC
= 0.
5
Program the Control Mask register with
nOPC
=0, all other bits to 1.
6
If you need to make the distinction between user and non-user mode
instruction fetches, program the
nTRANS
Value and Mask bits as above.
7
If required, program the
EXTERN
,
RANGE
and
CHAIN
bits in the same way.
9.3.2 Software breakpoints
To make a watchpoint unit cause software breakpoints (ie on instruction fetches of a
particular bit pattern):
1
Program its Address Mask register to 0xFFFFFFFF (all bits set to 1) so that
the address is disregarded.
2
Program the Data Value register with the particular bit pattern that has been
chosen to represent a software breakpoint.
If a THUMB software breakpoint is being programmed, the 16-bit pattern must
be repeated in both halves of the Data Value register. For example, if the bit
pattern is 0xDFFF, then 0xDFFFDFFF must be programmed. When a 16-bit
instruction is fetched, ICEbreaker only compares the valid half of the data bus
against the contents of the Data Value register. In this way, a single
Watchpoint register can be used to catch software breakpoints on both the
upper and lower halves of the data bus.
3
Program the Data Mask register to 0x00000000.
4
Program the Control Value register with
nOPC
= 0.
5
Program the Control Mask register with
nOPC
= 0, all other bits to 1.
6
If you wish to make the distinction between user and non-user mode
instruction fetches, program the
nTRANS
bit in the Control Value and Control
Mask registers accordingly.
7
If required, program the
EXTERN
,
RANGE
and
CHAIN
bits in the same way.
Note
The address value register need not be programmed.