Debugging Tools for Embedded Systems – Blog Entry by Greg Davis

Embedded Planet has standard products and custom designs that span a wide range of 32-bit and 64-bit processor architectures and processor families.  These include Power (formerly PowerPC), ARM, and MIPS architectures.  Additionally EP products incorporate devices with Coldfire, 8051, and other types of microcontroller cores.  These various board designs and processing devices require using debuggers or debugging tools for initial board bring-up, firmware porting, OS porting, and ongoing production support.

Embedded Planet works with many different types of debuggers and emulators from many different vendors. Some examples include the Abatron BDI3000, Freescale USB TAP for Power Architecture, Wind River Probe, Green Hills Probe, OCDemon from Macraigor Systems, and Texas Instruments XDS Emulators and CC Debugger to name just a few.  Many of these debuggers provide the flexibility needed to support many different processor architectures and processor families.

In all cases the ability to access internal registers and memory, download code, step through code, and set hardware and software breakpoints is essential for initial board bring-up and hardware debug, and for initialization and boot code development.  Most often EP defaults to the BDI3000 debugger for u-boot and Linux work.  The BDI supports JTAG debug for Power, ARM, and MIPS processors; it also supports BDM debug for ColdFire and MPC8xx.  Many of the previously mentioned debugging tools also provide this flexibility and support.

The BDI is configured for a specific architecture through a firmware change. It is configured for a specific processor from a TFTP downloaded configuration file.  This configuration file can be edited to have the BDI program processor registers to enable read/write access to physical device memory, manipulate I/O, and to program FLASH memory.  A TFTP downloaded register file defines memory addresses of internal processor registers to give easy access.  Both the configuration file and register file can be modified using a text editor.  A simple, Telnet accessed command line interface provides the ability to examine processor state, read/write registers and memory locations, dump memory, set breakpoints, start program execution, and more.  The bdiGDB firmware supports Linux kernel debugging when the MMU is enabled for virtual memory management.