开源项目OpenOCD结合CH347在Windows平台下的编译

准备工作

Windows平台下编译OpenOCD可使用MSYS2或Cygwin64编译,这里考虑到方便复现的因素,将采用MSYS2平台。
CH347 OpenOCD在Windows平台下使用厂商驱动,需提前下载安装:
CH347官方JTAG驱动
源码仓库链接:
https://github.com/WCHSoftGroup/ch347/tree/main

MSYS2简介

MSYS2是一个工具和库的集合,提供了一个易于使用的类似Linux下的操作环境,用于构建、安装和运行本机Windows软件,你完全可以将他理解为一个交叉编译工具。相较于Cygwin,安装第三方依赖库更加的方便,详细介绍可直接浏览官网:
MSYS2简介
MSYS2下载

具体编译流程

安装后运行MSYS2 MINGW64.EXE
1、首先对系统库及第三方依赖库进行安装更新:

# 更新系统文件
pacman -Syuu
# 安装依赖关系
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

过程时间较长,耐心等待。
2、git clone 基于ch347的openOCD源码:

# 克隆仓库
git clone https://github.com/WCHSoftGroup/ch347.git
# 获取submodule
git submodule init
git submodule update

至此源码下载完成。
如果受网络影响导致下载失败,最稳妥的方法是安装GitHub官方提供的GitHub Desktop软件进行下载。

3、进入OpenOCD_SourceCode_CH347目录进行编译:
注意:由于仓库中源码考虑到兼容性,使用了32位的动态库,这里若使用MSYS2编译32位程序,会出现很多依赖库问题。所以这里对源码进行一下改写:
打开src/jtag/drivers/ch347.c,LINE 1059:uhModule = LoadLibrary(“CH347DLL.DLL”);
改为:uhModule = LoadLibrary(“CH347DLLA64.DLL”)

同时由于编译环境原因,可能会提示添加#include <stdio.h>的问题,按照提示,在相应头文件添加即可。

# 进入源码目录
cd OpenOCD_SourceCode_CH347/
# 运行安装脚本
./bootstrap
# 使能CH347,其中YOUR_INSTALL_PATH为你所需要安装到的路径
./configure --enable-ch347 --prefix=YOUR_INSTALL_PATH CFLAGS="-w"
# 配置完成结果如下,可查看CH347是否成功使能
OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices        yes (auto)
ST-Link Programmer                      yes (auto)
TI ICDI JTAG Programmer                 yes (auto)
Keil ULINK JTAG Programmer              yes (auto)
Altera USB-Blaster II Compatible        yes (auto)
Bitbang mode of FT232R based devices    yes (auto)
Versaloon-Link JTAG Programmer          yes (auto)
TI XDS110 Debug Probe                   yes (auto)
CMSIS-DAP v2 Compliant Debugger         yes (auto)
OSBDM (JTAG only) Programmer            yes (auto)
eStick/opendous JTAG Programmer         yes (auto)
Olimex ARM-JTAG-EW Programmer           yes (auto)
Raisonance RLink JTAG Programmer        yes (auto)
USBProg JTAG Programmer                 yes (auto)
Espressif JTAG Programmer               yes (auto)
Mode 3 of the CH347 devices             yes
CMSIS-DAP Compliant Debugger            yes (auto)
Nu-Link Programmer                      yes (auto)
Cypress KitProg Programmer              yes (auto)
Altera USB-Blaster Compatible           yes (auto)
ASIX Presto Adapter                     yes (auto)
OpenJTAG Adapter                        yes (auto)
Linux GPIO bitbang through libgpiod     no
SEGGER J-Link Programmer                no
Bus Pirate                              no
Use Capstone disassembly framework      yes (auto)
# 接下来使用make install进行安装
make install
# 完成结果类似如下:
make[4]: Entering directory '/d/openocd_MSYS2/OpenOCD_SourceCode_CH347'
for i in $(find ./tcl -name '*.cfg' -o -name '*.tcl' -o -name '*.txt' | sed -e 's,^./tcl,,'); do \
        j="/home/lzy/deploy/share/openocd/scripts/$i" && \
        mkdir -p "$(dirname $j)" && \
        /usr/bin/install -c -m 644 ./tcl/$i $j; \
done
make[4]: Leaving directory '/d/openocd_MSYS2/OpenOCD_SourceCode_CH347'
make[3]: Leaving directory '/d/openocd_MSYS2/OpenOCD_SourceCode_CH347'
make[2]: Leaving directory '/d/openocd_MSYS2/OpenOCD_SourceCode_CH347'
make[1]: Leaving directory '/d/openocd_MSYS2/OpenOCD_SourceCode_CH347'

需要注意的是,由于编译过程中涉及到中间文件链接:路径一定不要带有中文或特殊符号!否则将出现文件存在但始终提示No such file or directory.

功能验证

在MSYS2中进入安装目录,使用命令对单片机烧写程序。具体使用方法可参考:
开源项目OpenOCD搭配CH347实现对STM32固件下载
cmd调用会出现缺少DLL的问题,从MSYS2安装目录下的mingw64\bin目录下复制所缺的几个dll即可,这样就可以直接发给他人使用了。
如需通过cygwin编译参考以下博客,仓库下载源码后直接从第五步开始安装依赖和编译:
openOCD在windows下使用cygwin编译

参考目录

一个keil以外的开发选择: VS Code结合OpenOCD进行嵌入式开发
https://zhuanlan.zhihu.com/p/678930400

编译问题总结

在编译过程中总会遇到一些意想不到得问题,在这里对编译可能遇到得一些问题进行总结:
1、缺少libusb-1.x在这里插入图片描述
此问题是由于缺少libusb1-0库导致
解决方案:下载libusb源码,在编译openocd的MSYS2上进行编译安装。安装步骤为:

./bootstrap.sh
./autogen.sh
./make install

2、警告被当成错误
在这里插入图片描述
解决方案:./configure命令时,修改编译选项:

./configure --enable-ch347 --prefix=YOUR_INSTALL_PATH CFLAGS="-O0 -Wno-error"

3、在某些文件中可能会提示需要添加stdio.h头文件
解决方案:按编译器要求添加

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值