Windows下编译v0.12.0 OpenOCD
在研究JTAG的过程中,需要使用daplink生成jtag master的波形给jtag ip,因此研究了一下openocd+daplink,不得不吐槽openocd这个项目真是一言难尽,记录一下Windows环境下编译openocd的过程。我发现如果用公司加密电脑,很有可能遇到不过编译器检查,这一步会生成一个conftest.c并尝试编译它来验证编译器是否ok,但是这个生成的会被加密软件加锁,导致fail,所以把这个坑分享出来。
安装Msys2+工具链
https://www.msys2.org/ 下载安装包并安装 一路next即可 注意打开 Mingw64这个shell
1 | pacman -Syu |
64bit:
1 | pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-libusb mingw-w64-x86_64-libusb-compat-git mingw-w64-x86_64-hidapi mingw-w64-x86_64-libftdi mingw-w64-x86_64-capstone |
32bit:
1 | pacman -S mingw-w64-i686-toolchain mingw-w64-i686-libusb mingw-w64-i686-libusb-compat-git mingw-w64-i686-hidapi mingw-w64-i686-libftdi mingw-w64-i686-capstone |
下载openocd源码
直接git一把梭
1 | git clone --recurse-submodules git@github.com:openocd-org/openocd.git |
生成 makefile
1 | cd xxx #进openocd根目录 |
具体的config配置选项可以通过 ./configure --help
查看,有些情况需要交叉编译则需要在这里指定–host与–build,我们这个情况不需要指定,有些教程还需要手动下载libusb再想办法链接进去,咱们这个都不需要,上面pacman已经装了libusb工具了
–enable-cmsis-dap因为我需要用基于hid 的cmsis dap所以我只开启了这个,还可以disable掉其他不需要的以提高编译速度
TIPS: 如果你用公司加密电脑,很有可能这一步不过编译器检查,我发现这一步会生成一个conftest.c并尝试编译它来验证编译器是否ok,但是这个生成的会被加密软件加锁,导致链接失败,具体根因不确定是不是这个,反正我公司电脑这一步怎么都过不了,但是家里的电脑一次就成功了
编译
1 | make |
直接make一把梭,电脑cpu好的可以-j核心数,openocd比较大,要编一会
1 | make install |
生成exe文件 打包 写一个packer.sh,用msys2 shell执行,如果提示缺zip则可以pacman -S装一个
1 | #! /bin/bash |
在windows cmd中启动openocd
写一个启动脚本: run.bat
1 | openocd.exe -f pw.cfg -d4 # -f 配置文件 -d4 开启4级log输出 正常使用可以删掉 |
用于验证paris jtag的cfg文件参考: pw.cfg
1 | adapter driver cmsis-dap |
telnet连接OpenOCD命令行
openocd启动后会本地起一个localhost:4444端口的telnet server,可以通过windows自带的telnet连接进去以实时输入openocd命令
前提是打开windows的telnet客户端功能:
直接win+r cmd启动!
1 | telnet localhost 4444 |
连接成功即可愉快操作openocd