Remove since long deprecated ft2232 driver

Purge all legacy interface configurations so there's no more confusion
over which one to use.

Also remove doc/INSTALL.txt which mentions ft2232 but otherwise just
duplicates what INSTALL says.

Change-Id: Ic94f808f123d4917e600b79309f1272c78a7bb11
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/3236
Tested-by: jenkins
Reviewed-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
This commit is contained in:
Andreas Fritiofson 2016-02-15 21:59:28 +01:00
parent f60d42b0e2
commit cc2d4f015f
62 changed files with 13 additions and 5372 deletions

5
README
View File

@ -45,9 +45,6 @@ e.g.:
openocd -f interface/stlink-v2-1.cfg -c "transport select hla_swd" \
-f target/stm32l0.cfg
NB: when using an FTDI-based adapter you should prefer configs in the
ftdi directory; the old configs for the ft2232 are deprecated.
After OpenOCD startup, connect GDB with
(gdb) target extended-remote localhost:3333
@ -228,7 +225,7 @@ USB-based adapters depend on libusb-1.0 and some older drivers require
libusb-0.1 or libusb-compat-0.1. A compatible implementation, such as
FreeBSD's, additionally needs the corresponding .pc files.
USB-Blaster, ASIX Presto, OpenJTAG and ft2232 interface adapter
USB-Blaster, ASIX Presto and OpenJTAG interface adapter
drivers need either one of:
- libftdi: http://www.intra2net.com/en/developer/libftdi/index.php
- ftd2xx: http://www.ftdichip.com/Drivers/D2XX.htm (proprietary,

3
TODO
View File

@ -93,9 +93,6 @@ interface support:
-# rewrite implementation to use non-blocking I/O
- J-Link driver:
- fix to work with long scan chains, such as R.Doss's svf test.
- FT2232 (libftdi):
- make performance comparable to alternatives (on Win32, D2XX is faster)
- make usability comparable to alternatives
- Autodetect USB based adapters; this should be easy on Linux. If there's
more than one, list the options; otherwise, just select that one.

View File

@ -397,26 +397,6 @@ AC_ARG_ENABLE([parport_giveio],
[Enable use of giveio for parport (for CygWin only)]),
[parport_use_giveio=$enableval], [parport_use_giveio=])
AC_ARG_ENABLE([ft2232_libftdi], [], [
if test $enableval = yes; then
AC_MSG_ERROR([The ft2232 driver is deprecated, use --enable-ftdi to build its replacement, or force the old driver with --enable-legacy-ft2232_libftdi])
fi
])
AC_ARG_ENABLE([ft2232_ftd2xx], [], [
if test $enableval = yes; then
AC_MSG_ERROR([The ft2232 driver is deprecated, use --enable-ftdi to build its replacement, or force the old driver with --enable-legacy-ft2232_ftd2xx])
fi
])
AC_ARG_ENABLE([legacy-ft2232_libftdi],
AS_HELP_STRING([--enable-legacy-ft2232_libftdi], [(DEPRECATED) Enable building support for FT2232 based devices using the libftdi library]),
[build_ft2232_libftdi=$enableval], [build_ft2232_libftdi=no])
AC_ARG_ENABLE([legacy-ft2232_ftd2xx],
AS_HELP_STRING([--enable-legacy-ft2232_ftd2xx], [(DEPRECATED) Enable building support for FT2232 based devices using the D2XX library from ftdichip.com]),
[build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no])
AC_ARG_ENABLE([jtag_vpi],
AS_HELP_STRING([--enable-jtag_vpi], [Enable building support for JTAG VPI]),
[build_jtag_vpi=$enableval], [build_jtag_vpi=no])
@ -699,18 +679,6 @@ else
AC_DEFINE([BUILD_BITBANG], [0], [0 if you don't want a bitbang interface.])
fi
if test $build_ft2232_libftdi = yes; then
AC_DEFINE([BUILD_FT2232_LIBFTDI], [1], [1 if you want libftdi ft2232.])
else
AC_DEFINE([BUILD_FT2232_LIBFTDI], [0], [0 if you don't want libftdi ft2232.])
fi
if test $build_ft2232_ftd2xx = yes; then
AC_DEFINE([BUILD_FT2232_FTD2XX], [1], [1 if you want ftd2xx ft2232.])
else
AC_DEFINE([BUILD_FT2232_FTD2XX], [0], [0 if you don't want ftd2xx ft2232.])
fi
if test $build_usb_blaster_libftdi = yes; then
AC_DEFINE([BUILD_USB_BLASTER_LIBFTDI], [1], [1 if you want libftdi usb_blaster.])
else
@ -815,7 +783,7 @@ then
AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
fi
if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then
if test $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then
AC_MSG_CHECKING([for ftd2xx.lib exists (win32)])
# if we are given a zipdir...
@ -864,7 +832,7 @@ then
AC_MSG_ERROR([The option: with_ftd2xx_linux_tardir is for LINUX only.])
fi
if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then
if test $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then
AC_MSG_CHECKING([for libftd2xx.a (darwin)])
if test ! -f /usr/local/include/ftd2xx.h ; then
@ -885,10 +853,10 @@ then
AC_MSG_ERROR([The option: --with-ftd2xx-win32-zipdir is for win32 only])
fi
if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then
if test $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes -o $build_openjtag_ftd2xx = yes; then
# Must be linux
if test $host_os != linux-gnu && test $host_os != linux ; then
AC_MSG_ERROR([The (linux) ftd2xx library from FTDICHIP.com is linux only. Try --enable-ft2232-libftdi instead])
AC_MSG_ERROR([The (linux) ftd2xx library from FTDICHIP.com is linux only. Try --enable-*-libftdi instead])
fi
# Are we given a TAR directory?
if test "${with_ftd2xx_linux_tardir+set}" = set
@ -948,7 +916,7 @@ if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_b
fi
fi # linux
if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then
if test $build_presto_ftd2xx = yes -o $build_usb_blaster_ftd2xx = yes ; then
# Before we go any further - make sure we can *BUILD* and *RUN*
# a simple app with the "ftd2xx.lib" file - in what ever form we where given
@ -982,29 +950,6 @@ AC_RUN_IFELSE([AC_LANG_PROGRAM([[
AC_MSG_RESULT([Skipping as we are cross-compiling])
])
AC_MSG_CHECKING([for ftd2xx highspeed device support])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include "confdefs.h"
#if IS_WIN32
#include "windows.h"
#endif
#include <stdio.h>
#include <ftd2xx.h>
DWORD x = FT_DEVICE_4232H;
]], [])], [
AC_DEFINE([BUILD_FT2232_HIGHSPEED], [1],
[Support FT2232H/FT4232HS with FTD2XX or libftdi.])
build_ft2232_highspeed=yes
], [
build_ft2232_highspeed=no
])
AC_MSG_RESULT([$build_ft2232_highspeed])
if test $build_ft2232_highspeed = no; then
AC_MSG_WARN([You need a newer FTD2XX driver (version 2.04.16 or later).])
fi
AC_MSG_CHECKING([for ftd2xx FT232H device support])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include "confdefs.h"
@ -1032,7 +977,7 @@ LDFLAGS=$LDFLAGS_SAVE
CFLAGS=$CFLAGS_SAVE
fi
if test $build_ft2232_libftdi = yes -o $build_usb_blaster_libftdi = yes -o \
if test $build_usb_blaster_libftdi = yes -o \
$build_openjtag_ftdi = yes -o $build_presto_libftdi = yes; then
# we can have libftdi or libftdi1, so check it and use the latest one
@ -1079,25 +1024,6 @@ if test $build_ft2232_libftdi = yes -o $build_usb_blaster_libftdi = yes -o \
AC_SEARCH_LIBS([ftdi_new], [], [], [AC_MSG_ERROR([Cannot link with libftdi])])
])
AC_MSG_CHECKING([for libftdi highspeed device support])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdio.h>
#include <ftdi.h>
]], [[
enum ftdi_chip_type x = TYPE_2232H;
]])], [
AC_DEFINE([BUILD_FT2232_HIGHSPEED], [1],
[Support FT2232H/FT4232HS with FTD2XX or libftdi.])
build_ft2232_highspeed=yes
], [
build_ft2232_highspeed=no
])
AC_MSG_RESULT([$build_ft2232_highspeed])
if test $build_ft2232_highspeed = no; then
AC_MSG_WARN([You need a newer libftdi version (0.16 or later).])
fi
AC_MSG_CHECKING([for libftdi FT232H device support])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdio.h>
@ -1205,8 +1131,6 @@ AM_CONDITIONAL([IOUTIL], [test $build_ioutil = yes])
AM_CONDITIONAL([AT91RM9200], [test $build_at91rm9200 = yes])
AM_CONDITIONAL([BCM2835GPIO], [test $build_bcm2835gpio = yes])
AM_CONDITIONAL([BITBANG], [test $build_bitbang = yes])
AM_CONDITIONAL([FT2232_LIBFTDI], [test $build_ft2232_libftdi = yes])
AM_CONDITIONAL([FT2232_DRIVER], [test $build_ft2232_ftd2xx = yes -o $build_ft2232_libftdi = yes])
AM_CONDITIONAL([USB_BLASTER_LIBFTDI], [test $build_usb_blaster_libftdi = yes])
AM_CONDITIONAL([USB_BLASTER_FTD2XX], [test $build_usb_blaster_ftd2xx = yes])
AM_CONDITIONAL([JTAG_VPI], [test $build_jtag_vpi = yes -o $build_jtag_vpi = yes])
@ -1329,12 +1253,3 @@ m4_foreach([adapter], [USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS,
esac
])
echo
if test $build_ft2232_libftdi = yes -o $build_ft2232_ftd2xx = yes; then
if test $enable_ftdi = no; then
AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver but not its replacement!])
AC_MSG_WARN([Please consider using --enable-ftdi instead.])
else
AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver.])
fi
fi

View File

@ -1,204 +0,0 @@
TODO!!! this should be merged into openocd.texi!!!
Prerequisites
=============
When building with support for FTDI FT2232 based devices, you need at least
one of the following libraries:
- libftdi (http://www.intra2net.com/opensource/ftdi/)
- libftd2xx (http://www.ftdichip.com/Drivers/D2XX.htm)
On Windows, you need either Cygwin or MinGW, but compilation for MinGW is also
possible using a Cygwin host.
Basic Installation
==================
OpenOCD is distributed without autotools generated files, i.e. without a
configure script. Run ./bootstrap in the openocd directory to have all
necessary files generated.
You have to explicitly enable desired JTAG interfaces during configure:
./configure --enable-parport --enable-ft2232-libftdi (OR --enable-ft2232-ftd2xx) \
--enable-amtjtagaccel
Under Windows/Cygwin, only the ftd2xx driver is supported for FT2232 based
devices. You have to specify the location of the FTDI driver package with the
--with-ftd2xx=/full/path/name option.
Under Linux you can choose to build the parport driver with support for
/dev/parportN instead of the default access with direct port I/O using
--enable-parport_ppdev. This has the advantage of running OpenOCD without root
privileges at the expense of a slight performance decrease. This is also
available on FreeBSD using PPI, but the naming of the devices is different.
Generic installation instructions
=================================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, a file
`config.cache' that saves the results of its tests to speed up
reconfiguring, and a file `config.log' containing compiler output
(useful mainly for debugging `configure').
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.
The file `configure.in' is used to create `configure' by a program
called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes a while. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Type `make install' to install the programs and any data files and
documentation.
4. You can remove the program binaries and object files from the
source code directory by typing `make clean'.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. You can give `configure'
initial values for variables by setting them in the environment. Using
a Bourne-compatible shell, you can do that on the command line like
this:
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
Or on systems that have the `env' program, you can do it like this:
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not supports the `VPATH'
variable, you have to compile the package for one architecture at a time
in the source code directory. After you have installed the package for
one architecture, use `make distclean' before reconfiguring for another
architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' can not figure out
automatically, but needs to determine by the type of host the package
will run on. Usually `configure' can figure that out, but if it prints
a message saying it can not guess the host type, give it the
`--host=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
CPU-COMPANY-SYSTEM
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the host type.
If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system they will
produce code for and the `--build=TYPE' option to select the type of
system on which you are compiling the package.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Operation Controls
==================
`configure' recognizes the following options to control how it
operates.
`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.
`--help'
Print a summary of the options to `configure', and exit.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made.
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`configure' also accepts some other, not widely useful, options.

View File

@ -2,8 +2,7 @@ info_TEXINFOS = openocd.texi
openocd_TEXINFOS = fdl.texi
man_MANS = openocd.1
EXTRA_DIST = openocd.1 \
manual \
INSTALL.txt
manual
MAINTAINERCLEANFILES = \
$(srcdir)/Makefile.in \

View File

@ -334,7 +334,7 @@ git tag -m "The openocd-${PACKAGE_VERSION} release." "${PACKAGE_TAG}"
configuring its contents, using them to build a copy of OpenOCD,
and verifying that the result prints the correct release version
in its startup banner. (For example,
"configure --enable-ft2232_libftdi --enable-parport"
"configure --enable-parport"
then "make" and run "src/openocd -v" as a sanity check.)
-# Run <code>make docs</code> to create the
documentation which will be published.

View File

@ -898,7 +898,7 @@ using a Signalyzer FT2232-based JTAG adapter to talk to
a board with an Atmel AT91SAM7X256 microcontroller:
@example
source [find interface/signalyzer.cfg]
source [find interface/ftdi/signalyzer.cfg]
# GDB can also flash my flash!
gdb_memory_map enable
@ -910,7 +910,7 @@ source [find target/sam7x256.cfg]
Here is the command line equivalent of that configuration:
@example
openocd -f interface/signalyzer.cfg \
openocd -f interface/ftdi/signalyzer.cfg \
-c "gdb_memory_map enable" \
-c "gdb_flash_program enable" \
-f target/sam7x256.cfg
@ -2403,109 +2403,12 @@ A dummy software-only driver for debugging.
Cirrus Logic EP93xx based single-board computer bit-banging (in development)
@end deffn
@deffn {Interface Driver} {ft2232}
FTDI FT2232 (USB) based devices over one of the userspace libraries.
Note that this driver has several flaws and the @command{ftdi} driver is
recommended as its replacement.
These interfaces have several commands, used to configure the driver
before initializing the JTAG scan chain:
@deffn {Config Command} {ft2232_device_desc} description
Provides the USB device description (the @emph{iProduct string})
of the FTDI FT2232 device. If not
specified, the FTDI default value is used. This setting is only valid
if compiled with FTD2XX support.
@end deffn
@deffn {Config Command} {ft2232_serial} serial-number
Specifies the @var{serial-number} of the FTDI FT2232 device to use,
in case the vendor provides unique IDs and more than one FT2232 device
is connected to the host.
If not specified, serial numbers are not considered.
(Note that USB serial numbers can be arbitrary Unicode strings,
and are not restricted to containing only decimal digits.)
@end deffn
@deffn {Config Command} {ft2232_layout} name
Each vendor's FT2232 device can use different GPIO signals
to control output-enables, reset signals, and LEDs.
Currently valid layout @var{name} values include:
@itemize @minus
@item @b{axm0432_jtag} Axiom AXM-0432
@item @b{comstick} Hitex STR9 comstick
@item @b{cortino} Hitex Cortino JTAG interface
@item @b{evb_lm3s811} TI/Luminary Micro EVB_LM3S811 as a JTAG interface,
either for the local Cortex-M3 (SRST only)
or in a passthrough mode (neither SRST nor TRST)
This layout can not support the SWO trace mechanism, and should be
used only for older boards (before rev C).
@item @b{luminary_icdi} This layout should be used with most TI/Luminary
eval boards, including Rev C LM3S811 eval boards and the eponymous
ICDI boards, to debug either the local Cortex-M3 or in passthrough mode
to debug some other target. It can support the SWO trace mechanism.
@item @b{flyswatter} Tin Can Tools Flyswatter
@item @b{icebear} ICEbear JTAG adapter from Section 5
@item @b{jtagkey} Amontec JTAGkey and JTAGkey-Tiny (and compatibles)
@item @b{jtagkey2} Amontec JTAGkey2 (and compatibles)
@item @b{m5960} American Microsystems M5960
@item @b{olimex-jtag} Olimex ARM-USB-OCD and ARM-USB-Tiny
@item @b{oocdlink} OOCDLink
@c oocdlink ~= jtagkey_prototype_v1
@item @b{redbee-econotag} Integrated with a Redbee development board.
@item @b{redbee-usb} Integrated with a Redbee USB-stick development board.
@item @b{sheevaplug} Marvell Sheevaplug development kit
@item @b{signalyzer} Xverve Signalyzer
@item @b{stm32stick} Hitex STM32 Performance Stick
@item @b{turtelizer2} egnite Software turtelizer2
@item @b{usbjtag} "USBJTAG-1" layout described in the OpenOCD diploma thesis
@end itemize
@end deffn
@deffn {Config Command} {ft2232_vid_pid} [vid pid]+
The vendor ID and product ID of the FTDI FT2232 device. If not specified, the FTDI
default values are used.
Currently, up to eight [@var{vid}, @var{pid}] pairs may be given, e.g.
@example
ft2232_vid_pid 0x0403 0xcff8 0x15ba 0x0003
@end example
@end deffn
@deffn {Config Command} {ft2232_latency} ms
On some systems using FT2232 based JTAG interfaces the FT_Read function call in
ft2232_read() fails to return the expected number of bytes. This can be caused by
USB communication delays and has proved hard to reproduce and debug. Setting the
FT2232 latency timer to a larger value increases delays for short USB packets but it
also reduces the risk of timeouts before receiving the expected number of bytes.
The OpenOCD default value is 2 and for some systems a value of 10 has proved useful.
@end deffn
@deffn {Config Command} {ft2232_channel} channel
Used to select the channel of the ft2232 chip to use (between 1 and 4).
The default value is 1.
@end deffn
For example, the interface config file for a
Turtelizer JTAG Adapter looks something like this:
@example
interface ft2232
ft2232_device_desc "Turtelizer JTAG/RS232 Adapter"
ft2232_layout turtelizer2
ft2232_vid_pid 0x0403 0xbdc8
@end example
@end deffn
@deffn {Interface Driver} {ftdi}
This driver is for adapters using the MPSSE (Multi-Protocol Synchronous Serial
Engine) mode built into many FTDI chips, such as the FT2232, FT4232 and FT232H.
It is a complete rewrite to address a large number of problems with the ft2232
interface driver.
The driver is using libusb-1.0 in asynchronous mode to talk to the FTDI device,
bypassing intermediate libraries like libftdi of D2XX. Performance-wise it is
consistently faster than the ft2232 driver, sometimes several times faster.
bypassing intermediate libraries like libftdi of D2XX.
A major improvement of this driver is that support for new FTDI based adapters
can be added competely through configuration files, without the need to patch
@ -9344,16 +9247,6 @@ supply stable enough for the Amontec JTAGkey to be operated.
@b{Laptops running on battery have this problem too...}
@item @b{USB Power} When using the Amontec JTAGkey, sometimes OpenOCD crashes with the
following error messages: "Error: ft2232.c:201 ft2232_read(): FT_Read returned:
4" and "Error: ft2232.c:365 ft2232_send_and_recv(): couldn't read from FT2232".
What does that mean and what might be the reason for this?
First of all, the reason might be the USB power supply. Try using a self-powered
hub instead of a direct connection to your computer. Secondly, the error code 4
corresponds to an FT_IO_ERROR, which means that the driver for the FTDI USB
chip ran into some sort of error - this points us to a USB problem.
@item @b{GDB Disconnects} When using the Amontec JTAGkey, sometimes OpenOCD crashes with the following
error message: "Error: gdb_server.c:101 gdb_get_char(): read: 10054".
What does that mean and what might be the reason for this?

View File

@ -60,9 +60,6 @@ endif
if DUMMY
DRIVERFILES += dummy.c
endif
if FT2232_DRIVER
DRIVERFILES += ft2232.c
endif
if FTDI
DRIVERFILES += ftdi.c mpsse.c
endif

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,7 @@
#ifndef OPENOCD_JTAG_DRIVERS_FTD2XX_COMMON_H
#define OPENOCD_JTAG_DRIVERS_FTD2XX_COMMON_H
#if ((BUILD_FT2232_FTD2XX == 1) || (BUILD_PRESTO_FTD2XX == 1) || (BUILD_USB_BLASTER_FTD2XX == 1))
#if ((BUILD_PRESTO_FTD2XX == 1) || (BUILD_USB_BLASTER_FTD2XX == 1))
#include <ftd2xx.h>
static const char *ftd2xx_status_string(FT_STATUS status)

View File

@ -51,12 +51,6 @@ extern struct jtag_interface parport_interface;
#if BUILD_DUMMY == 1
extern struct jtag_interface dummy_interface;
#endif
#if BUILD_FT2232_FTD2XX == 1
extern struct jtag_interface ft2232_interface;
#endif
#if BUILD_FT2232_LIBFTDI == 1
extern struct jtag_interface ft2232_interface;
#endif
#if BUILD_FTDI == 1
extern struct jtag_interface ftdi_interface;
#endif
@ -150,12 +144,6 @@ struct jtag_interface *jtag_interfaces[] = {
#if BUILD_DUMMY == 1
&dummy_interface,
#endif
#if BUILD_FT2232_FTD2XX == 1
&ft2232_interface,
#endif
#if BUILD_FT2232_LIBFTDI == 1
&ft2232_interface,
#endif
#if BUILD_FTDI == 1
&ftdi_interface,
#endif

View File

@ -1,11 +0,0 @@
#
# Axiom axm0432
#
# http://www.axman.com
#
interface ft2232
ft2232_device_desc "Symphony SoundBite"
ft2232_layout "axm0432_jtag"
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,14 +0,0 @@
#
# Dangerous Prototypes - Bus Blaster
#
# The Bus Blaster has a configurable buffer between the FTDI FT2232H and the
# JTAG header which allows it to emulate various debugger types. It comes
# configured as a JTAGkey device.
#
# http://dangerousprototypes.com/docs/Bus_Blaster
#
interface ft2232
ft2232_device_desc "Dual RS232-HS"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,13 +0,0 @@
#
# CALAO Systems USB-A9260-C01
#
# http://www.calao-systems.com/
#
interface ft2232
ft2232_layout jtagkey
ft2232_device_desc "USB-A9260"
ft2232_vid_pid 0x0403 0x6010
script interface/calao-usb-a9260.cfg
script target/at91sam9260minimal.cfg

View File

@ -1,13 +0,0 @@
#
# CALAO Systems USB-A9260-C02
#
# http://www.calao-systems.com/
#
interface ft2232
ft2232_layout jtagkey
ft2232_device_desc "USB-A9260"
ft2232_vid_pid 0x0403 0x6001
script interface/calao-usb-a9260.cfg
script target/at91sam9260minimal.cfg

View File

@ -1,11 +0,0 @@
#
# Hitex Cortino
#
# http://www.hitex.com/index.php?id=cortino
#
interface ft2232
ft2232_device_desc "Cortino"
ft2232_layout cortino
ft2232_vid_pid 0x0640 0x0032

View File

@ -1,15 +0,0 @@
#
# Digilent HS1
#
# The Digilent HS1 is a high-speed FT2232H-based adapter, compliant with the
# Xilinx JTAG 14-pin pinout.
# It does not support ARM reset signals (SRST and TRST) but can still be used for
# hardware debugging, with some limitations.
#
# http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,922&Prod=JTAG-HS1
#
interface ft2232
ft2232_device_desc "Digilent Adept USB Device"
ft2232_layout digilent-hs1
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,14 +0,0 @@
#
# DLP Design DLP-USB1232H USB-to-UART/FIFO interface module
#
# http://www.dlpdesign.com/usb/usb1232h.shtml
#
# Schematics for OpenOCD usage:
# http://randomprojects.org/wiki/DLP-USB1232H_and_OpenOCD_based_JTAG_adapter
#
interface ft2232
ft2232_device_desc "Dual RS232-HS"
ft2232_layout usbjtag
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,19 +0,0 @@
#
# FlossJTAG
#
# http://github.com/esden/floss-jtag
#
# This is the pre v0.3 Floss-JTAG compatible config file. It can also be used
# for newer versions of Floss-JTAG with empty or not populated EEPROM. If you
# have several Floss-JTAG connected you have to use the USB ID to select a
# specific one.
#
# If you have a Floss-JTAG WITH EEPROM that is programmed, use the
# flossjtag.cfg file.
#
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_device_desc "Dual RS232-HS"
ft2232_layout "usbjtag"
ft2232_latency 2

View File

@ -1,20 +0,0 @@
#
# FlossJTAG
#
# http://github.com/esden/floss-jtag
#
# This is the v0.3 and v1.0 Floss-JTAG compatible config file. It relies on the
# existence of an EEPROM on Floss-JTAG containing a name. If you have several
# Floss-JTAG adapters connected you can use the serial number to select a
# specific device.
#
# If your Floss-JTAG does not have an EEPROM, or the EEPROM is empty, use the
# flossjtag-noeeprom.cfg file.
#
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_device_desc "FLOSS-JTAG"
#ft2232_serial "FJ000001"
ft2232_layout "flossjtag"
ft2232_latency 2

View File

@ -1,10 +0,0 @@
#
# TinCanTools Flyswatter
#
# http://www.tincantools.com/product.php?productid=16134
#
interface ft2232
ft2232_device_desc "Flyswatter"
ft2232_layout "flyswatter"
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,10 +0,0 @@
#
# TinCanTools Flyswatter 2
#
# http://www.tincantools.com/product.php?productid=16153
#
interface ft2232
ft2232_device_desc "Flyswatter2"
ft2232_layout "flyswatter2"
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,11 +0,0 @@
#
# Hilscher NXHX 10-ETM
#
# http://de.hilscher.com/products_details_hardware.html?p_id=P_4ce145a5983e6
#
interface ft2232
ft2232_device_desc "NXHX 10-ETM"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x0028
adapter_khz 6000

View File

@ -1,11 +0,0 @@
#
# Hilscher NXHX 500-ETM
#
# http://de.hilscher.com/files_design/8/NXHX500-ETM_description_Rev01_EN.pdf
#
interface ft2232
ft2232_device_desc "NXHX 500-ETM"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x0028
adapter_khz 6000

View File

@ -1,11 +0,0 @@
#
# Hilscher NXHX 500-RE
#
# http://de.hilscher.com/products_details_hardware.html?p_id=P_461ff2053bad1&bs=20
#
interface ft2232
ft2232_device_desc "NXHX 500-RE"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x0028
adapter_khz 6000

View File

@ -1,11 +0,0 @@
#
# Hilscher NXHX 50-ETM
#
# http://de.hilscher.com/files_design/8/NXHX50-ETM_description_Rev01_EN.pdf
#
interface ft2232
ft2232_device_desc "NXHX 50-ETM"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x0028
adapter_khz 6000

View File

@ -1,11 +0,0 @@
#
# Hilscher NXHX 50-RE
#
# http://de.hilscher.com/products_details_hardware.html?p_id=P_483c0f582ad36&bs=20
#
interface ft2232
ft2232_device_desc "NXHX50-RE"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x0028
adapter_khz 6000

View File

@ -1,11 +0,0 @@
#
# Hitex STR9-comStick
#
# http://www.hitex.com/index.php?id=383
#
interface ft2232
ft2232_device_desc "STR9-comStick"
ft2232_layout comstick
ft2232_vid_pid 0x0640 0x002c

View File

@ -1,11 +0,0 @@
#
# Section5 ICEBear
#
# http://section5.ch/icebear
#
interface ft2232
ft2232_device_desc "ICEbear JTAG adapter"
ft2232_layout icebear
ft2232_vid_pid 0x0403 0xc140

View File

@ -1,10 +0,0 @@
#
# DISTORTEC JTAG-lock-pick Tiny 2
#
# http://www.distortec.com
#
interface ft2232
ft2232_device_desc "JTAG-lock-pick Tiny 2"
ft2232_layout ktlink
ft2232_vid_pid 0x0403 0x8220

View File

@ -1,9 +0,0 @@
#
# Amontec JTAGkey-tiny
#
# http://www.amontec.com/jtagkey-tiny.shtml
#
# The JTAGkey-tiny uses exactly the same config as the JTAGkey.
source [find interface/jtagkey.cfg]

View File

@ -1,11 +0,0 @@
#
# Amontec JTAGkey
#
# http://www.amontec.com/jtagkey.shtml
#
interface ft2232
ft2232_device_desc "Amontec JTAGkey"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xcff8

View File

@ -1,11 +0,0 @@
#
# Amontec JTAGkey2
#
# http://www.amontec.com/jtagkey2.shtml
#
interface ft2232
ft2232_device_desc "Amontec JTAGkey-2"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xCFF8

View File

@ -1,11 +0,0 @@
#
# Amontec JTAGkey2P
#
# http://www.amontec.com/jtagkey2p.shtml
#
interface ft2232
ft2232_device_desc "Amontec JTAGkey-2P"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0xCFF8

View File

@ -1,10 +0,0 @@
#
# Kristech KT-Link
#
# http://www.kristech.eu
#
interface ft2232
ft2232_device_desc "KT-LINK"
ft2232_layout ktlink
ft2232_vid_pid 0x0403 0xBBE2

View File

@ -1,11 +0,0 @@
#
# Lisa/L
#
# http://paparazzi.enac.fr/wiki/Lisa
#
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_device_desc "Lisa/L"
ft2232_layout "lisa-l"
ft2232_latency 2

View File

@ -1,21 +0,0 @@
#
# Luminary Micro Stellaris LM3S9B9x Evaluation Kits
# In-Circuit Debug Interface (ICDI) Board
#
# Essentially all Luminary debug hardware is the same, (with both
# JTAG and SWD support compatible with ICDI boards. This ICDI adapter
# configuration is JTAG-only, but the same hardware handles SWD too.
#
# This is a discrete FT2232 based debug board which supports ARM's
# JTAG/SWD connectors in both backwards-compatible 20-pin format and
# in the new-style compact 10-pin. There's also an 8-pin connector
# with serial port support. It's included with LM3S9B9x eval boards.
#
# http://www.luminarymicro.com/products/ek-lm3s9b90.html
# http://www.luminarymicro.com/products/ek-lm3s9b92.html
#
interface ft2232
ft2232_device_desc "Luminary Micro ICDI Board"
ft2232_layout luminary_icdi
ft2232_vid_pid 0x0403 0xbcda

View File

@ -1,18 +0,0 @@
#
# Luminary Micro Stellaris LM3S811 Evaluation Kit
#
# http://www.luminarymicro.com/products/stellaris_811_evaluation_kits.html
#
# NOTE: this is only for boards *before* Rev C, which adds support
# for SWO tracing with ADBUS_6 DBG_ENn and BDBUS_4 SWO_EN signals.
# The "evb_lm3s811" layout doesn't set up those signals.
#
# Rev C boards work more like the other Stellaris eval boards. They
# need to use the "luminary_icdi" layout to work correctly.
#
interface ft2232
ft2232_device_desc "LM3S811 Evaluation Board"
ft2232_layout evb_lm3s811
ft2232_vid_pid 0x0403 0xbcd9

View File

@ -1,31 +0,0 @@
#
# Luminary Micro Stellaris Evaluation Kits
#
# http://www.luminarymicro.com/products/evaluation_kits.html
#
# There are a number of evaluation kits for Stellaris Cortex-M3 chips.
# Currently they all bundle FT2232 based debug support. When that is
# used (instead of an external adapter), use this config file in one
# of these two modes:
#
# - Eval board debug ... debug of the Stellaris chip via port A.
#
# - Other board debug ... same thing, but the board acts as a debug
# adapter for another board (using a standard ARM JTAG connector).
# The Stellaris chip stays in reset.
#
# Those support both JTAG and SWD. SWD is an ARM-only two-wire debug
# protocol; in 2009, OpenOCD does not support SWD.
#
# Port B of the FT2232 chip is normally used as a serial link to the
# Stellaris chip. On most boards (but not older LM3S811 eval boards),
# when SWD is used Port B may instead be used to read low-bandwidth
# "SWO trace" data, including so-called "printf style" output from
# firmware via the ITM module as well as profile data.
#
interface ft2232
ft2232_device_desc "Stellaris Evaluation Board"
ft2232_layout luminary_icdi
ft2232_vid_pid 0x0403 0xbcd9

View File

@ -1,10 +0,0 @@
#
# FTDI MiniModule
#
# http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_FT2232H_Mini_Module.pdf
#
interface ft2232
ft2232_device_desc "FT2232H MiniModule"
ft2232_layout "minimodule"
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,10 +0,0 @@
#
# Openmoko USB JTAG/RS232 adapter
#
# http://wiki.openmoko.org/wiki/Debug_Board_v3
#
interface ft2232
ft2232_device_desc "Debug Board for Neo1973"
ft2232_layout jtagkey
ft2232_vid_pid 0x1457 0x5118

View File

@ -1,10 +0,0 @@
#
# NGX ARM USB JTAG
#
# http://shop.ngxtechnologies.com/product_info.php?cPath=26&products_id=30
#
interface ft2232
ft2232_device_desc "NGX JTAG A"
ft2232_vid_pid 0x0403 0x6010
ft2232_layout "oocdlink"

View File

@ -1,11 +0,0 @@
#
# Olimex ARM-USB-OCD-H
#
# http://www.olimex.com/dev/arm-usb-ocd.html
#
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG ARM-USB-OCD-H"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15ba 0x002b

View File

@ -1,11 +0,0 @@
#
# Olimex ARM-USB-OCD
#
# http://www.olimex.com/dev/arm-usb-ocd.html
#
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15ba 0x0003

View File

@ -1,11 +0,0 @@
#
# Olimex ARM-USB-TINY-H
#
# http://www.olimex.com/dev/arm-usb-tiny-h.html
#
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15ba 0x002a

View File

@ -1,11 +0,0 @@
#
# Olimex ARM-USB-TINY
#
# http://www.olimex.com/dev/arm-usb-tiny.html
#
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG TINY"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15ba 0x0004

View File

@ -1,12 +0,0 @@
#
# Joern Kaipf's OOCDLink
#
# http://www.joernonline.de/contrexx2/cms/index.php?page=126
#
interface ft2232
ft2232_device_desc "OOCDLink"
ft2232_layout oocdlink
ft2232_vid_pid 0x0403 0xbaf8
adapter_khz 5

View File

@ -1,15 +0,0 @@
#
# Opendous
#
# http://code.google.com/p/opendous/wiki/JTAG
#
# According to the website, it is similar to jtagkey, but it uses channel B
# (and it has a different pid number).
#
interface ft2232
ft2232_device_desc "Dual RS232-HS"
ft2232_layout jtagkey
ft2232_vid_pid 0x0403 0x6010
ft2232_channel 2

View File

@ -1,11 +0,0 @@
#
# embedded projects openocd usb adapter v3
#
# http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=14
#
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_device_desc "Dual RS232-HS"
ft2232_layout "oocdlink"
ft2232_latency 2

View File

@ -1,11 +0,0 @@
#
# Hubert Hoegl's USB to JTAG
#
# http://www.hs-augsburg.de/~hhoegl/proj/usbjtag/usbjtag.html
#
interface ft2232
ft2232_vid_pid 0x0403 0x6010
ft2232_device_desc "Dual RS232"
ft2232_layout "oocdlink"
ft2232_latency 2

View File

@ -1,12 +0,0 @@
#
# Marvell OpenRD
#
# http://www.marvell.com/products/embedded_processors/developer/kirkwood/openrd.jsp
#
interface ft2232
ft2232_layout sheevaplug
ft2232_vid_pid 0x0403 0x9e90
ft2232_device_desc "OpenRD JTAGKey FT2232D B"
adapter_khz 3000

View File

@ -1,13 +0,0 @@
#
# Redwire Redbee-Econotag
#
# http://www.redwirellc.com/store/node/1
#
# The Redbee-Econotag has an onboard FT2232H with:
# - FT2232H channel A wired to mc13224v JTAG
# - FT2232H channel B wired to mc13224v UART1
#
interface ft2232
ft2232_layout redbee-econotag
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,13 +0,0 @@
#
# Redwire Redbee-USB
#
# http://www.redwirellc.com
#
# The Redbee-USB has an onboard FT2232H with:
# - FT2232H channel B wired to mc13224v JTAG
# - FT2232H channel A wired to mc13224v UART1
#
interface ft2232
ft2232_layout redbee-usb
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,12 +0,0 @@
#
# Marvel SheevaPlug Development Kit
#
# http://www.marvell.com/products/embedded_processors/developer/kirkwood/sheevaplug.jsp
#
interface ft2232
ft2232_layout sheevaplug
ft2232_vid_pid 0x9e88 0x9e8f
ft2232_device_desc "SheevaPlug JTAGKey FT2232D B"
adapter_khz 2000

View File

@ -1,11 +0,0 @@
#
# Xverve Signalyzer H2 (DT-USB-SH2)
#
# http://www.signalyzer.com
#
interface ft2232
ft2232_device_desc "Signalyzer H2"
ft2232_layout signalyzer-h
ft2232_vid_pid 0x0403 0xbca2

View File

@ -1,11 +0,0 @@
#
# Xverve Signalyzer H4 (DT-USB-SH4)
#
# http://www.signalyzer.com
#
interface ft2232
ft2232_device_desc "Signalyzer H4"
ft2232_layout signalyzer-h
ft2232_vid_pid 0x0403 0xbca4

View File

@ -1,11 +0,0 @@
#
# Xverve Signalyzer LITE (DT-USB-SLITE)
#
# http://www.signalyzer.com
#
interface ft2232
ft2232_device_desc "Signalyzer LITE"
ft2232_layout signalyzer
ft2232_vid_pid 0x0403 0xbca1

View File

@ -1,11 +0,0 @@
#
# Xverve Signalyzer Tool (DT-USB-ST)
#
# http://www.signalyzer.com
#
interface ft2232
ft2232_device_desc "Signalyzer"
ft2232_layout signalyzer
ft2232_vid_pid 0x0403 0xbca0

View File

@ -1,11 +0,0 @@
#
# Hitex STM32-PerformanceStick
#
# http://www.hitex.com/index.php?id=340
#
interface ft2232
ft2232_device_desc "STM32-PerformanceStick"
ft2232_layout stm32stick
ft2232_vid_pid 0x0640 0x002d

View File

@ -1,15 +0,0 @@
#
# egnite Turtelizer 2
#
# http://www.ethernut.de/en/hardware/turtelizer/index.html
#
# Deprecated, if possible use tcl/interface/ftdi/turtelizer...
# To run, one of following configure option needed
# --enable-legacy-ft2232_libftdi
# --enable-legacy-ft2232_ftd2xx
interface ft2232
ft2232_device_desc "Turtelizer JTAG/RS232 Adapter"
ft2232_layout turtelizer2
ft2232_vid_pid 0x0403 0xbdc8

View File

@ -1,10 +0,0 @@
#
# Voipac VPACLink
#
# http://voipac.com/27M-JTG-000
#
interface ft2232
ft2232_device_desc "VPACLink A"
ft2232_layout oocdlink
ft2232_vid_pid 0x0403 0x6010

View File

@ -1,10 +0,0 @@
#
# Texas Instruments XDS100v2
#
# http://processors.wiki.ti.com/index.php/XDS100#XDS100v2_Features
#
interface ft2232
ft2232_device_desc "Texas Instruments Inc.XDS100 Ver 2.0"
ft2232_layout xds100v2
ft2232_vid_pid 0x0403 0xa6d0