A0300 编译和使用OpenOCD - matianfu/arabesque GitHub Wiki

前言

OpenOCD官方以源码方式发行,包括最新版的Git Repository和稳定版的源代码包;第三方(半官方)提供预编译的二进制版本,可直接下载使用。

实际使用中发现二进制发行版没有提供ST-Link的semihosting支持。如果你不需要semihosting功能,可以直接使用二进制发行版,如果需要semihosting支持,可参照本文档从源码自行Build二进制可执行文件。

在ST-Link v2上,semihosting的数据传输速度不快,比串口慢;所以对于打印log需求而言它没有多少实用价值;但是semihosting提供了主机的文件系统访问能力,可以较为方便的实现log文件的创建,测试结果的输出和保存,以及生成instrumentation文件,例如gcov文件。

本文档提供的方法基于Windows平台,需Cygwin和一些编译工具,编译过程很简单。

发行版

OpenOCD的官方网址是:

http://openocd.sourceforge.net/

在页面的右侧,Pages栏内有User Guide和Developer Guide的链接;其中User Guide提供了详细的使用说明,Developer Guide介绍了OpenOCD的代码框架结构。

在Getting OpenOCD的页面上,给出了获取OpenOCD软件的一些方法:

http://openocd.sourceforge.net/getting-openocd/

方法1:OpenOCD的稳定版官方源代码包,下载.zip或者.tar.gz均可,最新版本是0.8.0。

https://sourceforge.net/projects/openocd/files/openocd/

方法2:使用源代码池,最新的开发版本是0.9.x

git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd

方法3:下载Freddie Chopin提供的预编译的Windows平台二进制文件。

http://www.freddiechopin.info/en/download/category/4-openocd

本文采用第一种方式,选择稳定版编译。

包依赖性

下载解压源代码包,目录内有README文件。README中说明OpenOCD依赖的包,除了GCC/GDB/Make基本工具之外,还需要:

  1. libtool, Cygwin的Devel分类下,libtool: Generic library support script。

  2. pkg-config, Cygwin的Devel分类下,pkg-config: Package compiling configuration utility.

如果使用64bit Windows,可能需要安装64bit版本,我没有验证。

对于stlink v2 debug probe,还需要安装libusb包,包括库和源码。Cygwin的Libs分类下

  1. libusb1.0: USB library

  2. libusb1.0-dev: USB library

如果使用开发版本代码池

官方的README中提到还需要安装automake, autoconf和texinfo包,我在Ubuntu上用的是dev版源码编译,但没有在Windows上试过;目前没发现什么dev版特性是需要的。

编译和安装

完成安装上述包之后,打开一个新的Cygwin Shell,进入openocd源码目录,执行下述命令:

./configure --enable-maintainer-mode --enable-ft2232 --enable-stlink

make

make install

安装之后,OpenOCD的可执行文件路径在:

/usr/local/bin/openocd (Cygwin路径)

OpenOCD的其他文件安装在下述目录下:

/usr/local/share/openocd (Cygwin路径)

使用

Windows上需安装好st-link的官方驱动,下载地址是:

Windows XP, Vista and Windows 7

http://www.st.com/web/catalog/tools/FM147/SC1887/PF258167

Windows 8

http://www.st.com/web/catalog/tools/FM147/SC1887/PF259459

PC上插入STM32F4Disovery板,或者STM32F4 + stlink v2 Debug Probe,确认Windows上的驱动工作正常;

打开Cygwin Shell启动OpenOCD:

openocd -f /usr/local/share/openocd/scripts/board/stm32f4discovery.cfg

.cfg文件是openocd的配置文件;

上述命令是提供配置文件绝对路径的写法,openocd也接受相对路径,相对路径的默认前缀是:

/usr/local/share/openocd/scripts/

即上述命令可以简化为

openocd -f board/stm32f4discovery.cfg

alt text

组合键Ctrl+C可以退出openocd。

实际使用中,应该保持openocd一直运行,不需要每次Debug时启动Open,Debug结束后关闭。

如果MCU从stlink上拔掉然后重新连接,OpenOCD有可能无法重新建立连接,可退出OpenOCD然后重新启动。

编译但不安装

可以不运行make install,即不把OpenOCD的可执行文件和配置文件等复制到Cygwin的文件系统中,这时编译好的OpenOCD二进制文件在(假定源码包展开到~/openocd-0.8.0):

~/openocd-0.8.0/src/openocd.exe

配置文件目录是:

~/openocd-0.8.0/tcl

这样启动OpenOCD也是可行的。

alt text

⚠️ **GitHub.com Fallback** ⚠️