2 Debug Adapter Hardware

Defined: dongle: A small device that plugs into a computer and serves as
an adapter .... [snip]

In the OpenOCD case, this generally refers to a small adapter that
attaches to your computer via USB or the parallel port. One
exception is the Ultimate Solutions ZY1000, packaged as a small box you
attach via an ethernet cable. The ZY1000 has the advantage that it does not
require any drivers to be installed on the developer PC. It also has
a built in web interface. It supports RTCK/RCLK or adaptive clocking
and has a built-in relay to power cycle targets remotely.

2.1 Choosing a Dongle

There are several things you should keep in mind when choosing a dongle.

Transport Does it support the kind of communication that you need?
OpenOCD focusses mostly on JTAG. Your version may also support
other ways to communicate with target devices.

Voltage What voltage is your target - 1.8, 2.8, 3.3, or 5V?
Does your dongle support it? You might need a level converter.

Pinout What pinout does your target board use?
Does your dongle support it? You may be able to use jumper
wires, or an "octopus" connector, to convert pinouts.

Connection Does your computer have the USB, parallel, or
Ethernet port needed?

RTCK Do you expect to use it with ARM chips and boards with
RTCK support (also known as “adaptive clocking”)?

2.2 Stand-alone JTAG Probe

The ZY1000 from Ultimate Solutions is technically not a dongle but a
stand-alone JTAG probe that, unlike most dongles, doesn’t require any drivers
running on the developer’s host computer.
Once installed on a network using DHCP or a static IP assignment, users can
access the ZY1000 probe locally or remotely from any host with access to the
IP address assigned to the probe.
The ZY1000 provides an intuitive web interface with direct access to the
OpenOCD debugger.
Users may also run a GDBSERVER directly on the ZY1000 to take full advantage
of GCC & GDB to debug any distribution of embedded Linux or NetBSD running on
the target.
The ZY1000 supports RTCK & RCLK or adaptive clocking and has a built-in relay
to power cycle the target remotely.

2.3 USB FT2232 Based

There are many USB JTAG dongles on the market, many of them based
on a chip from “Future Technology Devices International” (FTDI)
known as the FTDI FT2232; this is a USB full speed (12 Mbps) chip.
See: http://www.ftdichip.com for more information.
In summer 2009, USB high speed (480 Mbps) versions of these FTDI
chips started to become available in JTAG adapters. Around 2012, a new
variant appeared - FT232H - this is a single-channel version of FT2232H.
(Adapters using those high speed FT2232H or FT232H chips may support adaptive
clocking.)

The FT2232 chips are flexible enough to support some other
transport options, such as SWD or the SPI variants used to
program some chips. They have two communications channels,
and one can be used for a UART adapter at the same time the
other one is used to provide a debug adapter.

Also, some development boards integrate an FT2232 chip to serve as
a built-in low-cost debug adapter and USB-to-serial solution.

Stellaris Eval Boards See: http://www.ti.com - The Stellaris eval boards
bundle FT2232-based JTAG and SWD support, which can be used to debug
the Stellaris chips. Using separate JTAG adapters is optional.
These boards can also be used in a "pass through" mode as JTAG adapters
to other target boards, disabling the Stellaris chip.

TI/Luminary ICDI See: http://www.ti.com - TI/Luminary In-Circuit Debug
Interface (ICDI) Boards are included in Stellaris LM3S9B9x
Evaluation Kits. Like the non-detachable FT2232 support on the other
Stellaris eval boards, they can be used to debug other target boards.

2.4 USB-JTAG / Altera USB-Blaster compatibles

These devices also show up as FTDI devices, but are not
protocol-compatible with the FT2232 devices. They are, however,
protocol-compatible among themselves. USB-JTAG devices typically consist
of a FT245 followed by a CPLD that understands a particular protocol,
or emulates this protocol using some other hardware.

They may appear under different USB VID/PID depending on the particular
product. The driver can be configured to search for any VID/PID pair
(see the section on driver commands).

2.6 USB RLINK based

Raisonance has an adapter called RLink. It exists in a stripped-down form on the STM32 Primer,
permanently attached to the JTAG lines. It also exists on the STM32 Primer2, but that is wired for
SWD and not JTAG, thus not supported.

For info the original ST-LINK enumerates using the mass storage usb class; however,
its implementation is completely broken. The result is this causes issues under Linux.
The simplest solution is to get Linux to ignore the ST-LINK using one of the following methods:

modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i

add "options usb-storage quirks=483:3744:i" to /etc/modprobe.conf

2.8 USB TI/Stellaris ICDI based

Texas Instruments has an adapter called ICDI.
It is not to be confused with the FTDI based adapters that were originally fitted to their
evaluation boards. This is the adapter fitted to the Stellaris LaunchPad.