## 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.

### 2.1 Choosing a Dongle ¶

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

1. Transport Does it support the kind of communication that you need? OpenOCD focuses mostly on JTAG. Your version may also support other ways to communicate with target devices.
2. 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.
3. 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.
4. Connection Does your computer have the USB, parallel, or Ethernet port needed?
5. RTCK Do you expect to use it with ARM chips and boards with RTCK support (also known as “adaptive clocking”)?

### 2.2 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.

- usbjtag
  Link http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html
- jtagkey
  See: http://www.amontec.com/jtagkey.shtml
- jtagkey2
  See: http://www.amontec.com/jtagkey2.shtml
- oocdlink
  See: http://www.oocdlink.com By Joern Kaipf
- signalyzer
  See: http://www.signalyzer.com
- 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.
- olimex-jtag
  See: http://www.olimex.com
- Flyswatter/Flyswatter2
  See: http://www.tincantools.com
- turtelizer2
  See: Turtelizer 2, or http://www.ethernut.de
- comstick
  Link: http://www.hitex.com/index.php?id=383
- stm32stick
  Link http://www.hitex.com/stm32-stick
- axm0432_jtag
  Axiom AXM-0432 Link http://www.axman.com - NOTE: This JTAG does not appear to be available anymore as of April 2012.
- cortino
  Link http://www.hitex.com/index.php?id=cortino
- dlp-usb1232h
  Link http://www.dlpdesign.com/usb/usb1232h.shtml
- digilent-hs1
  Link http://www.digilentinc.com/Products/Detail.cfm?Prod=JTAG-HS1
- opendous
  Link http://code.google.com/p/opendous/wiki/JTAG FT2232H-based (OpenHardware).
- JTAG-lock-pick Tiny 2
  Link http://www.distortec.com/jtag-lock-pick-tiny-2 FT232H-based
- GW16042
  Link: http://shop.gateworks.com/index.php?route=product/product&path=70_80&product_id=64 FT2232H-based

### 2.3 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).

- USB-JTAG Kolja Waschk’s USB Blaster-compatible adapter
  Link: http://ixo-jtag.sourceforge.net/
- Altera USB-Blaster
  Link: http://www.altera.com/literature/ug/ug_usb_blstr.pdf

### 2.4 USB J-Link based ¶

There are several OEM versions of the SEGGER J-Link adapter. It is an example of a microcontroller based JTAG adapter, it uses an AT91SAM764 internally.

- SEGGER J-Link
  Link: http://www.segger.com/jlink.html
- Atmel SAM-ICE (Only works with Atmel chips!)
  Link: http://www.atmel.com/tools/atmelsam-ice.aspx
- IAR J-Link

### 2.5 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.

- Raisonance RLink
  Link: http://www.mcu-raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html
- STM32 Primer
  Link: http://www.stm32circle.com/resources/stm32primer.php
- STM32 Primer2
  Link: http://www.stm32circle.com/resources/stm32primer2.php

### 2.6 USB ST-LINK based ¶

STMicroelectronics has an adapter called ST-LINK. They only work with STMicroelectronics chips, notably STM32 and STM8.

- ST-LINK
  This is available standalone and as part of some kits, eg. STM32VLDISCOVERY.
  Link: http://www.st.com/internet/evalboard/product/219866.jsp
- ST-LINK/V2
  This is available standalone and as part of some kits, eg. STM32F4DISCOVERY.
  Link: http://www.st.com/internet/evalboard/product/251168.jsp
- STLINK-V3
  This is available standalone and as part of some kits.
  Link: http://www.st.com/stlink-v3

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.7 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.

### 2.8 USB Nuvoton Nu-Link ¶

Nuvoton has an adapter called Nu-Link. It is available either as stand-alone dongle and embedded on development boards. It supports SWD, serial port bridge and mass storage for firmware update. Both Nu-Link v1 and v2 are supported.

### 2.9 USB CMSIS-DAP based ¶

ARM has released a interface standard called CMSIS-DAP that simplifies connecting debuggers to ARM Cortex based targets http://www.keil.com/support/man/docs/dapdebug/dapdebug_introduction.htm.

### 2.10 USB Other ¶

- USBprog
  Link: http://shop.embedded-projects.net/ - which uses an Atmel MEGA32 and a UBN9604
- USB - Presto
  Link: http://tools.asix.net/prg_presto.htm
- Versaloon-Link
  Link: http://www.versaloon.com
- ARM-JTAG-EW
  Link: http://www.olimex.com/dev/arm-jtag-ew.html
- Buspirate
  Link: http://dangerousprototypes.com/bus-pirate-manual/
- opendous
  Link: http://code.google.com/p/opendous-jtag/ - which uses an AT90USB162
- estick
  Link: http://code.google.com/p/estick-jtag/
- Keil ULINK v1
  Link: http://www.keil.com/ulink1/
- TI XDS110 Debug Probe
  Link: https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_xds110.html
  Link: https://software-dl.ti.com/ccs/esd/documents/xdsdebugprobes/emu_xds_software_package_download.html#xds110-support-utilities

### 2.11 IBM PC Parallel Printer Port Based ¶

The two well-known “JTAG Parallel Ports” cables are the Xilinx DLC5 and the Macraigor Wiggler. There are many clones and variations of these on the market.

Note that parallel ports are becoming much less common, so if you have the choice you should probably avoid these adapters in favor of USB-based ones.

- Wiggler - There are many clones of this.
  Link: http://www.macraigor.com/wiggler.htm
- DLC5 - From XILINX - There are many clones of this
  Link: Search the web for: “XILINX DLC5” - it is no longer produced, PDF schematics are easily found and it is easy to make.
- Amontec - JTAG Accelerator
  Link: http://www.amontec.com/jtag_accelerator.shtml
- Wiggler2
  Link: http://www.ccac.rwth-aachen.de/~michaels/index.php/hardware/armjtag
- Wiggler_ntrst_inverted
  Yet another variation - See the source code, src/jtag/parport.c
- old_amt_wiggler
  Unknown - probably not on the market today
- arm-jtag
  Link: Most likely http://www.olimex.com/dev/arm-jtag.html [another wiggler clone]
- chameleon
  Link: http://www.amontec.com/chameleon.shtml
- Triton
  Unknown.
- Lattice
  ispDownload from Lattice Semiconductor http://www.latticesemi.com/lit/docs/devtools/dlcable.pdf
- flashlink
  From STMicroelectronics;
  Link: http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/DM00039500.pdf

### 2.12 Other... ¶

- ep93xx
  An EP93xx based Linux machine using the GPIO pins directly.
- at91rm9200
  Like the EP93xx - but an ATMEL AT91RM9200 based solution using the GPIO pins on the chip.
- bcm2835gpio
  A BCM2835-based board (e.g. Raspberry Pi) using the GPIO pins of the expansion header.
- imx_gpio
  A NXP i.MX-based board (e.g. Wandboard) using the GPIO pins (should work on any i.MX processor).
- am335xgpio
  A Texas Instruments AM335x-based board (e.g. BeagleBone Black) using the GPIO pins of the expansion headers.
- jtag_vpi
  A JTAG driver acting as a client for the JTAG VPI server interface.
  Link: http://github.com/fjullien/jtag_vpi
- vdebug
  A driver for Cadence virtual Debug Interface to emulated or simulated targets. It implements a client connecting to the vdebug server, which in turn communicates with the emulated or simulated RTL model through a transactor. The driver supports JTAG and DAP-level transports.
- jtag_dpi
  A JTAG driver acting as a client for the SystemVerilog Direct Programming Interface (DPI) for JTAG devices. DPI allows OpenOCD to connect to the JTAG interface of a hardware model written in SystemVerilog, for example, on an emulation model of target hardware.
- xlnx_pcie_xvc
  A JTAG driver exposing Xilinx Virtual Cable over PCI Express to OpenOCD as JTAG/SWD interface.
- linuxgpiod
  A bitbang JTAG driver using Linux GPIO through library libgpiod.
- sysfsgpio
  A bitbang JTAG driver using Linux legacy sysfs GPIO. This is deprecated from Linux v5.3; prefer using linuxgpiod.
- esp_usb_jtag
  A JTAG driver to communicate with builtin debug modules of Espressif ESP32-C3 and ESP32-S3 chips using OpenOCD.