]> git.sur5r.net Git - openocd/blobdiff - README
tcl/target: ti_tms570.cfg restructure dap support
[openocd] / README
diff --git a/README b/README
index c97bc2a7651e285127efbc5abbd2565650095de8..30443d37c7e3b1fd76db350e1c8e068a5e618bf8 100644 (file)
--- a/README
+++ b/README
@@ -2,45 +2,84 @@ Welcome to OpenOCD!
 ===================
 
 OpenOCD provides on-chip programming and debugging support with a
-layered architecture of JTAG interface and TAP support, debug target
-support (e.g. ARM, MIPS), and flash chip drivers (e.g. CFI, NAND, etc.).
-Several network interfaces are available for interactiving with OpenOCD:
-HTTP, telnet, TCL, and GDB.  The GDB server enables OpenOCD to function
-as a "remote target" for source-level debugging of embedded systems
-using the GNU GDB program.
+layered architecture of JTAG interface and TAP support including:
+
+- (X)SVF playback to facilitate automated boundary scan and FPGA/CPLD
+  programming;
+- debug target support (e.g. ARM, MIPS): single-stepping,
+  breakpoints/watchpoints, gprof profiling, etc;
+- flash chip drivers (e.g. CFI, NAND, internal flash);
+- embedded TCL interpreter for easy scripting.
+
+Several network interfaces are available for interacting with OpenOCD:
+telnet, TCL, and GDB. The GDB server enables OpenOCD to function as a
+"remote target" for source-level debugging of embedded systems using
+the GNU GDB program (and the others who talk GDB protocol, e.g. IDA
+Pro).
 
 This README file contains an overview of the following topics:
+
+- quickstart instructions,
 - how to find and build more OpenOCD documentation,
-- the build process
+- list of the supported hardware,
+- the installation and build process,
 - packaging tips.
-- configuration options
+
+
+============================
+Quickstart for the impatient
+============================
+
+If you have a popular board then just start OpenOCD with its config,
+e.g.:
+
+  openocd -f board/stm32f4discovery.cfg
+
+If you are connecting a particular adapter with some specific target,
+you need to source both the jtag interface and the target configs,
+e.g.:
+
+  openocd -f interface/ftdi/jtagkey2.cfg -c "transport select jtag" \
+          -f target/ti_calypso.cfg
+
+  openocd -f interface/stlink.cfg -c "transport select hla_swd" \
+          -f target/stm32l0.cfg
+
+After OpenOCD startup, connect GDB with
+
+  (gdb) target extended-remote localhost:3333
+
 
 =====================
 OpenOCD Documentation
 =====================
 
-In addition to in-tree documentation, the latest documentation may be
-viewed on-line at the following URLs:
+In addition to the in-tree documentation, the latest manuals may be
+viewed online at the following URLs:
 
- OpenOCD User's Guide:
-    http://openocd.berlios.de/doc/html/index.html
 OpenOCD User's Guide:
+    http://openocd.org/doc/html/index.html
 
- OpenOCD Developer's Manual:
-    http://openocd.berlios.de/doc/doxygen/index.html
 OpenOCD Developer's Manual:
+    http://openocd.org/doc/doxygen/html/index.html
 
 These reflect the latest development versions, so the following section
 introduces how to build the complete documentation from the package.
 
-
 For more information, refer to these documents or contact the developers
 by subscribing to the OpenOCD developer mailing list:
 
-       openocd-development@lists.berlios.de
+       openocd-devel@lists.sourceforge.net
 
 Building the OpenOCD Documentation
 ----------------------------------
 
-The OpenOCD User's Guide can be produced in two different format:
+By default the OpenOCD build process prepares documentation in the
+"Info format" and installs it the standard way, so that "info openocd"
+can access it.
+
+Additionally, the OpenOCD User's Guide can be produced in the
+following different formats:
 
   # If PDFVIEWER is set, this creates and views the PDF User Guide.
   make pdf && ${PDFVIEWER} doc/openocd.pdf
@@ -52,13 +91,45 @@ The OpenOCD Developer Manual contains information about the internal
 architecture and other details about the code:
 
   # NB! make sure doxygen is installed, type doxygen --version
-  make doxygen
+  make doxygen && ${HTMLVIEWER} doxygen/index.html
+
+
+==================
+Supported hardware
+==================
+
+JTAG adapters
+-------------
+
+AICE, ARM-JTAG-EW, ARM-USB-OCD, ARM-USB-TINY, AT91RM9200, axm0432,
+BCM2835, Bus Blaster, Buspirate, Chameleon, CMSIS-DAP, Cortino, DENX,
+Digilent JTAG-SMT2, DLC 5, DLP-USB1232H, embedded projects, eStick,
+FlashLINK, FlossJTAG, Flyswatter, Flyswatter2, Gateworks, Hoegl, ICDI,
+ICEBear, J-Link, JTAG VPI, JTAGkey, JTAGkey2, JTAG-lock-pick, KT-Link,
+Lisa/L, LPC1768-Stick, MiniModule, NGX, NXHX, OOCDLink, Opendous,
+OpenJTAG, Openmoko, OpenRD, OSBDM, Presto, Redbee, RLink, SheevaPlug
+devkit, Stellaris evkits, ST-LINK (SWO tracing supported),
+STM32-PerformanceStick, STR9-comStick, sysfsgpio, TUMPA, Turtelizer,
+ULINK, USB-A9260, USB-Blaster, USB-JTAG, USBprog, VPACLink, VSLLink,
+Wiggler, XDS100v2, Xverve.
+
+Debug targets
+-------------
+
+ARM11, ARM7, ARM9, AVR32, Cortex-A, Cortex-R, Cortex-M, LS102x-SAP,
+Feroceon/Dragonite, DSP563xx, DSP5680xx, EnSilica eSi-RISC, FA526, MIPS
+EJTAG, NDS32, XScale, Intel Quark.
+
+Flash drivers
+-------------
 
-  # If HTMLVIEWER is set, this views the HTML Doxygen output.
-  ${HTMLVIEWER} doxygen/index.html
+ADUC702x, AT91SAM, ATH79, AVR, CFI, DSP5680xx, EFM32, EM357, eSi-TSMC,
+FM3, FM4, Kinetis, LPC8xx/LPC1xxx/LPC2xxx/LPC541xx, LPC2900, LPCSPIFI,
+Marvell QSPI, Milandr, NIIET, NuMicro, PIC32mx, PSoC4, PSoC5LP, SiM3x,
+Stellaris, STM32, STMSMI, STR7x, STR9x, nRF51; NAND controllers of
+AT91SAM9, LPC3180, LPC32xx, i.MX31, MXC, NUC910, Orion/Kirkwood,
+S3C24xx, S3C6400, XMC1xxx, XMC4xxx.
 
-The remaining sections describe how to configure the system such that
-you can build the in-tree documentation.
 
 ==================
 Installing OpenOCD
@@ -68,16 +139,17 @@ A Note to OpenOCD Users
 -----------------------
 
 If you would rather be working "with" OpenOCD rather than "on" it, your
-operating system or interface supplier may provide binaries for you in a
-convenient package.
-
-Such packages should be more stable than SVN trunk, where bleeding-edge
-development takes place.  These "Packagers" produce binary releases of
-OpenOCD after the developers produces new "stable" versions of the
-source code.  Previous versions of OpenOCD cannot be used to diagnosed
-problems with the current release, so users are encouraged to keep in
-contact with their distribution package maintainers or interface vendors
-to ensure suitable upgrades appear regularly.
+operating system or JTAG interface supplier may provide binaries for
+you in a convenient-enough package.
+
+Such packages may be more stable than git mainline, where
+bleeding-edge development takes place. These "Packagers" produce
+binary releases of OpenOCD after the developers produces new "release"
+versions of the source code. Previous versions of OpenOCD cannot be
+used to diagnose problems with the current release, so users are
+encouraged to keep in contact with their distribution package
+maintainers or interface vendors to ensure suitable upgrades appear
+regularly.
 
 Users of these binary versions of OpenOCD must contact their Packager to
 ask for support or newer versions of the binaries; the OpenOCD
@@ -88,10 +160,9 @@ A Note to OpenOCD Packagers
 
 You are a PACKAGER of OpenOCD if you:
 
-- Sell dongles: and include pre-built binaries
-- Supply tools: A complete development solution
-- Supply IDEs: like Eclipse, or RHIDE, etc.
-- Build packages: RPM files, or DEB files for a Linux Distro
+- Sell dongles and include pre-built binaries;
+- Supply tools or IDEs (a development solution integrating OpenOCD);
+- Build packages (e.g. RPM or DEB files for a GNU/Linux distribution).
 
 As a PACKAGER, you will experience first reports of most issues.
 When you fix those problems for your users, your solution may help
@@ -105,21 +176,21 @@ resolved in our future releases.
 That said, the OpenOCD developers would also like you to follow a few
 suggestions:
 
-- Send patches, including config files, upstream.
-- Always build with printer ports enabled.
-- Use libftdi + libusb for FT2232 support.
+- Send patches, including config files, upstream, participate in the
+  discussions;
+- Enable all the options OpenOCD supports, even those unrelated to your
+  particular hardware;
+- Use "ftdi" interface adapter driver for the FTDI-based devices.
 
-Remember, the FTD2XX library cannot be used in binary distributions, due
-to restrictions of the GPL v2.
 
 ================
 Building OpenOCD
 ================
 
 The INSTALL file contains generic instructions for running 'configure'
-and compiling the OpenOCD source code.  That file is provided by default
-for all GNU automake packages.  If you are not familiar with the GNU
-autotools, then you should read those instructions first.  
+and compiling the OpenOCD source code. That file is provided by
+default for all GNU autotools packages. If you are not familiar with
+the GNU autotools, then you should read those instructions first.
 
 The remainder of this document tries to provide some instructions for
 those looking for a quick-install.
@@ -127,359 +198,133 @@ those looking for a quick-install.
 OpenOCD Dependencies
 --------------------
 
-Presently, GCC is required to build OpenOCD.  The developers have begun
-to enforce strict code warnings (-Wall, -Werror, -Wextra, and more) and
-use C99-specific features: inline functions, named initializers, mixing
-declarations with code, and other tricks.  While it may be possible to
-use other compilers, they must be somewhat modern and could require
-extending support to conditionally remove GCC-specific extensions.
-
-Also, you need to install the appropriate driver files, if you want to
-build support for a USB or FTDI-based interface:
-
-- ft2232, jlink, rlink, vsllink, usbprog, arm-jtag-ew:
-  - libusb: required for portable communication with USB dongles
-- ft2232 also requires:
-  - libftdi: http://www.intra2net.com/opensource/ftdi/  *OR*
-  - ftd2xx: http://www.ftdichip.com/Drivers/D2XX.htm,
-    or the Amontec version (from http://www.amontec.com), for
-    easier support of JTAGkey's vendor and product IDs.
-
-Many Linux distributions provide these packages through their automated
-installation and update mechanisms; however, some Linux versions include
-older versions of libftdi.  In particular, using Ubuntu 8.04 has been
-problematic, but newer versions of Ubuntu do not have this problem.
-
-Compiling OpenOCD
------------------
-
-To build OpenOCD (on both Linux and Cygwin), use the following sequence
-of commands:
+GCC or Clang is currently required to build OpenOCD. The developers
+have begun to enforce strict code warnings (-Wall, -Werror, -Wextra,
+and more) and use C99-specific features: inline functions, named
+initializers, mixing declarations with code, and other tricks. While
+it may be possible to use other compilers, they must be somewhat
+modern and could require extending support to conditionally remove
+GCC-specific extensions.
 
-   ./configure [with some options listed in the next section]
-   make 
-   make install
+You'll also need:
 
-The 'configure' step generates the Makefiles required to build OpenOCD,
-usually with one or more options provided to it.  The first 'make' step
-will build OpenOCD and place the final executable in ./src/.  The
-final (optional) step, ``make install'', places all of the files in the
-required location.
+- make
+- libtool
+- pkg-config >= 0.23 (or compatible)
 
-Cross-Compiling Options
------------------------
+Additionally, for building from git:
 
-To cross-compile, you must specify both --build and --host options to
-the 'configure' script.  For example, you can configure OpenOCD to
-cross-compile on a x86 Linux host to run on Windows (MinGW32), you could
-use the following configuration options:
+- autoconf >= 2.64
+- automake >= 1.14
+- texinfo
 
-  ./configure --build=i686-pc-linux-gnu --host=i586-mingw32msvc ... 
+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.
 
-Likewise, the following options allow OpenOCD to be cross-compiled for
-an ARM target on the same x86 host:
+USB-Blaster, ASIX Presto and OpenJTAG interface adapter
+drivers need:
+  - libftdi: http://www.intra2net.com/en/developer/libftdi/index.php
 
-  ./configure --build=i686-pc-linux-gnu --host=arm-elf ...
+CMSIS-DAP support needs HIDAPI library.
 
-Both must be specified to work around bugs in autoconf.
+Permissions delegation
+----------------------
 
-Scripts for producing ARM cross-compilers can be found on the web with a
-little searching.  A script to produce an x86 Linux-hosted MinGW32
-cross-compiler can be downloaded from the following URL:
+Running OpenOCD with root/administrative permissions is strongly
+discouraged for security reasons.
 
-  http://www.mingw.org/wiki/LinuxCrossMinGW
+For USB devices on GNU/Linux you should use the contrib/60-openocd.rules
+file. It probably belongs somewhere in /etc/udev/rules.d, but
+consult your operating system documentation to be sure. Do not forget
+to add yourself to the "plugdev" group.
 
-Configuration Options
----------------------
+For parallel port adapters on GNU/Linux and FreeBSD please change your
+"ppdev" (parport* or ppi*) device node permissions accordingly.
 
-The configure script takes numerous options, specifying which JTAG
-interfaces should be included (among other things).  The following list
-of options was extracted from the output of './configure --help'.  Other
-options may be available there:
-
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-                          (and sometimes confusing) to the casual installer
-                         NOTE: This option is *required* for SVN builds!
-                         It should *not* be used to build a release.
-
-  --enable-dummy          Enable building the dummy JTAG port driver
-
-  --enable-ft2232_libftdi Enable building support for FT2232 based devices
-                          using the libftdi driver, opensource alternate of
-                          FTD2XX
-  --enable-ft2232_ftd2xx  Enable building support for FT2232 based devices
-                          using the FTD2XX driver from ftdichip.com
-  --enable-ftd2xx-highspeed
-                          Enable building support for FT2232H and
-                          FT4232H-based devices (requires >=libftd2xx-0.4.16)
-
-  --enable-gw16012        Enable building support for the Gateworks GW16012
-                          JTAG Programmer
-
-  --enable-parport        Enable building the pc parallel port driver
-  --disable-parport-ppdev Disable use of ppdev (/dev/parportN) for parport
-                          (for x86 only)
-  --enable-parport-giveio Enable use of giveio for parport (for CygWin only)
-
-  --enable-presto_libftdi Enable building support for ASIX Presto Programmer
-                          using the libftdi driver
-  --enable-presto_ftd2xx  Enable building support for ASIX Presto Programmer
-                          using the FTD2XX driver
-
-  --enable-amtjtagaccel   Enable building the Amontec JTAG-Accelerator driver
-  --enable-arm-jtag-ew    Enable building support for the Olimex ARM-JTAG-EW
-                          Programmer
-  --enable-jlink          Enable building support for the Segger J-Link JTAG
-                          Programmer
-  --enable-rlink          Enable building support for the Raisonance RLink
-                          JTAG Programmer
-  --enable-usbprog        Enable building support for the usbprog JTAG
-                          Programmer
-  --enable-vsllink        Enable building support for the Versaloon-Link JTAG
-                          Programmer
-
-  --enable-oocd_trace     Enable building support for the OpenOCD+trace ETM
-                          capture device
-
-  --enable-ep93xx         Enable building support for EP93xx based SBCs
-  --enable-at91rm9200     Enable building support for AT91RM9200 based SBCs
-
-  --enable-ecosboard      Enable building support for eCos based JTAG debugger
-  --enable-zy1000         Enable ZY1000 interface
-
-  --enable-minidriver-dummy
-                          Enable the dummy minidriver.
-
-  --enable-ioutil         Enable ioutil functions - useful for standalone
-                          OpenOCD implementations
-  --enable-httpd          Enable builtin httpd server - useful for standalone
-                          OpenOCD implementations
-
-Miscellaneous Configure Options
--------------------------------
-
-The following additional options may also be useful:
-
-  --disable-assert        turn off assertions
-
-  --enable-verbose        Enable verbose JTAG I/O messages (for debugging).
-  --enable-verbose-jtag-io
-                          Enable verbose JTAG I/O messages (for debugging).
-  --enable-verbose-usb-io Enable verbose USB I/O messages (for debugging)
-  --enable-verbose-usb-comms
-                          Enable verbose USB communication messages (for
-                          debugging)
-  --enable-malloc-logging Include free space in logging messages (requires
-                          malloc.h).
-
-  --disable-gccwarnings   Disable extra gcc warnings during build.
-  --disable-wextra        Disable extra compiler warnings
-  --disable-werror        Do not treat warnings as errors
-
-  --disable-option-checking
-                          Ignore unrecognized --enable and --with options.
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-shared[=PKGS]  build shared libraries [default=no]
-  --enable-static[=PKGS]  build static libraries [default=yes]
+For parport adapters on Windows you need to run install_giveio.bat
+(it's also possible to use "ioperm" with Cygwin instead) to give
+ordinary users permissions for accessing the "LPT" registers directly.
 
-Parallel Port Dongles
----------------------
-
-If you want to access the parallel port using the PPDEV interface you
-have to specify both --enable-parport AND --enable-parport-ppdev, since the
-the later option is an option to the parport driver (see
-http://forum.sparkfun.com/viewtopic.php?t=3795 for more info).
-
-The same is true for the --enable-parport-giveio option, you
-have to use both the --enable-parport AND the --enable-parport-giveio
-option if you want to use giveio instead of ioperm parallel port access
-method.
-
-FT2232C Based USB Dongles 
--------------------------
-
-There are 2 methods of using the FTD2232, either (1) using the
-FTDICHIP.COM closed source driver, or (2) the open (and free) driver
-libftdi. 
-
-Using LIBFTDI
--------------
-
-For both Linux and Windows, both libusb and libftdi must be built and
-installed.  To use the newer FT2232H chips, supporting RTCK and USB high
-speed (480 Mbps), you need libftdi version 0.16 or newer.  Many Linux
-distributions provide suitable packages for these libraries.
-
-For Windows, libftdi is supported with versions 0.14 and later.  
-
-With these prerequisites met, configure the libftdi solution like this:
-
-  ./configure --prefix=/path/for/your/install --enable-ft2232_libftdi
-
-Then type ``make'', and perhaps ``make install''.
-
-Using FTDI's FTD2XX
--------------------
-
-Some claim the (closed) FTDICHIP.COM solution is faster, which
-is the motivation for supporting it even though its licensing restricts
-it to non-redistributable OpenOCD binaries, and it is not available for
-all operating systems used with OpenOCD.  You may, however, build such
-copies for personal use.
-
-The FTDICHIP drivers come as either a (win32) ZIP file, or a (Linux)
-TAR.GZ file. You must unpack them ``some where'' convient. As of this
-writing FTDICHIP does not supply means to install these files "in an
-appropriate place."  
-
-If your distribution does not package these, there are several
-'./configure' options to solve this problem:
-
-  --with-ftd2xx-win32-zipdir
-                          Where (CYGWIN/MINGW) the zip file from ftdichip.com
-                          was unpacked <default=search>
-  --with-ftd2xx-linux-tardir
-                          Where (Linux/Unix) the tar file from ftdichip.com
-                          was unpacked <default=search>
-  --with-ftd2xx-lib       Use static or shared ftd2xx libs on default static
-
-If you are using the FTDICHIP.COM driver, download and unpack the
-Windows or Linux FTD2xx drivers from the following location:
-
-       http://www.ftdichip.com/Drivers/D2XX.htm
-
-Remember, this library is binary-only, while OpenOCD is licenced
-according to GNU GPLv2 without any exceptions.  That means that
-_distributing_ copies of OpenOCD built with the FTDI code would violate
-the OpenOCD licensing terms.  
-
-
-Cygwin/Win32 Notes
-******************
+Compiling OpenOCD
+-----------------
 
-The Cygwin/Win32 ZIP file contains a directory named ftd2xx.win32.
-Assuming that you have extracted this archive in the same directory as
-the OpenOCD package, you could configure with options like the following:
+To build OpenOCD, use the following sequence of commands:
 
-   ./configure \
-       --enable-ft2232_ftd2xx \
-       --with-ftd2xx-win32-zipdir=../ftd2xx.win32 \
-       ... other options ...
+  ./bootstrap (when building from the git repository)
+  ./configure [options]
+  make
+  sudo make install
 
-Linux Notes
-***********
+The 'configure' step generates the Makefiles required to build
+OpenOCD, usually with one or more options provided to it. The first
+'make' step will build OpenOCD and place the final executable in
+'./src/'. The final (optional) step, ``make install'', places all of
+the files in the required location.
 
-The Linux tar.gz archive contains a directory named libftd2xx0.4.16
-(or similar).  Assuming that you have extracted this archive in the same
-directory as the OpenOCD package, you could configure with options like
-the following:
+To see the list of all the supported options, run
+  ./configure --help
 
-   ./configure \
-        --enable-ft2232_ftd2xx \
-        --with-ft2xx-linux-tardir=../libftd2xx0.4.16 \
-       ... other options ...
+Cross-compiling Options
+-----------------------
 
-=================================
-Obtaining OpenOCD From Subversion
----------------------------------
+Cross-compiling is supported the standard autotools way, you just need
+to specify the cross-compiling target triplet in the --host option,
+e.g. for cross-building for Windows 32-bit with MinGW on Debian:
 
-You can download the current SVN version with an SVN client of your
-choice from the following repositories:
+  ./configure --host=i686-w64-mingw32 [options]
 
-   svn://svn.berlios.de/openocd/trunk
-or
-   http://svn.berlios.de/svnroot/repos/openocd/trunk
+To make pkg-config work nicely for cross-compiling, you might need an
+additional wrapper script as described at
 
-Using the SVN command line client, you can use the following command to
-fetch the latest version (make sure there is no (non-svn) directory
-called "openocd" in the current directory):
+  http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html
 
-   svn checkout svn://svn.berlios.de/openocd/trunk openocd
+This is needed to tell pkg-config where to look for the target
+libraries that OpenOCD depends on. Alternatively, you can specify
+*_CFLAGS and *_LIBS environment variables directly, see "./configure
+--help" for the details.
 
-If you prefer GIT based tools, the git-svn package works too:
+Parallel Port Dongles
+---------------------
 
-   git svn clone -s svn://svn.berlios.de/openocd
+If you want to access the parallel port using the PPDEV interface you
+have to specify both --enable-parport AND --enable-parport-ppdev, since the
+the later option is an option to the parport driver.
 
-Tips For Building From The Subversion Repository
-************************************************
+The same is true for the --enable-parport-giveio option, you have to
+use both the --enable-parport AND the --enable-parport-giveio option
+if you want to use giveio instead of ioperm parallel port access
+method.
 
-Building OpenOCD from a repository requires a recent version of the GNU
-autotools (autoconf >= 2.59 and automake >= 1.9).  For building on
-Windows, you have to use Cygwin. Make sure that your PATH
-environment variable contains no other locations with Unix utils (like
-UnxUtils) - these can't handle the Cygwin paths, resulting in obscure
-dependency errors.  This was an observation gathered from the logs of
-one user; please correct us if this is wrong.
 
-1) Run './bootstrap' to create the 'configure' script and prepare
-   the build process for your host system.
+==========================
+Obtaining OpenOCD From GIT
+==========================
 
-2) Run './configure --enable-maintainer-mode' with other options.
+You can download the current GIT version with a GIT client of your
+choice from the main repository:
 
-The following URL is a good reference if you want to build OpenOCD
-under cygwin.
-http://forum.sparkfun.com/viewtopic.php?t=11221
-
-Alternatively you can build the Windows binary under Linux using
-MinGW cross compiler. The following documents some tips of
-using this cross build option.
-
-a) libusb-win32
-You can choose to use the libusb-win32 binary distribution from
-its Sourceforge page. As of this writing, the latest version
-is 0.1.12.2. This is the recommend version to use since it fixed
-an issue with USB composite device and this is important for FTDI
-based JTAG debuggers.
-http://sourceforge.net/projects/libusb-win32/
+   git://git.code.sf.net/p/openocd/code
 
-You need to download the libusb-win32-device-bin-0.1.12.2.tar.gz 
-package. Please extract this file into a temp directory. 
+You may prefer to use a mirror:
 
-Copy the file libusb-win32-device-bin-0.1.12.2\include\usb.h
-to your MinGW include directory.
+   http://repo.or.cz/r/openocd.git
+   git://repo.or.cz/openocd.git
 
-Copy the library libusb-win32-device-bin-0.1.12.2\lib\gcc\libusb.a
-to your MinGW library directory.
+Using the GIT command line client, you might use the following command
+to set up a local copy of the current repository (make sure there is no
+directory called "openocd" in the current directory):
 
-Take note that different Linux distros often have different
-MinGW installation directory. Some of them also put the
-library and include into a seperate sys-root directory.
+   git clone git://git.code.sf.net/p/openocd/code openocd
 
-If there is a new svn version of libusb-win32, you can build it
-as well. 
+Then you can update that at your convenience using
 
-This is the instrunction from the libusb-win32 Makefile.
-# If you're cross-compiling and your mingw32 tools are called
-# i586-mingw32msvc-gcc and so on, then you can compile libusb-win32
-# by running
-#    make host_prefix=i586-mingw32msvc all
+   git pull
 
-b) libftdi
-libftdi source codes can be download from the following website.
-http://www.intra2net.com/en/developer/libftdi/download.php
-
-It does not provide Windows binary. You can build it from the
-source tarball or the git tree.
+There is also a gitweb interface, which you can use either to browse
+the repository or to download arbitrary snapshots using HTTP:
 
-If you are using the git tree, the following is the instruction 
-from README.mingw. You need to have cmake installed.
-- Edit Toolchain-mingw32.cmake to point to the correct MinGW 
-installation.
-- Create a build directory like "mkdir build-win32", e.g in ../libftdi/
-- cd in that directory and run  
-  "cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake .."
-- Copy src/ftdi.h to your MinGW include directory.
-- Copy build-win32/src/*.a to your MinGW lib directory.
-
-c) OpenOCD
-Now you can build OpenOCD under Linux using MinGW.
-You need to use --host=your_mingW_prefix in the configure option.
-
-Example for libftdi (in one line, tested under Ubuntu 9.04):
-./configure --host=i586-mingw32msvc --enable-maintainer-mode 
---disable-shared --enable-ft2232_libftdi
+   http://repo.or.cz/w/openocd.git
 
-Example for ftd2xx (in one line, tested under Ubuntu 9.04)
-./configure --host=i586-mingw32msvc --enable-maintainer-mode 
---disable-shared --enable-ft2232_ftd2xx 
---with-ftd2xx-win32-zipdir=/home/mcuee/Desktop/build/openocd/libftd2xx-win32
+Snapshots are compressed tarballs of the source tree, about 1.3 MBytes
+each at this writing.