背景
在Ubuntu20.04上,使用apt install openocd只能获得0.10.0的版本,不支持STM32H7
安装openocd 0.12.0
安装依赖
sudo apt-get install build-essential pkg-config autoconf automake libtool libusb-dev libusb-1.0-0-dev libhidapi-dev
sudo apt-get install libtool libsysfs-dev
安装libjaylink0 0.2.0
在Ubuntu20.04上,使用apt install libjaylink-dev只能获得0.1.0的版本,不支持openocd 0.12.0、0.11.0。openocd 0.12.0需要0.2.0。
官网Ubuntu下的libjaylink 0.2.0-1源码包
去到官网,我们只需要libjaylink0,不需要libjaylink-dev。去到libjaylink0的页面:https://launchpad.net/ubuntu/kinetic/+package/libjaylink0
libjaylink0 0.2.0 amd64下载地址:http://launchpadlibrarian.net/488199447/libjaylink0_0.2.0-1_amd64.deb
下载下来之后,执行
sudo dpkg -i libjaylink0_0.2.0-1_amd64.deb
克隆openocd 0.12.0源码
git clone git@github.com:openocd-org/openocd.git
进入openocd目录:
cd openocd
安装openocd 0.12.0
github官网https://github.com/openocd-org/openocd/tree/master也有对安装过程的说明
第一步:
sudo ./bootstrap
在这一步可能会由于网络原因,导致git submodule update报错,无法克隆某个仓库:(./bootstrap中已经包含了git submodule init和git submodule update)
正克隆到 '/home/dingdangda/openocd/jimtcl'...
fatal: 无法访问 'https://github.com/msteveb/jimtcl.git/':GnuTLS recv error (-110): The TLS connection was non-properly terminated.
fatal: 无法克隆 'https://github.com/msteveb/jimtcl.git' 到子模组路径 '/home/dingdangda/openocd/jimtcl'
克隆 'jimtcl' 失败。按计划重试
正克隆到 '/home/dingdangda/openocd/src/jtag/drivers/libjaylink'...
正克隆到 '/home/dingdangda/openocd/tools/git2cl'...
正克隆到 '/home/dingdangda/openocd/jimtcl'...
fatal: 无法访问 'https://github.com/msteveb/jimtcl.git/':Failed to connect to github.com port 443: 连接超时
fatal: 无法克隆 'https://github.com/msteveb/jimtcl.git' 到子模组路径 '/home/dingdangda/openocd/jimtcl'
第二次尝试克隆 'jimtcl' 失败,退出
如果出现这种错误,自行解决终端代理问题。
解决之后,第二步:(参考:openOCD在Ubuntu上的安装)
sudo ./configure --enable-jlink --enable-cmsis-dap --enable-stlink
这一步要注意有无报错。如果没有安装前面提到的libjaylink0 0.2.0,是会报错的
第三步:
sudo make
第三步:
sudo make install
安装之后的目录位于:
/usr/local/bin/openocd
可以在clion中进行配置
如果是apt install openocd安装的openocd,会位于:
/usr/bin/openocd