首页 / 资讯中心 / 文章详情

OpenOCD 不同仿真器使用操作总结记录

OpenOCD 不同仿真器使用操作总结记录 ★ FEATURED ARTICLE
针对不同的仿真器使用 OpenOCD 时候的设置操作总结 ...... 矜辰所致 ... 更新 CMSIS-DAP 测试说明 2026/10/15目录前言一、OpenOCD 环境搭建二、OpenOCD 基本测试三、Makefile 中仿真器配置3.1 ST-link3.2 Jlink3.2 CMSIS-DAP结语前言在使用 GCC 环境开发 ARM 系列芯片的时候我们往往会配合使用 OpenOCD 来进行仿真调试下载博主自己在 Windows 下开发常用的 STM32 等芯片的时候也是使用的这套方案。这个环境的搭建在我曾经的博文在window下使用 VScode 搭建 ARM 开发环境—— 详细版中详细说明过当时好些年前设置好的环境最近换了新电脑然后环境重新配置又因为仿真器又有好几个不一样的所以得重新配置一下不同的仿真器。所以就想到写下本文来汇总记录一下 不同的仿真器的设置使用,方便以后再次更换环境时候能更快速的搭建好环境当然本文是以下载为主以 Windows 下的 GCC 开发环境为说明。一、OpenOCD 环境搭建OpenOCDOpen On-Chip Debugger是开源片上调试器过多的我们这里就不介绍了以前也介绍过环境配置以前也说明过这里我们简单复习一下。首先是下载 OpenOCD OpenOCD 官方下载地址下载下来的是压缩文件可以直接解压比如我解压的位置如下接下来就是配置环境变量具体操作如下图所示win10 家庭版最后只需要在我们的 终端中输入openocd -v有版本信息提示就表示环境配置成功二、OpenOCD 基本测试我们可以通过openocd -h查看帮助选项我们接下来就连接上仿真器来说明一下但是前提是安装好了仿真器驱动安装好驱动后我们下面直接来做基本的测试为了方便测试我们在目录下D:\Program Files\OpenOCD-20211118-0.11.0\share\openocd\scripts打开终端如下图在此路径下打开终端进行操作在后面选择配置文件的时候相对方便一下因为文件的路径就不用写很多了。如果忘了 openocd 路径使用where openocd命令查看路径比如通过上面路径找到进入...\share\openocd\scripts路径 。打开后也是一个终端我们先简单的定义一下接口如下图上面为什么使用 interface 选择我也是参考网上一些说明教程也可能是 openocd 的早年版本是使用 interface 的这目前来说不是我们的重点所有的问题这里都会有提示我们根据上面的提示进行修改如下最后提示 Error 这里暂时先不管。这里重点我们要知道的是openocd 对于各种仿真器和用哪种单片机都已经写好了配置文件。基本上我们使用 openocd 我们都不用自己去写只需要调用现成的配置文件就可以了。那么好了配置文件怎么使用上面我们说到了-f是使用配置文件我们直接按照如下操作进行这里实际上我们就可以看到正常的进入的调试模式直接调用配置文件看来是可以的。但是我们的目的是什么是烧录文件所以我们还要使用 -c 执行program命令我们这里简单总结一下openocd的操作模式openocd-f接口配置文件-f目标芯片配置文件-c要执行的命令我们把需要烧录的 hex 文件拷贝到当前文件夹下为了测试方便如下图我们使用如下指令进行程序烧录测试openocd-finterface/stlink-v2.cfg-ftarget/stm32f1x.cfg-cprogram test.hex-creset因为test.hex已经放到当前目录下所以这里可以直接选择然后后面的-c reset是软件复位就是程序烧录完成以后自动复位运行reset有没有双引号都可以上面指令也可以是openocd-finterface/stlink-v2.cfg-ftarget/stm32f1x.cfg-cprogram test.hex-creset测试如下图上图中最后不会退出的问题我们可以在指令的最后加上一条指令-c shutdown关闭当前的操作因为烧录结束了不需要操作了最后的指令openocd-finterface/stlink-v2.cfg-ftarget/stm32f1x.cfg-cprogram test.hex-creset-cshutdown最后测试的完成现象如下图三、Makefile 中仿真器配置上面我们通过基本的测试我们已经成功的把 hex 文件烧录到了 STM32 芯片中但是上面也只是测试我们在开发 STM32 的时候不可能每次都重复的使用上面的操作进行烧录那样太繁琐了。所以我们需要进行一些基本的设置基于我们是使用 GCC 开发环境所以我们可以在 Makefile 中进行一些必要的设置使得能够直接相对 “简单” 的进行烧录。Makefile 文件我们只需要使用 STM32CubeMX 生成的工程就可以。3.1 ST-link上面我们就是使用的 ST-Link 进行的测试所以只要设置得当肯定是没有什么问题的。指令实际上还是和上面的指令一样只不过在 Makefile 中需要加上绝对路径下面是完成的操作图3.2 Jlink有了上面成功的操作对于 Jlink 来说按理来说也只需要选择一下对应的配置文件就可以了但是实际上是有问题的如下图JLink 需要使用指令-c transport select swd选择使用 SWD 模式对于现在开发来说基本都是使用的 SWD 模式。但是最后还是有问题的这个原因其实以前我已经说过了详细的情况还是参考博文在window下使用 VScode 搭建 ARM 开发环境的 第 7 小节7、使用 Jlink 烧录问题说明具体的内容大家自行跳转查看。其实 JLink 的这部分使用内容还是比较多的而且 Jlink 更换驱动以后不仅 Keil 中无法识别的J-Link 配套的那些软件也是无法识别出来的虽然可以换来换去也免不了麻烦所以要根据自己实际的应用环境确定是否需要更换驱动。3.2 CMSIS-DAP好吧本来以为仓库中有个烧录器是 CMSIS-DAP 想着也可以来记录一下后来发现还是 ST-link那么 CMSIS-DAP 今天是更新不了了等下次有机会用到的时候再来更新把或许自己什么时候也去做一个。好几年了今天正好同事有一个 CMSIS-DAP 这不想着之前正好缺这个的测试果断拿过来试一下效果废话少说开整。首先插上 DAP然后翻看上面的文章说明的操作进入到现在电脑上的对应的目录 一切正常然后连接上 STM32 的板子SWD模式4根线VCCGNDCLKDIO 然后依旧按照上文的说明输入指令openocd-finterface/cmsis-dap.cfg-ftarget/stm32f1x.cfg效果如下完美 。最后就使用 STM32CubeMX 生成一个工程修改Makefile 测试一下工程烧录。这里额外遇到一个问题最新的 STM32CubeMX 生成的工程里面STM32 的 LD 文件中是针对 GCC11 或者更高版本的博主电脑上还是 GCC10 所以报错了只需要改一下 LD 文件找到所有的(READONLY)删除就好了LD 文件里面也有特定说明 修改完上面的小问题还是按照前文的说明修改 Makefile 直接在最后部分加一个 down 操作clean:-rm-fR$(BUILD_DIR)# Makefile 用 反斜杠 \ 作为行续接符\ 必须是这一行最后一个字符后面不能有空格down: openocd\-fC:\Program Files\OpenOCD-20211118-0.11.0\share\openocd\scripts\interface\cmsis-dap.cfg\-fC:\Program Files\OpenOCD-20211118-0.11.0\share\openocd\scripts\target\stm32f1x.cfg\-cprogram$(BUILD_DIR)/$(TARGET).hex\-creset\-cshutdown最后是烧录成功的演示图结语本文在 Windows 环境下测试使用了 OpenOCD 的程序烧录也说明了如何在 STM32CubeMX 生成的工程 Makefile 中如何使用 OpenOCD 进行一键下载。当然在 Linux 环境下也是一样的只需要注意一下对应的路径设置。虽然少了 CMSIS-DAP 的测试但是从网上很多同学的测试使用情况来看CMSIS-DAP 也是比较正常的和 ST-Link 一样的简单不像 J-LInk 那么不太友好这一点我后面一定会找机会给补上的已经补上啦 (●’◡’●) 。那么本文就到这里把谢谢大家
阅读完成 · 觉得有帮助?
咨询建站