4.12.3. Using the EmbeddedICE logic values

The register address field in the EmbeddedICE logic scan chain is the coprocessor zero register number. For more information about the EmbeddedICE logic, refer to one of the ARM technical reference manuals on an ARM core with debug capabilities (for example, ARM7TDI or ARM9TDMI).

You can read EmbeddedICE logic registers freely in this manner, but writing to them requires more care. This is because the Multi-ICE DLL also uses EmbeddedICE logic registers to set up breakpoints and watchpoints. When you write to an EmbeddedICE logic register (for example, using the ADW command cwrite 0 20 0x44), the Multi-ICE DLL checks to see if that breakpoint register is in use. If it is, the Multi-ICE DLL attempts to free it by degrading hardware breakpoints to software breakpoints. It then sets a lock on that breakpoint register so that the Multi-ICE DLL makes no further attempt to use it.

You can find out the breakpoints that have been locked by displaying the value of icebreaker_lockedpoints. You can also write to this variable to unlock breakpoints. In the ARM7 and ARM9 processor families, the breakpoints are numbered 1 and 2, and bits 1 and 2 in icebreaker_lockedpoints indicate their status.

If a breakpoint or watchpoint that has been defined by writing to coprocessor zero is taken, the Multi-ICE DLL halts execution with the report Unknown Watchpoint. This indicates the breakpoint was outside the control of the Multi-ICE DLL.

Note

Do not write to EmbeddedICE logic registers 0 and 1, the control and status registers. The Multi-ICE DLL uses these to perform many of its operations and changes you make are likely to be lost or to cause the DLL to malfunction.

Debugger requests to read or write EmbeddedICE logic registers do not necessarily cause the registers to be read or written immediately. This is because, for efficiency, the Multi-ICE software only updates the registers just before execution of the program is resumed.

Copyright © 1998-2002 ARM Limited. All rights reserved.ARM DUI 0048F
Non-Confidential