OpenOCD provides on-chip programming and debugging support with a
layered architecture of JTAG interface and TAP support including:
-- (X)SVF playback to faciliate automated boundary scan and FPGA/CPLD
+- (X)SVF playback to facilitate automated boundary scan and FPGA/CPLD
programming;
- debug target support (e.g. ARM, MIPS): single-stepping,
- breakpoints/watchpoints, etc;
+ breakpoints/watchpoints, gprof profiling, etc;
- flash chip drivers (e.g. CFI, NAND, internal flash);
-- embedded TCL intepreter for easy scripting.
+- 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
you need to source both the jtag interface and the target configs,
e.g.:
- openocd -f interface/ftdi/jtagkey2.cfg -f target/ti_calypso.cfg
+ openocd -f interface/ftdi/jtagkey2.cfg -c "transport select jtag" \
+ -f target/ti_calypso.cfg
-NB: when using an FTDI-based adapter you should prefer configs in the
-ftdi directory; the old configs for the ft2232 are deprecated.
+ openocd -f interface/stlink.cfg -c "transport select hla_swd" \
+ -f target/stm32l0.cfg
After OpenOCD startup, connect GDB with
viewed online at the following URLs:
OpenOCD User's Guide:
- http://openocd.sourceforge.net/doc/html/index.html
+ http://openocd.org/doc/html/index.html
OpenOCD Developer's Manual:
- http://openocd.sourceforge.net/doc/doxygen/html/index.html
+ 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.
-------------
AICE, ARM-JTAG-EW, ARM-USB-OCD, ARM-USB-TINY, AT91RM9200, axm0432,
-BCM2835, Bus Blaster, Buspirate, Chameleon, Cortino, DLC 5,
-DLP-USB1232H, embedded projects, eStick, FlashLINK, FlossJTAG,
-Flyswatter, Flyswatter2, Hoegl, ICDI, ICEBear, J-Link, 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,
+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,
-Feroceon/Dragonite, DSP563xx, DSP5680xx, FA526, MIPS EJTAG, NDS32,
-XScale.
+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
-------------
-ADUC702x, AT91SAM, AVR, CFI, DSP5680xx, EFM32, EM357, FM3, Kinetis,
-LPC2000, LPC2900, LPCSPIFI, PIC32mx, Stellaris, STM32, STMSMI, STR7x,
-STR9x; NAND controllers of AT91SAM9, LPC3180, LPC32xx, i.MX31, MXC,
-NUC910, Orion/Kirkwood, S3C24xx, S3C6400.
+ADUC702x, AT91SAM, ATH79, AVR, CFI, DSP5680xx, EFM32, EM357, eSi-TSMC, FM3,
+FM4, Freedom E SPI, 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.
==================
particular hardware;
- Use "ftdi" interface adapter driver for the FTDI-based devices.
-As a PACKAGER, never link against the FTD2XX library, as the resulting
-binaries can't be legally distributed, due to the restrictions of the
-GPL.
-
================
Building OpenOCD
Additionally, for building from git:
-- autoconf >= 2.59
-- automake >= 1.9
+- autoconf >= 2.64
+- automake >= 1.14
- texinfo
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
-drivers need either one of:
+USB-Blaster, ASIX Presto and OpenJTAG interface adapter
+drivers need:
- libftdi: http://www.intra2net.com/en/developer/libftdi/index.php
- - ftd2xx: http://www.ftdichip.com/Drivers/D2XX.htm (proprietary,
- GPL-incompatible)
+
+CMSIS-DAP support needs HIDAPI library.
Permissions delegation
----------------------
Running OpenOCD with root/administrative permissions is strongly
discouraged for security reasons.
-For USB devices on GNU/Linux you should use the contrib/openocd.udev
-rules file. It probably belongs somewhere in /etc/udev/rules.d, but
+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.
if you want to use giveio instead of ioperm parallel port access
method.
-Using FTDI's FTD2XX
--------------------
-
-The (closed source) FTDICHIP.COM solution is faster than libftdi on
-Windows. That 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'' convenient. As of this
-writing FTDICHIP does not supply means to install these files "in an
-appropriate place."
-
-You should use the following ./configure options to make use of
-FTD2XX:
-
- --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=(static|shared)
- Use static or shared ftd2xx libs (default is static)
-
-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.
-
-Note that on Linux there is no good reason to use these FTDI binaries;
-they are no faster (on Linux) than libftdi, and cause licensing issues.
-
==========================
Obtaining OpenOCD From GIT