Most of the ARM7/ ARM9 chips includes a JTAG interface.
The interface consists of five signal lines. This lines are dedicated for JTAG (in the most cases).

There are two types of JTAG.
The level of the pin "JTAGSEL" at reset state selects the JTAG mode. This selection
can only changed using a reset with an other level at JTAGSEL.

JTAG boundary scan

JTAG boundary scan can be used for getting control of the output cells. A special
chain is inserted between the processor core and the output and input signals.
The core is disconnected from the periphery. The inserted scan chain enables
setting of the output signals. The input signals can be read using the input cells.
For bidirectional pins exists two cells, one for input and one for output.
There are also some control cells, which enables some outputs signals (data and address lines).
JTAG boundary scan can be used to trigger special pins to check the board. If you
build a flash memory access sequence, you can program the flash. But this takes a lot of time,
because the used scan chain is very long.


JTAG ICE selects a scan chain between the processor core and the internal bus.
This enables the modification of the processor registers. It is possible to run or to
stop the core. The difference to the boundary scan mode is that the core is always needed.
If the core is stopped the needed core clock is generated if the TAP enters the "IDLE" state.
ICE can be used to save and start small programs inside the RAM
(internal and/ or external). So it is possible to burn the flashes for the first time.