From EdWiki

Revision as of 03:35, 16 March 2022 by Jshankar (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This guide will compile OpenOCD {{{3}}} on {{{{{1}}}_OSNAME}} with the {{{{{2}}}_NAME_CAPS}} driver library, for use with the STM32L-Discovery Boards (ST-LINK/V2). The executable created with this guide is compatible with Windows XP and Windows 7. The process is identical on 32 and 64 bit versions of Windows.

This guide makes use of the GCC cross-compiler added to Cygwin on June 2, 2011. The cross-compiler makes compiling OpenOCD for Windows much easier.

Version {{{3}}} is the version of OpenOCD currently released.

OpenOCD 0.7.0 Release

This guide uses the most recent version of the OpenOCD. Unlike the v0.5.0 and earlier releases, this version includes support for the STMicroelectronics ST-LINK/V2.


Installing Cygwin

Download and install Cygwin 1.7.9 from Cygwin provides a GNU development environment for Windows, which will allow you to compile OpenOCD using the GNU Compiler Collection (GCC). You will not need Cygwin to run OpenOCD. The Cygwin installer is available at {{{{{1}}}_IMG_CYGINSTALL}}

If you already have Cygwin installed, this guide recommends that you delete it and reinstall completely. Close all Cygwin windows and services and delete your Cygwin directory (by default, C:\cygwin). Then find any packages downloaded but not installed and delete them as well. You set the location of these files when you installed Cygwin. By default they appear in My Documents/Downloads. If you don't wish to reinstall Cygwin you can find more information at

In the Cygwin installer you will be prompted to select additional packages to install. Install the following optional packages, found under the Devel heading:

  • autoconf (all packages)
  • automake (all packages)
  • binutils
  • gcc
  • gcc-core
  • gcc-g++
  • git
  • libtool
  • libusb-1.0
  • libusb-win32
  • libusb-devel
  • make
  • mingw-binutils
  • mingw-gcc
  • mingw-gcc-core
  • mingw-gcc-g++
  • mingw-pthreads
  • mingw-runtime
  • patch (found under the Utils heading)

Check all of these packages and click Next. Cygwin will inform you that it must install additional packages to satisfy the above packages' dependencies. Allow it to do so. Make sure that the Select Required Packages checkbox is checked before you proceed.

Installing libusb for the ST-LINK/V2

Libusb is a usb driver library you will need to communicate with the ST-LINK/V2. You will need a newer version of libusb than the one distributed through the Cygwin installer, and you will need libusb for Windows as well. Download libusb-win32- from Open the zip archive and extract the contents to C:\cygwin\home.

Navigate to the folder \libusb-win32-bin-\lib\gcc. Copy the file libusb.a to C:\cygwin\lib and C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\lib.

Navigate to \libusb-win32-bin-\include. Copy the file usb.h to C:\cygwin\usr\include and C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\include.




Downloading OpenOCD {{{3}}}

In the Cygwin console window, navigate to your home directory and make sure you don't already have a directory there named openocd/. If you already have a directory called openocd/ either rename it or navigate to a different directory before you proceed. Then download OpenOCD source from the following source.

cd ~
Download the OpenOCD {{{3}}} source from 

and and extract it to /home/USERNAME/openocd-{{{3}}}.

Compiling OpenOCD

In the terminal window, navigate to the new folder containing the OpenOCD source and compile as follows.

cd ~/openocd-{{{3}}}



Navigate to /home/openocd-{{{3}}}/src to find the openocd binary. You can run the binary from the Windows command line interface without using Cygwin.

Preparing to Run OpenOCD

Navigate to C:\cygwin\home\openocd-{{{3}}}\src to find openocd.exe. The executable can be run from the Windows command line and does not require Cygwin.

You can run openocd from C:\cygwin\home\{{{3}}}\src, but you may encounter problems with configuration files. For a more in-depth discussion of these issues, see OpenOCD Config File Paths. This guide recommends that you create a new folder containing OpenOCD and its config files. Go to Start Menu > My Computer and open your C: drive. Right-click anywhere in the C: drive window and select New > Folder. Rename the new folder openocd-{{{3}}}-bin.

In another Windows Explorer window, open C:\cygwin\home\openocd-{{{3}}}\tcl. Click and drag to select all the contents of the folder. Right-click on any file and select Copy. Open C:\openocd-{{{3}}}-bin, right-click anywhere, and select Paste.

Now go to C:\cygwin\home\openocd-{{{3}}}\src and copy openocd.exe to C:\openocd-{{{3}}}-bin. The folder should now contain the following files and folders:


You can now run OpenOCD from C:\openocd-{{{3}}}-bin. To get started running OpenOCD, see Running OpenOCD on Windows.