STM32 在 Windows 上的交叉编译二 调试
在上一篇博客 《在Windows上交叉编译STM32(环境搭建)》 ,已经让 CubeMX 生成的工程成功编译,并下载到板子上了。
这篇博客主要继续介绍接下来的步骤,调试。硬件是使用的 ST-LINK ,别的也无所谓,只要是 OpenOCD 支持的就可以。
OpenOCD & GDB
这里还是,介绍的文章特别多,好的也很多。本人博客简单讲原理,大家一起从原理上理解了,会用了。我也就达到目的了。
OpenOCD(On-Chip Debugger) 很多这种缩写只要看到全部的单词也就能猜到其意义。这个东西就是一个针对不同单片机调试器的配饰器,什么 J-Link 、ST-Link 支持的还比较多。
依靠 OpenOCD 打通了开发机和单片机调试器的通路,那么还需要一个能够对于代码解析,发送对应调试命令的工具。很显然这个工具就是我们大多数人所熟知的 GDB 了。
OpenOCD 下载
下载地址 Github:
https://github.com/xpack-dev-tools/openocd-xpack/releases
或者从我的网盘下载:
链接:https://pan.baidu.com/s/1TOcZRSXVSfGCq2lcG3bJvw?pwd=fplu
提取码:fplu
CSDN 0 积分下载(我设置的是 0 ):
https://download.csdn.net/download/Megahertz66/89047213
下载后无需安装,解压后将其 bin 目录添加到 PC 的 PATH 路径就可以了。 然后在 cmd 下测试 openocd --version ,观察输出确认是否安装成功。
连接调试器
openocd -f <接口配置文件> -f <目标芯片配置文件>
接口配置文件所在目录:
xpack-openocd-0.12.0-2\openocd\scripts\interface\
目标芯片配置文件是openOCD支持的目标芯片:
xpack-openocd-0.12.0-2\openocd\scripts\target
例如,我所使用的调试器是 ST-Link V2,板子上的芯片是 STM32F103RCT6 。 那么我应该使用的命令就是:
openocd -f E:\MCU\openOCD\xpack-openocd-0.12.0-2x64\xpack-openocd-0.12.0-2\openocd\scripts\interface\stlink-v2.cfg -f E:\MCU\openOCD\xpack-openocd-0.12.0-2x64\xpack-openocd-0.12.0-2\openocd\scripts\target\stm32f1x.cfg
注意,把命令里面的路径换成你自己的!!!!
然后你就能在终端上看到这样的输出:
通过 GDB 调试
在上一篇博客中已经介绍了如何安装 STM 交叉编译工具链,工具链本身内部是包含 GDB 工具的。如果已经安装好了 STM32 编译工具链,可以实时 GDB 是不是已经安装到你的电脑上了。
如果已经安装好了,接下来首先通过 OCD 连接到你的板子(调试器上电+板子上电)。然后你会看到上上个图中红框里面的内容。
这时候,你需要再打开一个终端,使用命令:
arm-none-eabi-gdb .\Cube_test_led_01.elf
注意: 这个 elf 文件就是通过 CubeMX 配置后编译出来的可执行文件。待连接完成,然后再通过命令使用本地网络去连接 OCD 已经创建好的 3333 端口, target remote localhost:3333
总结
通过前上一篇博客对 STM32 的交叉编译工具的安装,加上本篇博客对于 openOCD 的安装。目前已经实现了在 windows 上编辑,编译,调试 STM32 了。