beautypg.com

B.9 debugging basics, B.9.1 overview, B.9.2 hardware and software breakpoints – Intel IQ80333 User Manual

Page 67: B.9.2.1 software breakpoints, B.9.2.2 hardware breakpoints

background image

Customer Reference Board Manual

67

B.9

Debugging Basics

B.9.1

Overview

Debuggers allow developers to interrogate application code by allowing program flow control, data
observation, and data manipulation. The flow control functions include the ability to single-step
through the code, step into functions, step over functions, and run to breakpoint (hardware or
software). The data observation and manipulation functions include access to memory, registers, and
variables. The combination of the flow control and data functions allows the developer to debug
problems as they occur or to validate the application code. As the size of an application grows, the
need to be able to narrow down the cause of a problem to a few lines of code is imperative.

Debuggers have a finite set of capabilities and limitations. Debuggers can give insight that is difficult
to obtain without them, but they can fail when they are not used within the limits of their
functionality. They are intrusive by definition. They are software programs that interact with software
monitors or hardware (JTAG) to control a target program. Ultimately, the debugger works best when
the developer understands what it can and can not do and uses it within those constraints.

B.9.2

Hardware and Software Breakpoints

The following section provides a brief overview of breakpoints. See the Intel

®

80333 I/O Processor

Developer’s Manual, for more detailed information.

B.9.2.1

Software Breakpoints

Software breakpoints are setup and utilized via debugger utilities (such as Code|Lab). The abilities of
software breakpoints were seen in

Section B.7

of this Guide. Program execution can be halted at a

particular line of code, stepped through, and executed again to the next breakpoint via debuggers.

During this process, register values, memory address contents, variable contents, and many other
useful pieces of information can be monitored.

B.9.2.2

Hardware Breakpoints

Hardware breakpoints step and breakpoint in code in either ROM or RAM without altering the code,
stacks, or other target information. Hardware breakpoints handle difficult issues, by providing the
ability to set the processor conditions that cause the program to halt. Use hardware breakpoints to
locate problems such as reentrance, obscure timing, etc.

The 80333 contains two instruction breakpoint address registers (IBCR0 and IBCR1), one data
breakpoint address register (DBR0), one configurable data mask/address register (DBR1), and one
data breakpoint control register (DBCON). The 80333 also supports a 256 entry, trace buffer, that
records program execution information. The registers to control the trace buffer are located in CP14.