发新帖本帖赏金 40.00元(功能说明)我要提问
返回列表
打印
[开发工具]

Windows下编译OpenOCD过程分享(基于MSYS2)

[复制链接]
1565|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kai迪皮|  楼主 | 2022-11-29 13:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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,使用以下指令更新系统文件。直至无更新内容为止。
   pacman -Syuu

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:
make
make install


编译完毕OpenOCD后就可以将相应的文件复制出来完成对OpenOCD的打包压缩了。打包的文件可以参考以下文件及文件夹内容 openocd-v0.12.0-rc2-2022-11-22-1713.zip (9.96 MB)

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按下回车即可看到相应的运行信息:





使用特权

评论回复

打赏榜单

21小跑堂 打赏了 40.00 元 2022-12-09
理由:恭喜通过原创审核!期待您更多的原创作品~

评论
21小跑堂 2022-12-9 10:21 回复TA
感谢分享在Windows环境下编译OpenOCD的过程。 
沙发
chenjun89| | 2022-12-3 18:19 | 只看该作者
不错,get一项新技能。

使用特权

评论回复
评论
kai迪皮 2022-12-4 14:28 回复TA
感谢支持 
板凳
lindahnu| | 2024-1-15 14:51 | 只看该作者
这里编译生成的是不是只支持ARM核的?如果要支持RISC-V,该怎么做啊?

使用特权

评论回复
评论
lindahnu 2024-1-16 11:52 回复TA
@kai迪皮 :看到要安装 pacman -S mingw-w64-x86_64-arm-none-eabi-gcc,是不是也有RISC-V的?第一次接触,确实不懂。 
kai迪皮 2024-1-16 09:34 回复TA
openocd,没有区分arm版本啥的。 
地板
lindahnu| | 2024-1-15 17:33 | 只看该作者
在执行到../configure --enable-ftdi后发现 SEGGER J-Link Programmer 为 nomake install完成后:
bin文件夹缺少了libgcc_s_sjlj-1.dll;
lib文件夹缺少capstone.lib,libhidapi.la,libusb-1.0.la;
doc文件夹下缺少hidapi;

前面已经安装了所有依赖库了,请问是哪里不对呢?求楼主解答指点!!!
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 mingw-w64-x86_64-arm-none-eabi-gcc mingw-w64-x86_64-capstone





openocd.png (51.71 KB )

openocd.png

使用特权

评论回复
评论
kai迪皮 2024-1-19 13:47 回复TA
@lindahnu :我没有接触过这个错误,抱歉 (*/ω\*) 
lindahnu 2024-1-16 11:54 回复TA
@kai迪皮 :装了pacman -S mingw-w64-x86_64-libjaylink,就没有提示SEGGER那个问题了。但是其他依赖库我都按上面列出来的都装了,还缺哪个呢? 
kai迪皮 2024-1-16 09:35 回复TA
你这个应该还是缺少了依赖,你可以找找hidapi的说明 
发新帖 本帖赏金 40.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

209

帖子

11

粉丝