找回密码
 立即注册
首页 业界区 安全 OpenOCD命令行稳定下载方法,以及RTT自动断开重连支持 ...

OpenOCD命令行稳定下载方法,以及RTT自动断开重连支持

类饲冰 3 天前
【前言】

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了

由于我们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"
执行效果,连续多次执行,均正常


4、使用telnet命令行操作
(1)直接打开openocd.exe所在文件夹,然后文件夹空白处,右击鼠标,选择启动终端

(2)输入命令:

输入后效果:

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


(4)执行下载;



【H7-TOOL的RTT自动断开和重连支持】
1、之前发布了MDK的断开和自动重连支持
H7-TOOL的RTT Viewer功能再升级,支持MDK下载程序时断开RTT刷新,下载完毕自动重连(2025-04-12)
https://www.armbbs.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方式展示下:
效果:

下面是动态GIF

 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

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