FTDI FT232H for hardware hacking

FTDI FT232h is a single chip USB 2.0 to UART/FIFO IC with a capability of being configured in a variety of industry standard serial/parallel interfaces:

USB to SWD

A generic square placeholder image with rounded corners in a figure.
Schematic for FTDI FT232H -> SWD dongle.
A generic square placeholder image with rounded corners in a figure.
Built dongle.

Tested with OpenOCD 0.10 and Atmel ATSAM4E, ft232h-module-swd.cfg is from OpenOCD git:

openocd -f ft232h-module-swd.cfg \
  -f /usr/share/openocd/scripts/board/atmel_sam4e_ek.cfg \
  -c "firmware.bin 0x00400000 verify reset exit"

USB to JTAG

Pinout:

Tested with OpenOCD 0.10 and Xilinx Spartan 10 XC6SLX16 chip:

$ openocd \
    -f /usr/share/openocd/scripts/interface/ftdi/um232h.cfg \
    -f /usr/share/openocd/scripts/cpld/xilinx-xc6s.cfg \
    -c 'adapter_khz 1000;'
Info : clock speed 1000 kHz
Info : JTAG tap: xc6s.tap tap/device found: 0x44002093 (mfg: 0x049 (Xilinx), part: 0x4002, ver: 0x4)
Warn : gdb services need one or more targets defined
Info : accepting 'telnet' connection on tcp/4444

From another shell, start the gdb client:

$ telnet localhost 4444

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> pld devices
#0: virtex2
 > pld load 0 bitsream.bit
loaded file top.bit to pld device 0 in 3s 735463us

And if you need a single command for writing the bitstream to fpga memory, append following argument:

-c 'init ;pld load 0 bitstream.bit ; exit'

Other supported features

List of other supported features, that have not been tested yet: