《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 3]
《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 1]
《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 2]
7 OpenOCD
OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包。
OpenOCD官网
OpenOCD下载地址
7.1 OpenOCD安装
下载OpenOCD,最新软件版本为0.11.0,这里是使用源码编译安装。
第一步:下载并解压
第二步:配置OpenOCD
$ ./configure
配置完成打印信息如下:
可配置的项目可以通过 $ ./configure -h 命令查看帮助信息。
【注】笔者的调试器使用的是ST-Link,所以还要运行如下命令进行使能 $ ./configure --enable-stlink,这里默认开启了,就不需要执行,如果使用其他调试器,则需要根据实际去使能设备。
第三步:编译
$ make
第四步:安装
$ sudo make install
安装完成后可检查OpenOCD版本,看OpenOCD是否安装成功。
$ openocd -V
打开openocd-0.11.0/tcl,里面有很多提前写好的配置文件:
其中interface目录下都是接口相关配置文件,例如jlink.cfg,stlink.cfg;target目录下都是芯片相关的配置文件,例如stm32f1x.cfg。
7.2 OpenOCD调试配置
7.2.1 launch.json文件
在vscode文件夹中新建一个launch.json,该文件是调试的入口文件。内容如下:
{"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot}","type": "cortex-debug","request": "launch","name": "Cortex Debug","interface": "swd","servertype": "openocd","executable": "./build/STM32f1.elf","runToMain": true,"device": "STM32F103ZE","svdFile": "./STM32F103xx.svd",//svd文件,有这个文件才能查看寄存器的值"configFiles": ["${workspaceRoot}/openocd.cfg"],"preLaunchTask": "build","armToolchainPath": "/opt/gcc-arm-none-eabi-10.3-2021.07/bin/"}]
}
executable:编译出的二进制文件,也就是最终烧录到单片机中的,这里是elf文件。
request:可以选launch或attach。launch是指启动调试时同时开始执行程序;attcah是指程序已经在运行了,然后开始调试。我没测试过attach。
type:调试的类型,选cortex-debug,这是我们装的插件。其实也可以填cppdbg之类的,但是那样我们就得自己配置gdb了,配置起来将会非常麻烦。
device:目标芯片。如果你使用J-LINK GDB Server时必须要设置这个选项。
svdFile:svd文件的路径,每个MCU的各不相同。
servertype:要选择的gdb server。我这里用openocd。
configFiles:gdb的配置文件路径。openocd会自动读当前目录下的openocd.cfg文件,这个选项不填也行。但是如果你想把openocd.cfg放在别处,就可以用这个选项指定配置文件的路径。
preLaunchTask:在启动调试前,预先执行的任务。
armToolchainPath:工具链的路径。
launch.json参考
7.2.2 openocd.cfg文件
在项目文件夹下新建一个openocd.cfg文件,用于配置调具体的调试器。内容如下:
# 选择调试器为jlink
#source [find interface/jlink.cfg]
source [find interface/stlink.cfg]# 选择接口为SWD
#transport select swd# 选择目标芯片
source [find target/stm32f1x.cfg]
我这里选择使用ST-Link,SWD接口,目标芯片为stm32f1x。
【注】使用J-link调试也是一样的,只需将openocd.cfg文件配置成J-link调试即可。
7.2.3 svd文件
用于寻找STM32F1的svd文件。CMSIS-SVD是CMSIS的一个组件,它包含完整微控制器系统(包括外设)的程序员视图的系统视图描述 XML 文件。VS Code可以通过它来知道外设寄存器的地址分布,从而把寄存器内容展示到窗口中。
svd文件地址
将下载好的STM32F103xx.svd文件放在项目文件夹根目录即可。
7.3 Cortex-Debug调试
直接按F5,openocd启动时,会自动在当前目录下寻找名为openocd.cfg的文件作为配置文件。调试界面如下:
界面左边可以看到变量窗口、调用堆栈等。窗口中间就是单步调试的各个按钮。这个就没啥好说的了,赶紧去玩起来吧。
【注】调试STM32报错init mode failed解决方法
错误提示:
Error: init mode failed (unable to connect to the target)
......
OpenOCD init failed
解决办法:
将 Debug Mode 重新选择为 Serial Wire,如下图所示。
7.4 GDB调试
除了使用Visual Studio Code自带的调试工具外,还可以使用GDB调试,
首先在终端输入一下命令:
#openocd -f interface/stlink.cfg -f target/stm32f1x.cfg
【注】如果不带参数启动,openocd就会自动查找当前目录下有没有名为openocd.cfg的文件,并把它作为配置文件来启动。
【注】openocd默认TCP/IP的3333端口作为gdb端口。
openocd运行时,这个终端就被占用了因此还需要再开一个终端。
GDB也属于GNU项目的一部分,只是这里使用的是交叉编译工具中的GDB。
# arm-none-eabi-gdb build/STM32f1.elf
GDB常用命令如表所示。
关于GDB的使用请看笔者文章:
GDB使用
接下来需要连接openocd服务,openocd给GDB的TCP/IP端口是3333。
# target remote localhost:3333
接下来和在Linux中普通的应用程序调试一样。
在 gdb 中键入"l"(list)就可以查看所载入的文件,如下所示。
自行参考笔者关于GDB的博文去调试吧。
代码获取方法
1.长按下面二维码,关注公众号[嵌入式实验楼]
2.在公众号回复关键词[Environment_for_STM32]获取资料
欢迎访问我的网站
BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书
BruceOu的知乎
《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 3]相关推荐
- python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...
手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...
- 【嵌入式开发】手把手教你4418/6818开发板屏幕修改 本文转自迅为: http://www.topeetboard.com 开发平台:iTOP-4418/6818开发板 44186818屏幕
[嵌入式开发]手把手教你4418/6818开发板屏幕修改 本文转自迅为: http://www.topeetboard.com 开发平台:iTOP-4418/6818开发板 4418&6818 ...
- 手把手教你搭建SSM框架(Eclipse版)
作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...
- 手把手教你搭建SSH框架(Eclipse版)
作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...
- 《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Windows版 - 1]
Keil MDK.IAR等工具是各类STM32单片机使用的主要IDE,不过都是收费的,在使用中很可能牵扯到一定的版权问题.GCC(GNU Compiler Collection)作为GNU计划的一部分 ...
- c fread 快读 详解_万事开头难,手把手教你搭建Appium自动化测试环境,实践案例详解...
随着移动互联网的发展,各行各业纷纷引入了移动端相关测试技术,很多公司都已经研发了基于Web前端与App端的相关应用程序,为了更好的保证软件测试的质量,移动端自动化测试已走进测试世界,随着终端特性的多机 ...
- 《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Windows版 - 2]
4 make工具安装 前面通过 STM32CubeMX 生成 Makefile 工程,那么就需要一个工具来识别Makefile文件,也就是make工具,在Linux中已经自带make了,在Window ...
- 手把手教你搭建AI开发环境 !(附代码、下载地址)
来源:虎贲智能机器 本文长度为1000字,建议阅读5分钟 本文为你介绍基于ubuntu16 Python3 tensorflow的人工智能开发环境的搭建. 人最大的长处就是有厉害的大脑.电脑.手机等都 ...
- dubbo源码深度解析_Spring源码深度解析:手把手教你搭建Spring开发环境
Spring环境搭建流程,如果是第一次接触spring源码的环境搭建,确实还是比较麻烦的. 作者使用的编译器为目前流行的lntelliJ IDEA,版本为2018旗舰版.Eclipse用户还需要自己揣 ...
- java 开发vr_手把手教你搭建虚拟现实AR/VR开发环境
❗前情提要: 注意!软件安装路径下不能有中文! 软件提取: 1.安装Unity3d 先后安装: UnitySetup64-5.6.2f1 UnityStandardAssetsSetup-5.6.2f ...
最新文章
- mysql select语句详解_mysql学习笔记之完整的select语句用法实例详解
- 【 58沈剑 架构师之路】各种SQL到底加了什么锁?
- webpack组织模块的原理 - 基础篇
- easyui 初体验
- Ubuntu下嵌入式Qt开发环境配置全攻略
- java scala 获取类_在Scala 2.10中获取java.lang.Class [T]的Scala类型
- kafka 分组消费topic_关于kafka更改消费者对应分组下的offset值
- 01-复杂度1 最大子列和问题(剑指offer和PAT)
- python 下载文件-Python实现HTTP协议下的文件下载方法总结
- html选择日期选择器
- mysql执行计划详解
- vue动态style设置背景图片
- python三维数据转换成二维_用Python生成马赛克画
- Doris1.1.1多种异构数据源数据导入方案
- 蒸妙熏蒸,让脚部保养通经络
- 【简单数学】【NOIP 20008】笨小猴
- LambdaMART原理浅析
- 解决www.coursera.org可以登录但无法播放视频
- C语言程序设计实训第四章作业
- 【技术认证题库】SCCA理论HCI-2考试【初级】