© 2003 xilinx, inc. all rights reserved debugging

35
© 2003 Xilinx, Inc. All Rights Reserved Debugging

Upload: kelly-richard

Post on 16-Dec-2015

228 views

Category:

Documents


0 download

TRANSCRIPT

© 2003 Xilinx, Inc. All Rights Reserved

Debugging

Debugging - 11 - 2 © 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 - 3 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Outline

• Introduction• GDB Functionality• XMD Functionality

– MicroBlaze Processor– PowerPC Processor

Debugging - 11 - 4 © 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 - 5 © 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 - 6 © 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 GPIOOn-Chip

PeripheralHi-Speed

PeripheralGB

E-Net

e.g.Memory

Controller

ArbiterOn-Chip Peripheral Bus

Arb

iter

Processor Local Bus

PowerPC405 Core

DSOCMBRAM

ISOCMBRAM

BusBridge

UART GPIOOn-Chip

PeripheralUARTUART GPIOGPIO

On-ChipPeripheralOn-Chip

PeripheralHi-Speed

PeripheralGB

E-Net

e.g.Memory

Controller

Hi-SpeedPeripheralHi-Speed

PeripheralGB

E-NetGB

E-Net

e.g.Memory

Controller

e.g.Memory

Controller

ArbiterOn-Chip Peripheral Bus

Arb

iter

Processor Local Bus

PowerPC405 Core

DSOCMBRAM

ISOCMBRAM

DSOCMBRAM

DSOCMBRAM

DSOCMBRAM

ISOCMBRAMISOCMBRAMISOCMBRAM

BusBridge

BusBridge

IBAIBA

MicroBlaze32-Bit RISC CoreMicroBlaze

32-Bit RISC CoreMDM

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 - 7 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Simultaneous HW/SW Debug

Flexible Soft IPFlexible Soft IPMicroBlaze

32-Bit RISC CoreMicroBlaze

32-Bit RISC Core

Arb

iter OPB

On-Chip Peripheral Bus

Arb

iter

Arb

iter OPB

On-Chip Peripheral BusOn-Chip Peripheral Bus

MDMMDM

IBAIBA

JTAGJTAG Flexible Soft IPFlexible Soft IPMicroBlaze

32-Bit RISC CoreMicroBlaze

32-Bit RISC Core

Arb

iter OPB

On-Chip Peripheral Bus

Arb

iter

Arb

iter OPB

On-Chip Peripheral BusOn-Chip Peripheral Bus

MDMMDM

IBAIBA

JTAGJTAG

XMDXMD

Xilinx Parallel Cable

Active trigger when addr bus = 0xC200

Trigger out signal from IBA to CPU debug halt signal in

Debugging - 11 - 8 © 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 - 9 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Outline

• Introduction• GDB Functionality• XMD Functionality

– MicroBlaze Processor– PowerPC Processor

Debugging - 11 - 10 © 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 - 11 © 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 - 12 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

GDB

MemoryLocation

AssemblyInstructions

C Code

Debugging - 11 - 13 © 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 - 14 © 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 - 15 © 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 - 16 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Outline

• Introduction• GDB Functionality• XMD Functionality

– MicroBlaze Processor– PowerPC Processor

Debugging - 11 - 17 © 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 - 18 © 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 - 19 © 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 - 20 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Outline

• Introduction• GDB Functionality• XMD Functionality

– MicroBlaze Processor– PowerPC Processor

Debugging - 11 - 21 © 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

interfaceMicroBlaze

(TCP/IP)

GDB Remote Protocol

UART

Host Software

mb-gdb

Host Software

Tcl/Terminal Interface

XMD

JTAG

MB Cycle-Accurate Instruction Set Simulator

JTAG

JTAGUART UART MDM

OPB Bus

Debugging - 11 - 22 © 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 xmdstub1. A JTAG UART or a UART must be included in the hardware system2. A JTAG UART or a UART must be specified as the DEBUG_PERIPHERAL3. The xmdstub executable must be included in the MicroBlaze processor’s

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 - 23 © 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 - 24 © 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 - 25 © 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 - 26 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Outline

• Introduction• GDB Functionality• XMD Functionality

– MicroBlaze Processor– PowerPC Processor

Debugging - 11 - 27 © 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 - 28 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

A Debugging Sample

Compile with the debugging optionCompile with the debugging option1

Download the bitstreamDownload the bitstream2

This will go through the necessary steps, generate a bitstream file, and download the file

Debugging - 11 - 29 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Start XMD

Start the XMD shellStart the XMD shell3

In XMD, type ppc to connect to the hardware

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 - 30 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Start Software Debugger

Start Software DebuggerStart Software Debugger5

A source code window will be displayed

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 - 31 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Software Debugger Connect

A window displayingC and assembly code

A window displayingC and assembly code

7

Select the target as Remote/TCP: XMD

Select the target as Remote/TCP: XMD

8

Enter that port number that was displayed during ppc-connect

Debugging - 11 - 32 © 2003 Xilinx, Inc. All Rights Reserved For Academic Use Only

Debug Program

Set any breakpoints as necessarySet any breakpoints as necessary9

Click the Run buttonClick the Run button10

When a breakpoint is encountered, the debugger will stop

When a breakpoint is encountered, the debugger will stop

11

View the necessary windowsView the necessary windows12

Exit debugger by typing quit in the console window

Debugging - 11 - 34 © 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 - 35 © 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 - 36 © 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