Windows上使用 OpenOCD 给 STM32 下载程序
Posted Mculover666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows上使用 OpenOCD 给 STM32 下载程序相关的知识,希望对你有一定的参考价值。
之前有写过如何在Linux上使用openOCD给STM32下载程序的文章,今天给大家介绍一下如何在Windows上使用openOCD。
Linux下开发stm32(二) | 使用openocd下载程序
一、OpenOCD介绍
openocd全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.11.0版本,目前主流调试器几乎都支持,具体可以查看Open On-Chip Debugger:OpenOCD User’s Guide。
支持下载器列表(部分):
- 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连接目标芯片的命令格式为:
openocd -f <接口配置文件> -f <目标芯片配置文件>
接口配置文件和目标芯片配置文件需要使用绝对路径。
其中接口配置文件是openOCD支持的下载接口,在 scripts\\interface
文件夹下:
目标芯片配置文件是openOCD支持的目标芯片,在 scripts\\target
文件夹下;
比如这里我使用ST-Link v2-1下载器+STM32L431RCT6,结果如图:
2. 下载程序
成功连接到目标芯片后,需要使用 telnet 协议连接到 openOCD 终端,端口4444,这里我使用mobaxterm:
连接之后需要注意,此时终端所在的路径是openOCD开启服务的路径,可以使用pwd
命令查看:
连接到openOCD终端之后,按照下面三个步骤下载程序。
① 目标芯片挂起,停机:
halt
② 烧写:
flash write_image erase <要下载的文件> <flash烧写起始地址>
③ 复位:
reset
3. 一行命令完成
可以在启动openOCD的时候,使用 -c 参数带上要执行的命令,通过一行命令完成烧写和复位,无需新建终端使用 telnet 连接openOCD。
openocd -f <接口配置文件> -f <目标芯片配置文件> -c <要执行的命令>
比如之前的过程可以综合为:
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虽然可以通过一行命令完成下载,将其添加到makefile中作为伪目标:
#######################################
# 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
这样我们就可以使用下面这行命令完成烧写:
make download
2. 优化makefile
对上述在makefile中添加的命令使用变量进行优化,方便以后不同的工程进行修改:
#######################################
# 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
以上是关于Windows上使用 OpenOCD 给 STM32 下载程序的主要内容,如果未能解决你的问题,请参考以下文章
在 Raspberry Pi 4 上使用 OpenOCD 对 STM32F4 进行编程
STM32开发/烧录/调试环境搭建 基于:Win10+STM32Cube+openocd+cmsis-dap(dap-link)