通过External Tools在STM32CubeIDE下使用DAP-LINK

2023-11-20

目录

一、文章背景

二、准备工作

2.1 Stm32CubeIDE

2.3 STM32目标板

三、配置过程

3.1 连接目标板

3.2 配置仿真器

3.3 更改调试设置为远程调试

3.4 新建OpenOcd扩展工具OpenOcd

3.5 通过变量选择CubeIDE的OpenOcd路径

3.6 选择OpenOcd配置脚本的路径

3.7 输入调试配置文件参数

3.8 扩展说明

四、自定义调试步骤

4.1 新建调试任务

4.2 添加第一个任务:运行OpenOcd

4.3 添加第二个任务:运行Debug

4.4 最终效果

五、调试


一、文章背景

       STM32开发者众多,有相当一部分人从Keil转移到了CubeIDE平台开发。开发过程中,基于各种原因,难免会需要使用DAP-LINK调试和仿真,笔者自己踩过坑,此前写了一篇博客专门介绍如何利用OpenOcd绕过CubeIDE只能用ST-LINK的限制,使用DAP-LINK调试STM32,感兴趣的可以移步:在Stm32CubeIDE环境下使用DAP-Link仿真

      该文章的方法至今依然有效,但使用方法太过繁琐,需要单独下载OpenOcd、写脚本、调试前需要运行脚本。后来笔者使用Stm32CubeIDE开发过程中有了几个意外发现:

  1. Stm32CudeIDE和其他基于Eclipse的IDE一样,支持外部工具。
  2. Stm32CudeIDE安装时就已经带了OpenOcd,不需要再另外下载。
  3. 用CubeIDE的外部工具配合内置的OpenOcd,可以不切出IDE,不依赖外部脚本,完美使用DAP-LINK调试。

下面给出完整的使用方法。

二、准备工作

2.1 Stm32CubeIDE

        官方可以免费下载安装,安装过程不在本篇文章讨论范围内,在此略过。有需要的可去官方下载:Stm32CubeIDE下载链接,截至本文撰写时,最新版为1.7。

        这个仿真器硬件有很多,因其开源特性广受欢迎。本人购买的是淘宝MUSE LAB出品,体积只有手指大小,非常精致,购买链接在此

2.3 STM32目标板

       调试目标板当然必不可少,本文的方法适用于所有STM32的MCU,笔者以一块STM32F072开发板为例进行演示。

三、配置过程

3.1 连接目标板

                CLK、GND、DIO...几根线依次接好。

3.2 配置仿真器

     CubeIDE菜单栏->RUN->Debug Configrations->STM32 Cortex-m C/C++ Application->New Configration。正常情况下,如果是用的ST-LINK就可以直接仿真调试了,如果使用DAP-LINK,会出现“No ST-LINK detected! Please connect ST-LINK and restart the debug session”这样的报错。

但是没关系,本文的目的就是解决这个报错。

3.3 更改调试设置为远程调试

       GDB连接设置改为远程GDB服务器-->端口保持默认-->调试探头改为OpenOCD-->取消勾选实时表达式。

3.4 新建OpenOcd扩展工具OpenOcd

       依次进入CubeIDE菜单栏->RUN->External Tools-> External Tools Configrations->Program(右键)->NEW Configration.

3.5 通过变量选择CubeIDEOpenOcd路径

 

         CubeIDE自带了很多环境变量,方便用户使用,其中有很多是IDE的各种插件的安装路径,OpenOcd的路径也在其中,可以点击“Variables“获取,在其后加上\openocd.exe使用。

  在其中找到OpenOcd的路径,并勾选。

3.6 选择OpenOcd配置脚本的路径

         OpenOcd作为调试服务器与目标板中间的交互接口,想要使用它调试,必须让OpenOcd知道调试使用的调试器类型,以调试的目标处理器类型,这两个参数,都以一系列脚本的形式,放在了OpenOcd的interface目录和Target目录。这一步骤就是选择这两个目录的根路径。

3.7 输入调试配置文件参数

        最后,在参数栏输入调试器和目标处理器的配置文件即可,由于本文使用的是DAP-LINK,目标处理器为STM32F072,因此:

DAP-LINK加STM32F0,配置参数为:

-f  .\interface\cmsis-dap.cfg  -f  .\target\stm32f0x.cfg

DAP-LINK加STM32F1,配置参数为:

-f  .\interface\cmsis-dap.cfg  -f  .\target\stm32f1x.cfg

DAP-LINK加STM32F4,配置参数为:

-f  .\interface\cmsis-dap.cfg  -f  .\target\stm32f4x.cfg

3.8 扩展说明

         对OpenOcd感兴趣的读者可以百度了解更多,实际上,笔者的教程。只是取巧从CubeIDE的安装目录中调用了一部分OpenOcd的配置。如果如笔者上一篇教程一样获取完整的OpenOcd,可以从OpenOcd目录中看到,OpenOcd其实支持很多调试器和目标处理器的,而不仅仅局限于DAP-LINK和STM32。ST官方只是摘取了STM32能用的那部分集成进了CudeIDE供自家处理器使用。

       

 至此,外部工具配置OK,下一步,正式开始调试。

 

四、自定义调试步骤

      自定义调试步骤这一步,其实就是先通过External Tools打开OpenOcd调试服务,再使用IDE的GDB调试服务去实现下载和调试,想深入了解调试过程的读者可以参考笔者另一篇文章:深入理解工具链-自己搭建STM32编程IDE

4.1 新建调试任务

          CubeIDE菜单栏->RUN->Debug Configrations->Launch Group->New Configration。

4.2 添加第一个任务:运行OpenOcd

 

4.3 添加第二个任务:运行Debug

4.4 最终效果

 

五、调试

       至此,CubeIDE完美支持DAP-LINK。工程编译完,点击界面的小虫子图标,执行咱们自定义的调试任务就可以了。

       Eclipse的外部工具不仅可以用于调用OpenOcd,实际上,它还可以调用任何可执行的外部命令,例如python脚本,如果你愿意,甚至可以利用它自动打开Vscode,查看工程当前的map文件、反汇编文件等,用好了,妙用无穷。

本文所述方法可能已在新版本的CubeIDE中失效,原因是官方更新新版本时作了进一步的检测和屏蔽,如果读者参考本文后仍然无法使用DAP-LINK,请移步新的文章参考:高版本CubeIDE下使用DAP-LINK教程

本文是作者闲时业余记录,如由遗漏错误,请见谅,感谢观看文章,转载不用注明出处。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过External Tools在STM32CubeIDE下使用DAP-LINK 的相关文章

随机推荐

  • 报错:Can‘t locate Win32/Console.pm in @INC (you may need to install the Win32::Console module)

    安装Open SSL中执行命令 perl Configure VC WIN32 no asm prefix C Dpan javaProject OpenSSL openssl 1 1 1b 出现以下错误 Can t locate Win3
  • Hi3516全系统类型烧录教程

    烧录资料下载 https gitee com hihope iot docs tree master HiSpark AI Camera Developer Kit Software tools 第一步 安装好hitool usb 烧写的驱
  • 鼠标右键添加git

    1 打开注册表 win R 输入regedit 2 找到HKEY CLASSES ROOT Directory Background目录 3 查看是否有shell这个目录 如果没有就添加 4 在shell目录下添加 项 鼠标右键点击新建 项
  • java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍

    目录 1装饰器模式 1 1定义 1 2代码实现 1 3装饰器特点 1 4装饰器在IO流中的使用 2配适器模式 2 1Adapter适配器 2 2代码实例 2 3适配器特点 2 4适配器优缺点 2 5适配器在IO中的使用 3装饰器与适配器异同
  • C++中STL的string vector使用笔记

    文章目录 容器 STL使用的基本方式 常用容器的基本概念和使用 string容器的特性 string初始化 拼接 赋值 查找 初始化 赋值操作 取值操作 拼接操作 查找 string替换 比较 字串 插入和删除 替换 比较 截取子串 插入删
  • 对象池GenericObjectPoolConfig

    Apache commons pool本质上是 对象池 即通过一定的规则来维护对象集合的容器 commos pool在很多场景中 用来实现 连接池 任务worker池 等 大家常用的dbcp数据库连接池 也是基于commons pool实现
  • 互联网创业盈利模式指南

    看了很多创业的case 都有点下笔千言 离题万里的 情况 就是很多case都很精彩 但是公司 的价值最终是落实到 给创业者和投资人的回报的 因此 所有的case 最终都是 落实到盈利 模式上 一位投资人士说的很明确 中国的盈利模式很简单 就
  • 一、深度学习之anaconda以及Tensorflow的安装

    1 anaconda安装 在官网Free Download Anaconda下载anaconda5 2 Python3 6 按照下一步直到安装结束 注意 将两个选项都勾选上 将安装路径写入环境变量 2 安装Tensorflow 1 建立一个
  • 围棋吃子问题

    题目 Given a 2D board containing X and O capture all regions surrounded by X A region is captured by flipping all O s into
  • 浮生六记

    浮生六记 目录 浮生六记卷一 闺房记乐 002 浮生六记卷二 闲情记趣 015 浮生六记卷三 坎坷记愁 022 浮生六记卷四 浪游记快 034 浮生六记 2 浮生六记卷一 闺房记乐 余生乾隆癸未冬十一月二十有二日 正值太平盛世 且在 衣冠之
  • Android 性能优化系列:崩溃原因及捕获

    文章目录 崩溃的基本原因 抛出异常导致崩溃分析 AMS 如何承接应用的异常信息上报 对于 native crash 系统如何做处理 系统如何处理 ANR 异常数据 addErrorToDropBox DropBoxManager 在 Cra
  • 用简单易懂的话语来快速入门windows缓冲区溢出

    用简单易懂的话语来快速入门windows的缓冲区溢出教程 准备工具 immunity debugger https www immunityinc com products debugger WINDOWS的程序动态调试工具 Vulnser
  • matlab_多目标遗传算法

    前言 之前写过在python中的多目标遗传算法了 但是很可惜的是python调用商用有限元软件比较费事 需要在ironpython的编译环境下调用 然后这个ironpython它又是个老古董 不支持pandas和numpy这些python必
  • Transformer 模型详解

    本内容主要参照 此篇 然后结合个人理解新增和删减部分内容形成 文章目录 1 1 Transformer 概览 1 2 引入张量 1 3 Self Attention 自注意力 1 3 1 Self Attention 概览 1 3 2 Se
  • VirtualBox虚拟机网络连接设置的四种方式

    VirtualBox是一款SUN出品的非常优秀的虚拟机程序 版本也非常齐全 你可以在官网上找到适合各种操作系统平台的版本 这里我先给大家大致讲解下VBox的网络配置及应用 VirtualBox的提供了四种网络接入模式 它们分别是 1 NAT
  • mid360 SLAM 建图实现

    用别人分享的数据集试了下 室内建图问题不大 室外还不确定
  • Exynos4412 中断驱动开发(一)—— 中断基础及中断的注册过程

    一 中断基础概念 所谓中断 指CPU在执行程序的过程中 出现了某些突发事件即待处理 CPU必须暂停当前的程序 转去处理突发事件 处理完毕后CPU又返回原程序被中断的位置并继续执行 1 中断分类 a 内部中断和外部中断 根据中断的的来源 中断
  • (数据结构)树转换为二叉树、森林转换为二叉树、二叉树转换为树、二叉树转换为森林及树与森林的遍历

    1 树转换为二叉树 1 加线 在所有兄弟结点之间加一条线 2 去线 对树中每个结点 只保留它与第一个孩子结点的连线 删除它与其他孩子结点之间的连线 3 层次调整 以树的根结点为轴心 将整棵树顺时针旋转一定的角度 使之结构层次分明 注意第一个
  • 结束了在MSRA的实习

    从5月到11月底 总共在MSRA渡过了7个月的实习时光 这7个月似乎是我感觉过得最快的7个月 或许是一个人在北京 生活上没有太多的琐事 只有很单纯的工作 于是就有这种时光飞逝的感觉 当然 记忆里面也并非都是工作上的事情 在MSRA还认识来自
  • 通过External Tools在STM32CubeIDE下使用DAP-LINK

    目录 一 文章背景 二 准备工作 2 1 Stm32CubeIDE 2 2 DAP LINK 2 3 STM32目标板 三 配置过程 3 1 连接目标板 3 2 配置仿真器 3 3 更改调试设置为远程调试 3 4 新建OpenOcd扩展工具