Compiling OpenOCD WinXP
Revision as of 09:31, 23 June 2015 by Jshankar (1 revision imported: EdWiki -- Emsys pages from Shukra)
This guide will compile OpenOCD 0.5.0 on Windows XP with the LibFTDI driver library, for use with the CEDT-USB-JTAG adapter. 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.
Download and install Cygwin 1.7.9 from http://www.cygwin.com. 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 http://cygwin.com/install.html.
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 http://cygwin.com/ml/cygwin/2011-06/msg00021.html.
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)
- 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 CEDT-USB-JTAG Adapter
Libusb is a USB driver library you will need to communicate with the CEDT-USB-JTAG adapter. 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-18.104.22.168 from http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/22.214.171.124/libusb-win32-bin-126.96.36.199.zip/download. Open the zip archive and extract the contents to C:\cygwin\home.
Navigate to the folder \libusb-win32-bin-188.8.131.52\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-184.108.40.206\include. Copy the file usb.h to C:\cygwin\usr\include and C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\include.
Plug the STM32L-Discovery board into your computer's USB port. The Windows Found New Hardware Wizard will appear twice, once for each interface. Click Cancel both times.
In Windows Explorer or from the command line, navigate to \libusb-win32-bin-220.127.116.11\bin and run inf-wizard.exe. Click Next from the first screen. You should see a menu with two devices, STLINK (Interface 1) and STLINK (Interface 0). Select STLINK (Interface 1) and click Next twice. You will be prompted to save an .inf file to your hard drive. Click Save. On the next screen, click Install Now. You may see a warning that the driver has not been digitally signed by Microsoft. Click Yes to install anyway.
Now repeat this process for STLINK (Interface 0). To see if the install was successful, open the Device Manager (Start Menu > Control Panel > System > Hardware tab > Device Manager). If the install is successful, you will see two new devices labeled STLINK (Interface 0) and STLINK (Interface 1).
LibFTDI is an open source FTDI driver you will need to compile OpenOCD . Download libftdi-0.19.tar.gz from http://www.intra2net.com/en/developer/libftdi/download.php, and save it to C:\cygwin\home.
Open the Cygwin command line interface. The default installation will create a shortcut in your start menu, Start Menu > All Programs > Cygwin > Cygwin Bash Shell. Navigate to \home and extract libftdi using gzip:
cd /home tar -zxvf libftdi-0.19.tar.gz
In the Cygwin command console navigate to the folder where you extracted the libFTDI source.
Compile with the following commands. Run the first and wait for it to finish, then run the next, and so on:
./configure --build=i686-pc-cygwin --host=i686-pc-mingw32 make
In Cygwin or Windows Explorer, navigate to C:\cygwin\home\libftdi-0.19\src. Find the file ftdi.h and copy it to C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\include. Then in C:\cygwin\home\libftdi-0.19\src\.libs, find the file libftdi.a, and copy it to C:\cygwin\usr\i686-pc-mingw32\sys-root\mingw\lib.
A Note about Make Errors
With the latest version of Cygwin and its associated packages you may encounter errors with make commands. You may be able to fix these errors simply by powering through; if make gives an error, run make again. If it doesn't halt again in the same place, you can likely proceed without worry.
You may also encounter errors with the bootstrap command used to compile OpenOCD below. Try running bootstrap again. If it passes the point where it previously halted everything is most likely fine.
Download the OpenOCD 0.5.0 source from http://prdownload.berlios.de/openocd/openocd-0.5.0.zip and extract it to /home/USERNAME/openocd-0.5.0. This source doesn't include support for CEDT-SW-JTAG adapter.
The openocd-0.5.0-with-CEDT-SW-JTAG-support.patch patch provides support for CEDT-SW-JTAG adapter and config file for OpenOCD-0.5.0. Download the file openocd-0.5.0-with-CEDT-SW-JTAG-support.patch and Save the file to your new openocd-0.5.0 directory.
In the terminal window, navigate to the patch file and patch the source as follows:
cd ~/openocd-0.5.0 patch -p1 -i openocd-0.5.0-with-CEDT-SW-JTAG-support.patch
In the Cygwin command window, navigate to the new folder containing the OpenOCD source and compile as follows.
cd /home/openocd-0.5.0 ./configure --disable-werror --enable-ft2232_libftdi --build=i686-pc-cygwin --host=i686-pc-mingw32 make
Preparing to Run OpenOCD
Navigate to C:\cygwin\home\openocd\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\openocd\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-bin.
In another Windows Explorer window, open C:\cygwin\home\openocd\tcl. Click and drag to select all the contents of the folder. Right-click on any file and select Copy. Open C:\openocd-bin, right-click anywhere, and select Paste.
Now go to C:\cygwin\home\openocd\src and copy openocd.exe to C:\openocd-bin. The folder should now contain the following files and folders:
board chip cpld cpu openocd.exe interface target test bitsbytes.tcl memory.tcl mmr_helpers.tcl readable.tcl