gdb-jtag-arm: GDB Stub for ARMs JTAG interface

Short description

GDB Remote Stub Backend for debugging an embedded ARM system via JTAG common hardware debug interface. Communication is done via standard TCP/IP GDB Remote Serial Protocol.

Long description

Most ARM processors found in embedded application have a JTAG interface, for debugging hardware and software while the system is running. ARM processors can be found in almost all hardware routers and a lot of mobil phones.

On the other end, there is the GNU Debugger GDB. It is available with comfortable graphical frontends, like Insight from RedHat. GDB usually debugs a running or new process on the local system. But it is also possible to connect to a remotely running GDB stub on another host, where the actual program to be debugged runs.

The protocol for this remote connections is documented as GDB Remote Serial Protocol. Most commands are pretty simple: read/write registers/memory, halt, continue, set break-/watchpoints.

The goal of this program was to write an GDB Stub for interfacing with the JTAG interface to debug a running system. It is already finished and should be made public via sourceforge. I few minor bugs are known, but work is already in progress.

The project is based on jtag-arm9, also hosted by sourceforge, but longer unmaintained. As I wasn't able to contact the jtag-arm9 author and IMO projects cannot be renamed to a more suitable name for the new functionality, I ask for registering this project as gdb-jtag-arm.

A frontend is publicly available in source and binary versions by macraigor systems and will be put on the new project page then:


The used hardware interface is known as wiggler interface. A line driver IC (74244) connects the printer port with the jtag interface. The circuit can easily be build on a breadboard. There are also eagle layouts available.

The software is written in highly modular C. There are modules for:

The command line tool jtag-arm consists on a command line parser, which is compatible with jtag-arm9. The gdb remote stub is therefore named gdb-jtag-arm.


Tobias Lorenz and Lars-Kristian Klauske were both computer engineering students of the Technical University of Berlin, Germany. There diploma thesis was porting ucLinux 2.6 to the ARM9TDMI based microcontroller P2001 of the MAZ Brandenburg GmbH, Germany. As precondition they needed a debug environment and a network bootloader.

The debug environment, which is published with this SourceForge project gdb-jtag-arm, was developed till april 2004.

The porting of the network bootloader Etherboot to ARMNOMMU let to the new version 5.4. Tobias Lorenz is now the registered maintainer of the ARMNOMMU architeture and the P2001 machine in Etherboot. He is also registered maintainer of the P2001 machine in Linux. He is still working with Hyok S. Choi (armnommu maintainer) on inclusion in the official kernel.


MAZ Brandenburg GmbH LPEC-P2001
Macraigor Systems GNU Tools
Homepage of Tobias Lorenz

The gdb-jtag-arm is documentated as part of Tobias Lorenz's diploma thesis (pages 80-95, german). The complete diploma thesis is available upon request.

© 2005 Tobias Lorenz Logo