[开发工具] Windows下编译OpenOCD过程分享(基于MSYS2)

[复制链接]
 楼主| 发表于 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 ,在文件开头添加:
  1. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
  1. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
  1. Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

2 安装相应的依赖环境点击相应的命令行软件打开命令行窗口,这里选择“MSYS2 MINGW64”。

image-20221129135458557.png


1. 更新MSYS2,使用以下指令更新系统文件。直至无更新内容为止。
  1.    pacman -Syuu

2. 安装依赖环境,

   不同的操作系统对安装的环境有些许的差异要求,一般而言不同的软件依赖包有差异的一般为64bit的标识为“x86_64”,而32bit系统一般为“i686”。其相关的Pack可以在该网址搜索到。[Base Packages - MSYS2 Packages](https://packages.msys2.org/base)

   64bit:
  1. 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:
  1. 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源码至本地:
  1. mkdir -p ~/build; cd ~/build
  2. git clone https://git.code.sf.net/p/openocd/code  openocd
  3. cd ~/build/openocd/
  4. ./bootstrap


如果克隆指定版本的OpenOCD(如),可以使用下面的指令:
  1. git clone -b 2.20.3 --depth=1 https://git.code.sf.net/p/openocd/code  openocd


3.2 配置OpenOCD

使用以下指令配置OpenOCD,这里选择“--enable-ftdi”配置,其他配置(只要安装了相应的依赖)会默认开启:
  1. mkdir build
  2. cd build
  3. ../configure --enable-ftdi

执行完以上指令后,命令行窗口会最终显示:
image-20221129140202437.png


3.3  编译OpenOCD

使用以下指令编译OpenOCD:
  1. make
  2. make install


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

  1. openocd-v0.12
  2. ├── bin
  3. │   ├── libftdi1-config
  4. │   ├── libftdi1.dll
  5. │   ├── libgcc_s_sjlj-1.dll
  6. │   ├── libhidapi-0.dll
  7. │   ├── libusb-1.0.dll
  8. │   ├── libwinpthread-1.dll
  9. │   └── openocd.exe
  10. ├── include
  11. │   ├── capstone
  12. │   │   ├── arm.h
  13. │   │   ├── arm64.h
  14. │   │   ├── capstone.h
  15. │   │   ├── evm.h
  16. │   │   ├── m680x.h
  17. │   │   ├── m68k.h
  18. │   │   ├── mips.h
  19. │   │   ├── platform.h
  20. │   │   ├── ppc.h
  21. │   │   ├── sparc.h
  22. │   │   ├── systemz.h
  23. │   │   ├── tms320c64x.h
  24. │   │   ├── x86.h
  25. │   │   └── xcore.h
  26. │   ├── hidapi
  27. │   │   └── hidapi.h
  28. │   ├── libftdi1
  29. │   │   └── ftdi.h
  30. │   └── libusb-1.0
  31. │       └── libusb.h
  32. ├── lib
  33. │   ├── capstone.lib
  34. │   ├── cmake
  35. │   │   └── libftdi1
  36. │   │       ├── LibFTDI1Config.cmake
  37. │   │       ├── LibFTDI1ConfigVersion.cmake
  38. │   │       └── UseLibFTDI1.cmake
  39. │   ├── libftdi1.dll.a
  40. │   ├── libhidapi.dll.a
  41. │   ├── libhidapi.la
  42. │   ├── libusb-1.0.dll.a
  43. │   ├── libusb-1.0.la
  44. │   └── pkgconfig
  45. │       ├── capstone.pc
  46. │       ├── hidapi.pc
  47. │       ├── libftdi1.pc
  48. │       ├── libftdipp1.pc
  49. │       └── libusb-1.0.pc
  50. └── share
  51.      ├── doc
  52.      │   └── hidapi
  53.      │       ├── AUTHORS.txt
  54.      │       ├── LICENSE-bsd.txt
  55.      │       ├── LICENSE-gpl3.txt
  56.      │       ├── LICENSE-orig.txt
  57.      │       ├── LICENSE.txt
  58.      │       └── README.md
  59.      ├── info
  60.      │   ├── dir
  61.      │   ├── openocd.info
  62.      │   ├── openocd.info-1
  63.      │   └── openocd.info-2
  64.      ├── man
  65.      │   └── man1
  66.      │       └── openocd.1
  67.      └── openocd
  68.          ├── contrib
  69.          │   ├── 60-openocd.rules
  70.          │   └── libdcc
  71.          ├── OpenULINK
  72.          │   └── ulink_firmware.hex
  73.          └── scripts
  74.              ├── bitsbytes.tcl
  75.              ├── board
  76.              ├── chip
  77.              ├── cpld
  78.              ├── cpu
  79.              ├── fpga
  80.              ├── interface
  81.              ├── memory.tcl
  82.              ├── mem_helper.tcl
  83.              ├── mmr_helpers.tcl
  84.              ├── target
  85.              ├── test
  86.              └── tools

最后在openocd.exe 目录下运行CMD,输入openocd按下回车即可看到相应的运行信息:
image-20221129141531972.png




点评

感谢分享在Windows环境下编译OpenOCD的过程。  发表于 2022-12-9 10:21
发表于 2022-12-3 18:19 来自手机 | 显示全部楼层
不错,get一项新技能。

点评

感谢支持  发表于 2022-12-4 14:28
发表于 2024-1-15 14:51 | 显示全部楼层
这里编译生成的是不是只支持ARM核的?如果要支持RISC-V,该怎么做啊?

点评

[url=home.php?mod=space&uid=3356086]@kai迪皮[/url] :看到要安装 pacman -S mingw-w64-x86_64-arm-none-eabi-gcc,是不是也有RISC-V的?第一次接触,确实不懂。  发表于 2024-1-16 11:52
openocd,没有区分arm版本啥的。  发表于 2024-1-16 09:34
发表于 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

点评

[url=home.php?mod=space&uid=3045508]@lindahnu[/url] :我没有接触过这个错误,抱歉 (*/ω\*)  发表于 2024-1-19 13:47
[url=home.php?mod=space&uid=3356086]@kai迪皮[/url] :装了pacman -S mingw-w64-x86_64-libjaylink,就没有提示SEGGER那个问题了。但是其他依赖库我都按上面列出来的都装了,还缺哪个呢?  发表于 2024-1-16 11:54
你这个应该还是缺少了依赖,你可以找找hidapi的说明  发表于 2024-1-16 09:35
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

290

帖子

11

粉丝
快速回复 返回顶部 返回列表