User manual
Operation
© 2008 Microchip Technology Inc. DS51616B-page 25
2.7.2 Debugging Details
Figure 2-14 illustrates the MPLAB REAL ICE in-circuit emulator system when it is ready
for debugging.
FIGURE 2-14: MPLAB
®
REAL ICE™ IN-CIRCUIT EMULATOR READY FOR
DEBUGGING
Typically, in order to find out if an application program will run correctly, a breakpoint is
set early in the program code. When a breakpoint is set from the user interface of
MPLAB IDE, the address of the breakpoint is stored in the special internal debug
registers of the target device. Commands on PGC and PGD communicate directly to
these registers to set the breakpoint address.
Next, the Debugger>Run
function or the Run icon (forward arrow) is usually pressed
from MPLAB IDE. The emulator will then tell the debug executive to run. The target will
start from the Reset vector and execute until the Program Counter reaches the
breakpoint address previously stored in the internal debug registers.
After the instruction at the breakpoint address is executed, the in-circuit debug
mechanism of the target device “fires” and transfers the device’s Program Counter to
the debug executive (much like an interrupt) and the user’s application is effectively
halted. The emulator communicates with the debug executive via PGC and PGD, gets
the breakpoint status information and sends it back to MPLAB IDE. MPLAB IDE then
sends a series of queries to the emulator to get information about the target device,
such as file register contents and the state of the CPU. These queries are ultimately
performed by the debug executive.
The debug executive runs just like an application in program memory. It uses some
locations on the stack for its temporary variables. If the device does not run, for
whatever reason, such as no oscillator, a faulty power supply connection, shorts on the
target board, etc., then the debug executive cannot communicate to the MPLAB REAL
ICE in-circuit emulator and MPLAB IDE will issue an error message.
Another way to get a breakpoint is to press the MPLAB IDE’s Halt button (the “pause”
symbol to the right of the Run arrow). This toggles the PGC and PGD lines so that the
in-circuit debug mechanism of the target device switches the Program Counter from the
user’s code in program memory to the debug executive. Again, the target application
program is effectively halted, and MPLAB IDE uses the emulator communications with
the debug executive to interrogate the state of the target device.
+5V
+12V
4.7 k
Ω
4.7 k
Ω
Internal Circuits
Program
Memory
File
Registers
Internal
Debug
Registers
VPP/MCLR
PGC
PGD
1
5
4
Executive
Debug
Area Used by
Target
be
Running
must
for Debug
Executive
to Function
Area
VDD
Hardware
Stack Shared
by Debug Exec
Debug Exec
Reserved
for Debug
Executive