You are on page 1of 35

2003 Xilinx, Inc.

All Rights Reserved


Debugging
Debugging - 11 - 3 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Objectives
After completing this module, you will be able to:
Describe GDB functionality
Describe XMD functionality
Describe the integration of GDB with XMD
List supported third-party tools
Debugging - 11 - 4 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Outline
Introduction
GDB Functionality
XMD Functionality
MicroBlaze Processor
PowerPC Processor
Debugging - 11 - 5 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Introduction
Debugging is an integral part of embedded systems development
The debugging process is defined as testing, stabilizing, localizing, and
correcting errors
Two methods of debugging
Hardware debugging via a logic probe, logic analyzer, in-circuit emulator, or
background debugger
Software debugging via a debugging instrument
A software debugging instrument is source code that is added to the program
for the purpose of debugging
Debugging types
Functional debugging
Performance debugging
Debugging - 11 - 6 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Hardware Debugging Support

ChipScope Pro cores are now included for adding to a Platform Studio
design
PLB IBA (Integrated Bus Analyzer)
OPB IBA
VIO (Virtual I/O)
ChipScope Pro evaluation version shipped with EDK
Analyzer evaluation ends after 90 days
Core insertion/generation works indefinitely
Supports Solaris OS and Windows platforms
Linux to be added in an upcoming release
Enables co-debug of software with GNU gdb and hardware with ChipScope
Analyzer

Debugging - 11 - 7 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Simultaneous HW/SW Debug
ChipScope Pro PLB & IBA cores in
target
ChipScope Pro Analyzer on host
GDB debugger on host
XMD supports simultaneous access
over Xilinx parallel cables
PLB/OPB IBA instantiation in XPS
Are treated like the peripheral cores
UART GPIO
On-Chip
Peripheral
Hi-Speed
Peripheral
GB
E-Net
e.g.
Memory
Controller
A
r
b
i
t
e
r
On-Chip Peripheral Bus
A
r
b
i
t
e
r
Processor Local Bus
PowerPC
405 Core
DSOCM
BRAM
ISOCM
BRAM
Bus
Bridge
UART GPIO
On-Chip
Peripheral
UART UART GPIO GPIO
On-Chip
Peripheral
On-Chip
Peripheral
Hi-Speed
Peripheral
GB
E-Net
e.g.
Memory
Controller
Hi-Speed
Peripheral
Hi-Speed
Peripheral
GB
E-Net
GB
E-Net
e.g.
Memory
Controller
e.g.
Memory
Controller
A
r
b
i
t
e
r
On-Chip Peripheral Bus
A
r
b
i
t
e
r
Processor Local Bus
PowerPC
405 Core
DSOCM
BRAM
ISOCM
BRAM
DSOCM
BRAM
DSOCM
BRAM
DSOCM
BRAM
ISOCM
BRAM
ISOCM
BRAM
ISOCM
BRAM
Bus
Bridge
Bus
Bridge
IBA IBA
MicroBlaze
32-Bit RISC Core
MicroBlaze
32-Bit RISC Core
MDM
Set breakpoint in GDB when hit triggers ChipScope
Set trigger in ChipScope when hit halts CPU and debugger stops
Minimal skid-by as cross triggering is done on chip
between IBA cores and PPC & MicroBlaze debug interfaces
Debugging - 11 - 8 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Simultaneous HW/SW Debug
Flexible Soft IP Flexible Soft IP
MicroBlaze
32-Bit RISC Core
MicroBlaze
32-Bit RISC Core
A
r
b
i
t
e
rOPB
On-Chip Peripheral Bus
A
r
b
i
t
e
r
A
r
b
i
t
e
rOPB
On-Chip Peripheral Bus On-Chip Peripheral Bus
MDM MDM
IBA IBA
JTAG JTAG
Flexible Soft IP Flexible Soft IP
MicroBlaze
32-Bit RISC Core
MicroBlaze
32-Bit RISC Core
A
r
b
i
t
e
rOPB
On-Chip Peripheral Bus
A
r
b
i
t
e
r
A
r
b
i
t
e
rOPB
On-Chip Peripheral Bus On-Chip Peripheral Bus
MDM MDM
IBA IBA
JTAG JTAG
XMD
Xilinx Parallel Cable
Active trigger when
addr bus = 0xC200
Trigger out signal
from IBA to CPU
debug halt signal in
Debugging - 11 - 9 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Software Debugging Support
EDK supports software debugging via:
GNU Debugger (GDB) tools
Unified interface for debugging and verifying MicroBlaze and PowerPC
systems
Xilinx Microprocessor Debugger (XMD)
Runs all of the hardware debugging tools and communicates with the hardware
GNU tools communicate with hardware through XMD
Third-party support
Wind River:
SingleStep XE debugger
visionPROBE II XE debugger
Nohau:
EMUL-MicroBlaze-PC debugger
Debugging - 11 - 10 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Outline
Introduction
GDB Functionality
XMD Functionality
MicroBlaze Processor
PowerPC Processor
Debugging - 11 - 11 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
GDB Functionality
User
Interface
User
Interface
Target Hardware
(TCP/IP) (TCP/IP)
GDB Remote
Protocol
GDB Remote
Protocol
JTAG UART
PowerPC System
MicroBlaze System
PPC405 Debug Port JTAG
UART
UARTlite
XMD stub
Host Software
PowerPC-eabi-gdb
Host Software
mb-gdb
Host Software
Tcl/Terminal Interface
XMD
JTAG
MB Cycle-Accurate
Instruction Set Simulator
JTAG
MicroBlaze System
MDM
Host Software
Debugging - 11 - 12 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
GDB Functionality
GDB is a source-level debugger that helps you debug your program:
Start your program
Set breakpoints (make your program stop on specified conditions)
Examine what has happened, when your program encounters breakpoints
Registers
Memory
Stack
Variables
Expressions
Change things in your program, so you can experiment with correcting the
effects of one bug and go on to learn about another
You can use GDB to debug programs written in C and C++
Debugging - 11 - 13 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
GDB
Memory
Location
Assembly
Instructions
C Code
Debugging - 11 - 14 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
GDB GUI
Run-time control
S: Step by source lines (Step into functions)
SI: Step by machine instruction
C: Continue to next breakpoint
N: Next source line (Steps over functions)
NI: Next machine instruction
F: Finish (Ignores all breakpoints)
Debugging - 11 - 15 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
GDB Functionality
Breakpoints can be enabled or disabled
To change any memory value, simply double-click in a memory field
Debugging - 11 - 16 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
GDB Functionality
Blue represents registers that have changed
To change any value, double-click in a field
Debugging - 11 - 17 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Outline
Introduction
GDB Functionality
XMD Functionality
MicroBlaze Processor
PowerPC Processor

Debugging - 11 - 18 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
XMD Functionality
User
Interface
User
Interface
Target Hardware
(TCP/IP) (TCP/IP)
GDB Remote
Protocol
GDB Remote
Protocol
JTAG UART
PowerPC System MicroBlaze System
PPC405 Debug Port JTAG
UART
UARTlite
XMD stub
Host Software
PowerPC-eabi-gdb
Host Software
mb-gdb
Host Software
Tcl/Terminal Interface
XMD
JTAG
MB Cycle-Accurate
Instruction Set Simulator
JTAG
MicroBlaze System
MDM
Host Software
Debugging - 11 - 19 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
XMD Functionality
Xilinx Microprocessor Debug (XMD) engine
A program that facilitates a unified GDB interface
A Tcl (Tool command language) interface
XMD supports debugging user programs on different targets
Cycle-accurate MicroBlaze processor instruction set simulator
MicroBlaze system running xmdstub on a hardware board
MicroBlaze system using MDM peripheral
PowerPC system on a hardware board
mb-gdb and powerpc-eabi-gdb communicate with xmd by using the
Remote TCP protocol and control the corresponding targets
GDB can connect to xmd on the same computer or on a remote
computer on the Internet
Debugging - 11 - 20 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
XMD Tcl Interface
x? - lists all Tcl commands
xrmem target addr [num] - Reads num bytes or 1 byte from the
memory address addr
xwmem target addr value - Writes an 8-bit byte value at the specified
memory addr
xrreg target [reg] - Reads all registers or only register number reg
xwreg target reg value - Writes a 32-bit value into register number reg
xdownload target [-data] filename [addr] - Downloads the given ELF
or data file (with -data option) onto the memory of the current target
xcontinue target [addr] - Continues execution from the current PC or
from the optional address argument
xstep target - Single steps one MicroBlaze processor instruction. If
the PC is at an IMM instruction, the next instruction is executed as well
Debugging - 11 - 21 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Outline
Introduction
GDB Functionality
XMD Functionality
MicroBlaze Processor
PowerPC Processor
Debugging - 11 - 22 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
MicroBlaze Processor: XMD
There are three ways to
debug MicroBlaze
processor code:
OPB JTAG UART core
Intrusive: requires
xmdstub software
OPB UART core
Intrusive: requires
xmdstub software
OPB MDM core
Non-intrusive: hardware
interface
MicroBlaze
(TCP/IP)
GDB Remote
Protocol
UART
Host Software
mb-gdb
Host Software
Tcl/Terminal Interface
XMD
JTAG
MB Cycle-Accurate
Instruction Set Simulator
JTAG
JTAG
UART
UART MDM
OPB Bus
Debugging - 11 - 23 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
MicroBlaze Processor: XMD
MicroBlaze processor stub target (xmdstub)
User programs can be downloaded or executed directly from mb-gdb

To debug programs on the hardware by using xmdstub
1. A JTAG UART or a UART must be included in the hardware system
2. A JTAG UART or a UART must be specified as the DEBUG_PERIPHERAL
3. The xmdstub executable must be included in the MicroBlaze processors
local memory at system startup
Sample session of XMD with a hardware stub target
XMD% mbconnect stub -comm jtag -posit 2
Connect to a MicroBlaze processor target via a stub, using JTAC
communication, and an FPGA which is second in the JTAG chain
Debugging - 11 - 24 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
MicroBlaze Processor: XMD
MicroBlaze processor simulator target
mb-gdb and xmd can be used to debug programs on the cycle-accurate
simulator built into XMD
Simulator target requirements
Programs should be compiled for debugging and should be linked with the
startup code in crt0.o
Programs can have a maximum size of 64 KB only
Does not support the simulation of OPB peripherals
Sample session of XMD and GDB
XMD% mbconnect sim
Debugging - 11 - 25 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
MicroBlaze Processor: XMD
MicroBlaze processor MDM (hardware OPB_MDM debug core
on-board)
The MDM target supports non-intrusive debugging by using:
Hardware breakpoints
Hardware single step
This removes the need to run xmdstub
This removes the requirement to have large memory
Sample session of XMD and GDB
XMD% mbconnect mdm

Debugging - 11 - 26 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
XMD Options
mbconnect <sim|stub|mdm> [options]
Simulator target options
-memsize size
xmdstub target options
-comm <serial|jtag>
-posit device position
-chain device count <list of BSDL files>
-port serial port
-baud baud rate
Debugging - 11 - 27 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Outline
Introduction
GDB Functionality
XMD Functionality
MicroBlaze Processor
PowerPC Processor
Debugging - 11 - 28 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
PowerPC Processor: XMD
Use xmd to connect a hardware
PowerPC target over a JTAG
connection to a board containing
a Virtex-II Pro device
Use the ppcconnect command
to connect to the PowerPC
processor target and start a
remote GDB server

(TCP/IP)
GDB Remote
Protocol
JTAG
PowerPC System
PPC405 Debug Port
Host Software
PowerPC-eabi-gdb
Host Software
Tcl/Terminal Interface
XMD
Debugging - 11 - 29 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
A Debugging Sample
Compile with the debugging option
1
Download the bitstream
2
This will go through the necessary steps,
generate a bitstream file, and download
the file
Debugging - 11 - 30 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Start XMD
Start the XMD shell
3
In XMD, type ppc to
connect to the hardware
4
This opens a connection with the hardware,
indicating the connecting port, caches, DCR,
TLB enabled or not
Debugging - 11 - 31 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Start Software Debugger
Start Software Debugger
5
A source code window
will be displayed
6
Change the code window display from SOURCE
to MIXED to show C and assembly code
Debugging - 11 - 32 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Software Debugger Connect
A window displaying
C and assembly code
7
Select the target as
Remote/TCP: XMD
8
Enter that port number that was
displayed during ppc-connect
Debugging - 11 - 33 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Debug Program
Set any breakpoints as necessary
9
Click the Run button
10
When a breakpoint is encountered, the
debugger will stop
11
View the necessary windows
12
Exit debugger by typing quit in the
console window
Debugging - 11 - 35 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Review Questions
What is the XMD command line used to connect to a MicroBlaze
processor core via JTAG?

What is the advantage of using MDM over a JTAG UART?

Into what parts of the design do debuggers provide visibility?

Debugging - 11 - 36 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Answers
What is the XMD command line used to connect to a MicroBlaze
processor core via JTAG?
XMD% mbconnect stub -comm jtag -posit 2
What is the advantage of using MDM over a JTAG UART?
Non-intrusive
Less memory required
Into what parts of the design do debuggers provide visibility?
Registers
Memory
Stack
Variables
Expressions
Debugging - 11 - 37 2003 Xilinx, Inc. All Rights Reserved
For Academic Use Only
Where Can I Learn More?
Tool documentation
Embedded System Tools Guide GNU Compiler Tools
Embedded System Tools Guide GNU Debugger
Embedded System Tools Guide Xilinx Microprocessor Debugger
Support website
EDK Home Page: support.xilinx.com/edk

You might also like