本帖最后由 kai迪皮 于 2022-11-29 14:18 编辑
#申请原创#
@21小跑堂
前言
前段时间用Xpack打包的OpenOCD可执行文件发现无法下载APM32F4的芯片,后面研究发现是OpenOCD未支持APM32系列MCU导致的,我在添加芯片支持的过程中尝试了许多方法,WSL2、Cygwin等环境去编译,发现都有各种各样的问题。现将能够顺利编译的MSYS2编译的过程给大家分享一下。
1 安装MSYS2
安装链接如下MSYS2 (http://www.msys2.org/),直接按照软件步骤一步步安装即可。安装完软件后需要对其环境需要更新,建议其镜像源切换至国内的。以下文件均在其安装目录下可以找到。
编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
- Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
- Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
- Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
2 安装相应的依赖环境点击相应的命令行软件打开命令行窗口,这里选择“MSYS2 MINGW64”。
1. 更新MSYS2,使用以下指令更新系统文件。直至无更新内容为止。
2. 安装依赖环境,
不同的操作系统对安装的环境有些许的差异要求,一般而言不同的软件依赖包有差异的一般为64bit的标识为“x86_64”,而32bit系统一般为“i686”。其相关的Pack可以在该网址搜索到。[Base Packages - MSYS2 Packages](https://packages.msys2.org/base)
64bit:
- pacman -S libtool autoconf automake texinfo pkg-config make autogen git unzip bzip2 base-devel 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</div><div> mingw-w64-x86_64-arm-none-eabi-gcc mingw-w64-x86_64-capstone
32bit:
- pacman -S libtool autoconf automake texinfo pkg-config make autogen git unzip bzip2 base-devel 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
3 下载与编译OpenOCD
3.1 下载OpenOCD
使用以下指令将克隆最新的OpenOCD源码至本地:
- mkdir -p ~/build; cd ~/build
- git clone https://git.code.sf.net/p/openocd/code openocd
- cd ~/build/openocd/
- ./bootstrap
如果克隆指定版本的OpenOCD(如),可以使用下面的指令:
- git clone -b 2.20.3 --depth=1 https://git.code.sf.net/p/openocd/code openocd
3.2 配置OpenOCD
使用以下指令配置OpenOCD,这里选择“--enable-ftdi”配置,其他配置(只要安装了相应的依赖)会默认开启:
- mkdir build
- cd build
- ../configure --enable-ftdi
执行完以上指令后,命令行窗口会最终显示:
3.3 编译OpenOCD
使用以下指令编译OpenOCD:
编译完毕OpenOCD后就可以将相应的文件复制出来完成对OpenOCD的打包压缩了。打包的文件可以参考以下文件及文件夹内容
openocd-v0.12.0-rc2-2022-11-22-1713.zip
(9.96 MB, 下载次数: 19)
:
- openocd-v0.12
- ├── bin
- │ ├── libftdi1-config
- │ ├── libftdi1.dll
- │ ├── libgcc_s_sjlj-1.dll
- │ ├── libhidapi-0.dll
- │ ├── libusb-1.0.dll
- │ ├── libwinpthread-1.dll
- │ └── openocd.exe
- ├── include
- │ ├── capstone
- │ │ ├── arm.h
- │ │ ├── arm64.h
- │ │ ├── capstone.h
- │ │ ├── evm.h
- │ │ ├── m680x.h
- │ │ ├── m68k.h
- │ │ ├── mips.h
- │ │ ├── platform.h
- │ │ ├── ppc.h
- │ │ ├── sparc.h
- │ │ ├── systemz.h
- │ │ ├── tms320c64x.h
- │ │ ├── x86.h
- │ │ └── xcore.h
- │ ├── hidapi
- │ │ └── hidapi.h
- │ ├── libftdi1
- │ │ └── ftdi.h
- │ └── libusb-1.0
- │ └── libusb.h
- ├── lib
- │ ├── capstone.lib
- │ ├── cmake
- │ │ └── libftdi1
- │ │ ├── LibFTDI1Config.cmake
- │ │ ├── LibFTDI1ConfigVersion.cmake
- │ │ └── UseLibFTDI1.cmake
- │ ├── libftdi1.dll.a
- │ ├── libhidapi.dll.a
- │ ├── libhidapi.la
- │ ├── libusb-1.0.dll.a
- │ ├── libusb-1.0.la
- │ └── pkgconfig
- │ ├── capstone.pc
- │ ├── hidapi.pc
- │ ├── libftdi1.pc
- │ ├── libftdipp1.pc
- │ └── libusb-1.0.pc
- └── share
- ├── doc
- │ └── hidapi
- │ ├── AUTHORS.txt
- │ ├── LICENSE-bsd.txt
- │ ├── LICENSE-gpl3.txt
- │ ├── LICENSE-orig.txt
- │ ├── LICENSE.txt
- │ └── README.md
- ├── info
- │ ├── dir
- │ ├── openocd.info
- │ ├── openocd.info-1
- │ └── openocd.info-2
- ├── man
- │ └── man1
- │ └── openocd.1
- └── openocd
- ├── contrib
- │ ├── 60-openocd.rules
- │ └── libdcc
- ├── OpenULINK
- │ └── ulink_firmware.hex
- └── scripts
- ├── bitsbytes.tcl
- ├── board
- ├── chip
- ├── cpld
- ├── cpu
- ├── fpga
- ├── interface
- ├── memory.tcl
- ├── mem_helper.tcl
- ├── mmr_helpers.tcl
- ├── target
- ├── test
- └── tools
最后在openocd.exe 目录下运行CMD,输入openocd按下回车即可看到相应的运行信息:
|