beautypg.com

2 determining system state – Epson ARM.POWERED ARM720T User Manual

Page 160

background image

9: Debugging Your System

9-28

EPSON

ARM720T CORE CPU MANUAL

All these instructions execute at debug speed. Debug speed is much slower than system speed.

This is because between each core clock, 33 clocks occur in order to shift in an instruction, or

shift out data. Executing instructions this slowly is acceptable for accessing the core state

because the ARM720T processor is fully static. However, you cannot use this method for

determining the state of the rest of the system.
While in debug state, only the following instructions can be scanned into the instruction

pipeline for execution:

all data processing operations

all load, store, load multiple, and store multiple instructions

MSR and MRS.

9.16.2

Determining system state

To meet the dynamic timing requirements of the memory system, any attempt to access

system state must occur with the clock qualified by HCLKEN. To perform a memory access,

HCLKEN must be used to force the ARM720T processor to run in normal operating mode. This

is controlled by bit 33 of scan chain 1.
An instruction placed in scan chain 1 with bit 33, the DBGBREAK bit, LOW executes at debug

speed. To execute an instruction at system speed, the instruction prior to it must be scanned

into scan chain 1 with bit 33 set HIGH.
After the system speed instruction has scanned into the data bus and clocked into the pipeline,

the RESTART instruction must be loaded into the TAP controller. RESTART causes the

ARM720T processor to:

1

Switch automatically to HCLKEN control.

2

Execute the instruction at system speed.

3

Reenter debug state.

When the instruction has completed, DBGACK is HIGH and the core reverts to DBGTCKEN

control. It is now possible to select INTEST in the TAP controller and resume debugging.
The debugger must look at both DBGACK and HTRANS[1:0] to determine whether a system

speed instruction has completed. To access memory, the ARM720T core drives both bits of

HTRANS[1:0] LOW after it has synchronized back to system speed. This transition is used by

the memory controller to arbitrate whether the ARM720T core can have the bus in the next

cycle. If the bus is not available, the ARM720T processor might have its clock stalled

indefinitely. The only way to determine whether the memory access has completed is to

examine the state of both HTRANS[1:0] and DBGACK. When both are HIGH, the access has

completed.
The debugger usually uses EmbeddedICE-RT to control debugging, and so the state of

HTRANS[1:0] and DBGACK can be determined by reading the EmbeddedICE-RT status

register. See

Debug status register

on page 9-41 for more details.

The state of the system memory can be fed back to the debug host by using system speed load

multiples and debug speed store multiples.
There are restrictions on which instructions can have bit 33 set. The valid instructions on

which to set this bit are:

loads

stores

load multiple

store multiple.

See also

Exit from debug state

on page 9-29.