硬汉嵌入式论坛

 找回密码
 立即注册
查看: 571|回复: 1
收起左侧

[玩转DAPLINK] H7-TOOL高速DAPLINK使用OpenOCD命令行稳定下载方法,以及RTT自动断开重连支持,强烈推荐使用官方OpenOCD(2025-06-27)

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2025-6-28 07:12:13 | 显示全部楼层 |阅读模式
【前言】

1、市面上的各种openocd变种,对CMSIS-DAP V1支持都还可以,但对V2的支持有稳定性问题,当前测试出来我一直使用的这款第3方openocd有问题,包括当前的最新版。
     高速HID时,很容易弹出Error: CMSIS-DAP transfer count mismatch: expected 2, got 0或 者闪退,而WinUSB没问题,如果使用WinUSB方式可以使用。
     https://gnutoolchains.com/arm-eabi/openocd/

     经过深入研究,发现这款OpenOCD在高速HID轮询速度设置为最快125us容易出错,加大轮询时间可以解决。而官方版本没有这个问题

2、如果大家使用的芯片在官方版本里面有支持,推荐使用官方版本即可,官方版本没有那么多奇怪的问题。官方版本下载
https://github.com/openocd-org/openocd/releases

openocd-99d642c-i686-w64-mingw32.7z (3.64MB)

3、注意早期版本不支持WinUSB,仅支持HID,现在的最新版已经支持WinUSB

【官方版本使用说明】

官方版本使用说明,官方版本稳定好用,测试连续下载几十次都成功了,下面以我们H7-TOOL的高速DAPLINK,HID和WinUSB二合一方式为例进行说明,外接STM32F103ZET6板子测试。

1、环境变量设置

我们这边不设置了,官方的版本需要设置环境变量才可以在电脑任意文件夹里面调用openocd.exe,我们省事些,直接在openocd.exe所在路径下调用即可

2、新建个prog.bat文件,注意要放在openocd软件包的bin文件里面,也就是openocd.exe所在文件夹,名字随意,注意后缀是bat批处理即可,填写如下命令:

.\openocd.exe -f interface/cmsis-dap.cfg  -c "transport select swd"  -f target/stm32f1x.cfg

运行批处理文件后效果如下,说明openocd正常连接DAPLINK了

下载.png

由于我们TOOL是高速HID和WinUSB,如果大家的openocd没有正常连接,加入指定使用HID或者WinUSB即可,不指定的话,会自动选择,完整命令如下(注,切换这个最好重新插拔一次下载器):

指定HID:

.\openocd.exe -f interface/cmsis-dap.cfg -c "cmsis-dap backend hid" -c "transport select swd"  -f target/stm32f1x.cfg

指定WinUSB,推荐使用WInUSB,在Win10, Win11上比较稳定,而且免驱

.\openocd.exe -f interface/cmsis-dap.cfg -c "cmsis-dap backend usb_bulk" -c "transport select swd"  -f target/stm32f1x.cfg

3、执行hex文件下载,将hex文件放在批处理一个路径下即可

.\openocd.exe -f interface/cmsis-dap.cfg  -c "transport select swd" -f target/stm32f1x.cfg -c "init; reset halt; program stm32f103zet6.hex verify; reset"

执行效果,连续多次执行,均正常

234.png

4、使用telnet命令行操作

(1)直接打开openocd.exe所在文件夹,然后文件夹空白处,右击鼠标,选择启动终端

1.png

(2)输入命令:

2.png

输入后效果:

3.png

(3)点击powershell标题栏的加号,再启动一个新的终端,输入如下命令,并回车

4.png

5.png

(4)执行下载;

7.png

8.png

【H7-TOOL的RTT自动断开和重连支持】

1、之前发布了MDK的断开和自动重连支持

H7-TOOL的RTT Viewer功能再升级,支持MDK下载程序时断开RTT刷新,下载完毕自动重连(2025-04-12)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=128203



2、这次给大家带来openocd的支持,openocd支持的关键就是shutdown命令,只有启动了这个命令才标识断开,否则会一直和下载器保持连接状态。

(1)使用批处理的话,加上shutdown命令即可,完整效果

.\openocd.exe -f interface/cmsis-dap.cfg  -c "transport select swd" -f target/stm32f1x.cfg -c "init; reset halt; program stm32f103zet6.hex verify; reset; shutdown"

(2)方便给大家展示效果,我们这里使用telnet方式展示下:

效果:

123445566.png

下面是动态GIF

openocd.gif


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
 楼主| 发表于 2025-6-28 09:00:22 | 显示全部楼层
整理完毕
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 13:24 , Processed in 0.038251 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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