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

目录

一、文章背景

二、准备工作

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教程

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


猜你喜欢

转载自blog.csdn.net/lone5moon/article/details/120092024
今日推荐