在ubuntu上使用vscode+gcc-arm-none-eabi+openocd工具开发STM32

news/2024/4/16 15:55:25/文章来源:https://blog.csdn.net/qq_53960242/article/details/136571196

文章目录

  • 所需工具
  • 安装调试
  • 搭建过程中遇到的问题

写在前面
  老大上周让我用vscode开发STM32,我爽快的答应了,心想大学四年装了这么多环境了这不简简单单,更何况vscode这两年还用过,然而现实总是令人不快的——我竟然花了差不多两周时间在这上面,并且不知道花费了多少流量😭😭😭。这玩意就给了所需要的主要工具,形象一点就如标题,问其他人他们也搞不定。因此,大家有空还是多涉猎一些开发环境,这玩意以前有兄弟跟我提过,但是我觉得没意义,所以没用过😅😅😅。

所需工具

  • 代码编写ide vscode
  • 调试连接工具 openocd
  • 交叉编译工具链 gcc-arm-none-eabi
  • 调试工具 gdb-multiarch
  • 工程管理工具 makecmake
  • 其他一些依赖 gcc-multilibg++-multilib

本文基于ubuntu书写记录

安装调试

步骤一: vscode安装可采取现在官网想下载.deb文件,后续可双击直接安装,或者找到ubuntu中软件管理工具也可安装,也可使用命令·sudo dpkg -i 文件名.deb进行安装。

步骤二:至于后续几个工具可直接使用apt命令完成安装sudo apt install gcc-multilib g++-multilib gdb-multiarch gcc-arm-none-eabi openocd,使用命令安装后,这些工具的可执行文件会自动生成在/usr/bin目录中。
(说明:后续使用openocd时会用到stlink适配文件stlink-v2.cfstm32适配文件stm32f1x.cfg,如果是使用的apt命令安装,那就就会存在于/usr/share/openocd/scripts目录下。或者,如果大家想直接查找也可使用whereis + 查找内容find命令。)

步骤三:在vscode中下载插件:cortex-debug + Cortex-Debug: Device Support Pack - STM32F1+ venu's cortex-debug + rtos views + MemoryView + peripheral viewer 这写插件。(我搭环境的时候文档上就只写了前两个😢,不过有些是会自动下载的)上述这些插件也就差不多跟cortex-debug全都相关的插件了(如下图),哈哈哈。(说明:插件 Cortex-Debug: Device Support Pack - STM32F1是一个支持包,自己用的哪一款就下载哪一版本即可。不过,小编发现下载插件 venu's cortex-debug 后不安装这玩意似乎也行🤣。)在这里插入图片描述步骤四:在命令行中,使用命令 sudo apt-get install make cmake 下载工程管理工具。这里建议搭建先去学习一下makefilecmake,不管自己要不要写这部分代码,起码要能够看懂吧。

步骤五:搭建STM32项目,验证自己所搭环境是否可用。这里可使用cubemx生成待makefile管理的工程,创建时选择makefile管理文件即可。 在这里插入图片描述
或者大家也可参考这个项目gcc+vscode开发stm32,在这个项目中也有成功移植FreeRTOSRT-Thread的工程供大家参考。

完成上述步骤后大家还需要配置gdb调试配置文件launch.json,下面这个配置大家可参考:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot}","executable": "./build/FreeRtos_Hao.elf","name": "myDebug","request": "launch","type": "cortex-debug","interface": "swd","runToEntryPoint": "main","servertype": "openocd","configFiles": [// 下面这两个根据自己的openocd目录更改"/usr/share/openocd/scripts/interface/stlink-v2.cfg","/usr/share/openocd/scripts/target/stm32f1x.cfg"],// 这个就是交叉编译工具链所在的目录"armToolchainPath": "/usr/bin",// 所用gdb目录"gdbPath": "/usr/bin/gdb-multiarch","showDevDebugOutput": "raw"},]
}

如果大家是使用github上的工程验证大家还需要更改makefile文件一处,如下:

OPENOCD_DOWN_PATH = /usr/share/openocd/scripts/interface/stlink-v2.cfg
OPENOCD_CHIP_PATH = /usr/share/openocd/scripts/target/stm32f1x.cfg

最后,借用其他兄弟的图画来表示这个调试过程就如下图:
在这里插入图片描述

搭建过程中遇到的问题

问题:
   在移植过程中,小编遇到了报错 Failed to launch OpenOCD GDB Server: Timeout.(就是这个问题困扰了我近两周)

解决方案:
   首先,检查在命令行中使用openocd是否可以连接开发板,这里可使用命令:

openocd -f   xxx/openocd/scripts/stlink-v2.cfg -f  xxx/openocd/scripts/interface/target/stm32f1.cfg

   其次,使用gdb连接openocd调试开发板。如果使用gdb-multiarch,那么命令为:
gdb-multiarch + xxx.elf,进入gdb后就可使用target remote localhost:3333连接openocd服务。

   最后,如果命令行可成功连接,那么就是vscode配置问题(小编就是这样,小编是缺少插件)。如果链接不成功,那么可能是版本问题,建议大家换版本重新尝试(ubuntu20.04安装的openocd是0.10版本的,而目前最新是0.12)。



如果大家碰到问题,可去官网查看有没有相关解析;或者 更换软件版本,可能是软件本班不兼容导致的;大家也可以去github上看看有没有相关issue

如果大家在windows上尝试,大家将对应工具换成win版本与MinGW即可,不过这种方式小编没尝试过,网上普遍在windows上都使用arm-none-eabi-gdb调试😅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_998847.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超实用的公众号搭建教程分享,纯干货

微信公众号已经成为了企业、个人和品牌进行宣传和互动的重要平台。在这个拥有海量公众号的时代,如何让你的公众号脱颖而出,吸引更多的关注者,实现有效传播呢?接下来,伯乐网络传媒将为你详细解析公众号搭建教程&#xf…

一键查看:大厂网站都用了啥技术栈,有图有真相。

本次我们采用Wappalyzer插件来看下国内大厂的网站都采用了什么技术架构,文章最后由Wappalyzer的安装方法。 今日头条网站 淘宝网站 哔哩哔哩 京东商城 花瓣网 CSDN 国务院 网易 58同城 腾讯网 如何安装Wappalyzer 用Edge浏览器即可

几种电脑提示mfc140.dll丢失的解决方法,以及如何预防mfc140.dll丢失

mfc140.dll真是一个超级关键的动态链接库文件!一旦这个文件不翼而飞,可能会导致一些程序无法顺利运行,甚至给系统带来麻烦。但别担心!遇到mfc140.dll文件丢失的情况,我们有一堆应对措施可以立马施行,确保问…

双体系Java学习之逻辑运算符,三元运算符和运算符优先级

逻辑运算符 package operator;//逻辑运算符 public class Demo05 {public static void main(String[] args) {// 与(and)&& 或(or)|| 非(取反)boolean a true;boolean b false;System.out.printl…

企业举办活动发布会的意义是什么?如何利用媒体宣传

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 企业举办活动发布会的意义与媒体宣传策略 一、发布会的意义: 信息传递:直接向公众和利益相关者发布重要信息。品牌塑造:展示企业文化和创新&#xff…

HTML—常用标签

常用标签&#xff1a; 标题标签&#xff1a;<h1></h1>......<h6></h6>段落标签&#xff1a;<p></p>换行标签&#xff1a;<br/>列表&#xff1a;无序列表<ul><li></li></ul> 有序列表<ol>&…

牛客小白月赛88

E.多重映射 解题思路 对集合进行整体操作&#xff0c;集合大小只增不减&#xff0c;问最后集合标号维护集合&#xff0c;考虑并查集但直接用并差集维护会有以下问题&#xff1a;当前集合变标号&#xff0c;可能会和之前标号相同&#xff0c;则进行并查集操作时&#xff0c;会接…

C++ 智能指针深度剖析

文章目录 1. 前言2. 为什么需要智能指针&#xff1f;3. 内存泄漏3.1 内存泄漏的概念及危害3.2 内存泄漏的分类3.3 如何检测内存泄漏3.4 如何避免内存泄漏 4. 智能指针的使用及原理4.1 RAII思想4.2 智能指针的原理4.3 C智能指针发展历史4.4 std::auto_ptr4.5 std::unique_ptr4.6…

驱动OLED SSD1306的笔记

这里用的OLED模块是SSD1306的 硬件 SSD1306只支持3.3V供电SSD1306支持4中接口&#xff1a;6800、 8080&#xff0c;SPI&#xff0c;IIC通过引脚BS1和BS2接口的模式。如果是IIC模式&#xff0c;SCL对应D0&#xff0c;SDA对应D1,D2(需要把D1和D2连在一起然后接入MCU的SDA) OLED…

AIOPS:Zabbix结合讯飞星火做自动化告警+邮件通知并基于人工智能提供解决方案

目前Zabbix官方已经提供Zabbix+ChatGPT的解决方案 ChatGPT一周年,你充分利用了吗?Zabbix+ChatGPT,轻松化解告警! 但是由于需要魔法等其他因素,比较不稳定,遂决定使用国内模型,这里我挑选的是讯飞星火,基于我之前的文档,在此基础上通过Zabbix的告警脚本实现调用AI模型…

二维码门楼牌管理系统应用场景:推动旅游与文化产业的智慧化升级

文章目录 前言一、二维码门楼牌管理系统在旅游领域的应用二、二维码门楼牌管理系统在文化产业的应用三、结语 前言 随着信息技术的不断发展&#xff0c;二维码门楼牌管理系统作为一种创新的信息化手段&#xff0c;正在逐渐渗透到旅游和文化领域。它通过为文化景点、旅游景点和…

2024 批量下载公众号文章内容/阅读数/在看数/点赞数/留言数/粉丝数导出pdf文章备份(带留言):公众号爱在冰川近3000篇历史文章在线查看,找文章方便了

关于公众号文章批量下载&#xff0c;我之前写过很多文章&#xff1a; 视频更新版&#xff1a;批量下载公众号文章内容/话题/图片/封面/音频/视频&#xff0c;导出html&#xff0c;pdf&#xff0c;excel包含阅读数/点赞数/留言数 2021陶博士2006/caoz的梦呓/刘备我祖/六神读金…

qnx启动中控屏黑屏

bmetrics_service boot metrics service, 用于记录统计启动性能信息,读取/dev/bmetrics可以获取到这些信息 # use memorydump memorydump Sets the debug cookies, copies MMU info into reset_info asinfo, sets the secure monitor(TZ) dump buffer, starts tracelogger Usa…

菜鸟笔记-14散点图标记形状

大家在学习Python科研绘图中&#xff0c;总会涉及散点图标记形状&#xff0c;为了方便大家学习应用&#xff0c;博主通过学习搜集&#xff0c;将这部分技巧总结如下。 14.1默认散点图 14.1.1图像呈现 14.1.2绘图代码 import numpy as np # 导入numpy库&#xff0c;用于处理…

CDN(内容分发网络):加速网站加载与优化用户体验

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Vue | 基于 vue-admin-template 项目的跨域问题解决方法

目录 一、现存问题 二、解决方法 2.1 修改的第一个地方 2.2 修改的第二个地方 2.3 修改的第三个地方 自存 一、现存问题 报错截图如下&#xff1a; 二、解决方法 2.1 修改的第一个地方 在 .env.development 文件中&#xff1a; # base api # VUE_APP_BASE_API /d…

基于Jupyter快速入门Python,Numpy,Scipy,Matplotlib

文章目录 Jupyter 和 Colab 笔记本PythonPython 版本基础数据类型数字Numbers布尔值Booleans字符串Strings 容器列表List字典Dictionaries集合Sets元组Tuples 函数类 Numpy数组Array数组索引Array indexing数据类型DatatypesArray math广播Broadcasting Scipy图像操作MATLAB文件…

智慧城市中的数字孪生:构建城市管理的未来框架

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、实时监测与预警 2、模拟与优化 3、智能化决策 4、协同与共享 四、数字孪生技术构建城市管理的未来框架的价值 1、提高管理效率 2、优化资源配置 3、提升公共服务水平 4、增强应对突发事…

耐腐蚀特氟龙塑料材质PFA烧杯超纯试剂反应杯

PFA烧杯在实验过程中可作为储酸容器或涉及强酸强碱类实验的反应容器&#xff0c;用于盛放样品、试剂&#xff0c;也可搭配电热板加热、蒸煮、赶酸用。 外壁均有凸起刻度&#xff0c;直筒设计&#xff0c;带翻边&#xff0c;便于夹持和移动&#xff0c;边沿有嘴&#xff0c;便于…

springboot+xjar加密打包部署教程

需求背景 为了跟上时代的步伐&#xff0c;为了更好的生存。开个玩笑&#xff0c;就是心血来潮&#xff0c;使用xjar加密部署jar包&#xff0c;于是就测试一下。 xjar教程 1-maven配置文件修改 首先找到自己ideal配置的maven文件夹&#xff0c;然后找到apache-maven-3.9.3\co…