OpenOCD is an on-chip debugging, in-system programming and
boundary-scan testing tool for ARM systems. The debugger uses an
IEEE 1149-1 compliant JTAG TAP bus master to access on-chip debug
functionality available on ARM based microcontrollers or system-on-chip
solutions.

User interaction is realized through a telnet command line interface,
a gdb (the GNU debugger) remote protocol server.

OpenOCD supports many different types of JTAG interfaces/programmers.
