前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows上使用 OpenOCD 给 STM32 下载程序

Windows上使用 OpenOCD 给 STM32 下载程序

作者头像
Mculover666
发布2021-07-01 11:48:32
13.1K1
发布2021-07-01 11:48:32
举报
文章被收录于专栏:TencentOS-tiny

之前有写过如何在Linux上使用openOCD给STM32下载程序的文章,今天给大家介绍一下如何在Windows上使用openOCD。

Linux下开发stm32(二) | 使用openocd下载程序

一、OpenOCD介绍

openocd全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.11.0版本,目前主流调试器几乎都支持。

支持下载器列表(部分):

  • CMSIS-DAP v2 (USB bulk based) adapter driver
  • Nuvoton Nu-Link and Nu-Link2 adapter drivers
  • NXP IMX GPIO mmap based adapter driver
  • ST-Link consolidate all versions in single config
  • ST-Link read properly old USB serial numbers
  • STLink/V3 support (for ST devices only)

二、安装openOCD

1. 下载openOCD

下载地址:

https://github.com/xpack-dev-tools/openocd-xpack/releases

2. 安装openOCD

这是第三方编译好的软件,解压后配置环境变量即可。

openocd可执行程序在 bin 目录下,将 bin 目录路径添加到环境变量中:

配置好之后「重启电脑」

3. 检查是否安装完成

重启后打开命令行,检查是否可以查看openocd版本:

三、openOCD使用方法

1. 连接到目标芯片

openOCD连接目标芯片的命令格式为:

代码语言:javascript
复制
openocd -f <接口配置文件> -f <目标芯片配置文件>

❝接口配置文件和目标芯片配置文件需要使用绝对路径。 ❞

其中「接口配置文件」是openOCD支持的下载接口,在 scripts\interface 文件夹下:

目标芯片配置文件是openOCD支持的目标芯片,在 scripts\target 文件夹下;

比如这里我使用ST-Link v2-1下载器+STM32L431RCT6,结果如图:

2. 下载程序

成功连接到目标芯片后,需要使用 telnet 协议连接到 openOCD 终端,端口4444,这里我使用mobaxterm:

连接之后需要注意,此时终端所在的路径是openOCD开启服务的路径,可以使用pwd命令查看:

连接到openOCD终端之后,按照下面三个步骤下载程序。

① 目标芯片挂起,停机:

代码语言:javascript
复制
halt

② 烧写:

代码语言:javascript
复制
flash write_image erase <要下载的文件> <flash烧写起始地址>

③ 复位:

代码语言:javascript
复制
reset

3. 一行命令完成

可以在启动openOCD的时候,使用 -c 参数带上要执行的命令,通过一行命令完成烧写和复位,「无需新建终端使用 telnet 连接openOCD」

代码语言:javascript
复制
openocd -f <接口配置文件> -f <目标芯片配置文件> -c <要执行的命令>

比如之前的过程可以综合为:

代码语言:javascript
复制
openocd -f G:\develop_tools\openOCD\xpack-openocd-0.11.0-1\scripts\interface\stlink-v2-1.cfg -f G:\develop_tools\openOCD\xpack-openocd-0.11.0-1\scripts\target\stm32l4x.cfg -c init -c halt -c "flash write_image erase E:/MCU/STM32L431RC-BearPi/usart1-fpu-test/build/usart1-fpu-test.bin 0x08000000" -c reset -c shutdown

下载结果如下:

四、添加到makefile中实现一键下载

1. 添加makefile伪目标

openOCD虽然可以通过一行命令完成下载,每次都要输入这么多过于麻烦。

「基于STM32CubeMX生成的makefile」,将其添加作为伪目标:

代码语言:javascript
复制
#######################################
# download
#######################################
download:
 openocd -f G:\develop_tools\openOCD\xpack-openocd-0.11.0-1\scripts\interface\stlink-v2-1.cfg -f G:\develop_tools\openOCD\xpack-openocd-0.11.0-1\scripts\target\stm32l4x.cfg -c init -c halt -c "flash write_image erase E:/MCU/STM32L431RC-BearPi/usart1-fpu-test/build/usart1-fpu-test.bin 0x08000000" -c reset -c shutdown

这样我们就可以使用下面这行命令完成烧写:

代码语言:javascript
复制
make download

2. 优化makefile

对上述在makefile中添加的命令使用变量进行优化,方便以后不同的工程进行修改:

代码语言:javascript
复制
#######################################
# download
#######################################
OPENOCD_ROOT = G:\develop_tools\openOCD\xpack-openocd-0.11.0-1
OPENOCD_INTERFACE = stlink-v2-1.cfg
OPENOCD_TARGET = stm32l4x.cfg
OPENOCD_FLASH_START = 0x08000000
PWD_DIR = E:/MCU/STM32L431RC-BearPi/usart1-fpu-test

download:
 openocd -f $(OPENOCD_ROOT)\scripts\interface\$(OPENOCD_INTERFACE) -f $(OPENOCD_ROOT)\scripts\target\$(OPENOCD_TARGET) -c init -c halt -c "flash write_image erase $(PWD_DIR)/$(BUILD_DIR)/$(TARGET).bin $(OPENOCD_FLASH_START)" -c reset -c shutdown
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mculover666 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、OpenOCD介绍
  • 二、安装openOCD
    • 1. 下载openOCD
      • 2. 安装openOCD
        • 3. 检查是否安装完成
        • 三、openOCD使用方法
          • 1. 连接到目标芯片
            • 2. 下载程序
              • 3. 一行命令完成
              • 四、添加到makefile中实现一键下载
                • 1. 添加makefile伪目标
                  • 2. 优化makefile
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档