This document describes some prototype USB-to-JTAG interfaces I built with the FTDIChip FT2232C device. The primary purpose was to develop a USB-connectable JTAG interface for the Open On-Chip Debugger OpenOCD.
One very useful feature of the FTDIChip FT2232C devices is that it can drive a fast synchronous serial interface like SPI or JTAG. To do that, channel one of the two-channel FT2232C has to be switched to "MPSSE" mode. The maximum clock frequency to achieve is about 6 MHz.
The other channel of the FT2232C is available for arbitrary other tasks. A typical usage is to establish a UART connection to a microprocessor target while channel one at the same time serves a JTAG connection.
Note that all the JTAG interfaces built with the FT2232C lack the adaptive clocking feature, i.e. the RTCK (return clock) JTAG signal offered by some ARM controllers, e.g. the Oki 67Q4xxx, is not supported.
Please see also my OpenOCD page: http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/
This was the very first demonstrator to show that a JTAG port can be driven with a FT2232C chip (I think it was in 2004). I mounted a ready to use FT2232M module by DLP Design on a prototyping PCB and did the wiring by hand. You can buy these modules e.g. at Elektronikladen or Unitronic.
- Schematic (JPG)
- Schematic (XFIG)
- Photography of the first prototype using a FT2232C DIL module (USBJTAG-1)
My second prototype is a PCB with about 7 x 6 cm size with the following components on board:
FT2232C with 93C56 EEPROM
Step up/down regulator to guarantee 5.0 Volt from 4.5 to 5.5 USB Voltage.
RS-232 Level Shifter (MAX3241)
ADuM1401BRW I-Coupler for JTAG port level shifting and electrical isolation.
RS-232 connector D-SUB9
Be aware, the design has some flaws:
The I-Coupler does not work at highest speed (ca. 6 MHz). It can only be used with 3 MHz and slower. The reason is, that the couplers have a rather large propagation delay of about 50 nsec.
The I-Coupler can only be used for 3.3V and 5V targets. Future target voltages, especially 2.5 and 1.8V are not supported.
The reset signals SRST and TRST are not 3-state signals. Depending on the schematics of the target this can cause problems.
- Top view
- Bottom view
- USBJTAG plugged into an extension board
Nearly all signals of the FT2232C can be accessed on the bottom board.
Joern Kaipf’s OOCD-Link
[2006-02-26] During Embedded World 2006 I came into contact with Joern Kaipf. He designed a JTAG interface with MAXIM level shifters which supports a target voltage range from 1.2 to 3.6 Volt. The following photography shows this board.
One year later I met Joern at Embedded World 2007. He now also has built a version of the OOCD-Link adaptor which directly uses the FT2232 signals to drive the target. This works for targets running with 3.3V and 5V. A nice additional feature is the 10-pin header which carries the UART signals of channel B. The adaptor is called "OOCD-Link-S". Please see the following photography:
Joern will give the PCB files to anyone who is interested in building such an adaptor. His E-mail address is joern (at) joernline.de. See also Joern’s homepage http://www.joernonline.de.
The commercial adaptors
The following adaptors are all based on my original design using the FT2232. However the commercial adaptors have a differing pin usage and have much better support for a wide target voltage range than my original prototypes.
Amontec JTAGkey and JTAGkey-Tiny
Amontec sells a USB-to-JTAG interface also based on the FT2232C. It does not use the I-Coupler but much faster buffer devices specialized for level shifting (but not for electrical isolation). Target voltages down to 1.8V are supported. Please see the following link to the "JTAGkey": http://www.amontec.com/jtagkey.shtml Note that the JTAGkey uses a wiring of the FT2232 signals different from my schematic.
Due to the rather high price for JTAGkey Amontec later designed a cheaper JTAG adaptor, the JTAGkey-Tiny. I recommend to buy this adaptor because it is really "tiny" and its price is reasonable. It directly fits into a standard 20-pin JTAG header. On the side opposed to the JTAG header it has a Mini-USB connector with 5 pins.
Olimex manufactures and sells many variants of reasonably priced ARM7 and ARM9 board. If you consider to start with ARM controllers you should go to http://www.olimex.com. They also have the following JTAG adaptors supported by OpenOCD:
"Embedded Projects" OpenOCD-USB Adaptor
This is a recent (April 2008) variant of Joern Kaipf’s adaptor using a FT2232D (see above). It offers a JTAG port and a RS-232 interface. Benedikt Sauter of Embedded Projects wants to add this adaptor to his online shop with the intention to sponsor the OpenOCD project with some Euros from every sold piece. The price is not yet fixed. Hopefully it will soon be available in his shop!