21ic电子技术开发论坛

标题: Windows下编译OpenOCD过程分享(基于MSYS2) [打印本页]

作者: kai迪皮    时间: 2022-11-29 13:44
标题: Windows下编译OpenOCD过程分享(基于MSYS2)
本帖最后由 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





作者: chenjun89    时间: 2022-12-3 18:19
不错,get一项新技能。
作者: lindahnu    时间: 2024-1-15 14:51
这里编译生成的是不是只支持ARM核的?如果要支持RISC-V,该怎么做啊?
作者: 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





欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) Powered by Discuz! X3.5