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基本工具之外,还需要:
-
libtool, Cygwin的Devel分类下,libtool: Generic library support script。
-
pkg-config, Cygwin的Devel分类下,pkg-config: Package compiling configuration utility.
如果使用64bit Windows,可能需要安装64bit版本,我没有验证。
对于stlink v2 debug probe,还需要安装libusb包,包括库和源码。Cygwin的Libs分类下
-
libusb1.0: USB library
-
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
组合键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也是可行的。