关于使用VS Code开发stm32的一些感想

0. 引言

这几天在推【宇宙最强编辑器VS Code】专栏系列文章,不少群聊和文章的留言都是关于使用VS code 进行stm32开发和调试,看到后思绪万千,不知如何回复,决定暂停更新,结合自身的经历写篇文章来回复这个问题。

两年前我还是一个小萌新,老老实实的使用keil-MDK开发,我认识的一个学长在Linux方面非常强,当我第一次见到可以在满屏代码的条件下玩单片机,瞬间颠覆了我的认知,原来开发可以如此炫酷。

我开始接触Linux这个神奇的东西,在电脑上装了Ubuntu16.04,踏上Linux学习之旅,跟着网上诸多的教程搭建Linux下stm32的开发环境,两年多的时间里搭建了不少于5次,每次都要至少花费6-8个小时,结果都以失败告终。

直到上学期学校开设了Linux课程,我才得以系统的学习了Linux基础命令,C语言的编译链接过程,gcc和gdb工具的使用,makefile的编写,另外一方面,由于一直使用stm32做项目,对stm32也比较熟悉,之后我再次折腾了一下,花了不到一个小时的时间就配置好了,很有成就感,整个过程写了博客,公众号,在野火论坛也发帖分享。

回顾整个过程,我有以下几个方面的总结分享,共勉。

1. 关于环境搭建

开发stm32的程序需要使用交叉编译工具链gcc-arm-none-eabi,ARM为三个平台都提供了该工具,可以在其官网下载到:

关于该工具的安装和配置,如果有Linux操作基础,非常简单,只有三步:

  • 下载
  • 解压
  • 配置环境变量

关于该工具的使用,因为是基于gcc的,如果使用gcc开发过c语言程序,使用方法基本相同

编译得到可执行文件后,可以使用openocd将程序写入单片机运行。

openocd全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.10.0版本,目前主流调试器几乎都支持,具体可以查看Open On-Chip Debugger:OpenOCD User’s Guide,它的项目托管在sourceforge上,同样支持Windows平台和Linux平台。

下载之后,如果有Linux操作基础,执行其中的安装脚本程序即可

总结为一句话:如果有Linux操作基础和gcc基础,搭建开发调试环境非常容易,即使没有任何Linux基础,跟着教程也能搭建成功。

2. 难点一 —— 链接文件及链接过程

在日常开发中编译这个词广为人知,但是链接却很少有人了解,这是因为Keil MDK给我们屏蔽了这一过程,导致普遍认知是 —— “源代码编译之后生成可执行文件”。

其实C语言程序,特别像单片机开发中这样文件非常多的,一个固件库就能有几十个c文件,头文件就不说了,都懂,要经历四个过程:

  • 预处理:处理每个C文件中的预处理指令;
  • 编译:将每个文件中翻译为汇编语言;
  • 汇编:将汇编语言翻译成机器码,通常叫.o目标文件,每个c文件对应一个目标文件;
  • 链接:将所有目标文件以及依赖库进行链接,生成可执行文件

可以看到,最重要的不是编译,因为编译器干的活太简单了,只是针对每个文件进行编译,不受其他影响,但是链接器就不一样了,链接器不仅要顾全大局,而且要默默无闻的干活

  • 将所有的目标文件进行链接;
  • 需要将启动文件链接在程序最开始,否则运行出错;
  • 链接过程必须要根据链接文件安排;

因为链接过程的复杂性,加上每个单片机的flash和SRAM的大小都不一样,所以链接文件别说自己编写,就是去找现有的,也是一件比较难的事情,当时我是参考了truestudio,直接拿truestudio的链接文件过来用才相对那么容易。

即使有了链接文件,在编译和链接过程中需要带非常多的参数,尤其是链接过程,不是我危言耸听,这些参数错一个就会导致失败

3. 难点二 —— makefile的编写

stm32的开发都是基于标准库和HAL库的,HAL我暂且没试,拿标准库来说,需要编写makefile文件,构建整个编译关系,这个其实不是太难,理解了makefile的一些自动变量规则和隐含规则后,就很好编写出这个makefile了,在以后的开发中,只需要进行一些简单的修改就可以了:

4.关于VS Code

说了这么多,是该回归正题了,关于要不要使用VS Code开发stm32简述一下个人观点。

VS Code只是一个轻量级编辑器,就像上篇文章中使用VS Code进行C/C++语言开发,我们只是使用了它的编辑器功能而已,随便写一个小程序很方便,但是程序稍微复杂点的话,重点还是makefile如何编写,VS Code只是调用执行一下make命令而已。

同样,使用VS Code开发stm32,重点还是在环境搭建,链接文件,makefile文件上,我个人认为,如果对gcc和makefile这些很熟悉了,想要追求更高的效率,可以折腾一下玩玩,如果Linux还没有入门,不值得花费大把大把的时间再去折腾了,老老实实用MDK吧,不要本末倒置,你的初衷是学习单片机。

当然如果实在想折腾一下,那就折腾一下吧,尽管花费了大量的时间,但是会学到非常非常多的知识,在后续进行嵌入式Linux的开发会有非常大的帮助,折腾一番后,对于单片机的开发就如庖丁解牛一般~

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

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

相关文章

浅谈NAS使用感想

为何买NAS 上周入手了一台NAS,对于我们小小的工作室来说,也算是“巨额”IT投资了。 买NAS的理由很简单:被刚刚过去的勒索病毒吓到了,虽然咱重要资料不多,但这些年积累下来,几百G还是有的。万一中了招&…

劝你轻易别来阿那亚,我怕你来了就不想走

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 4.21-23,津津乐道的几位主播收到深夜谈谈播客网络的邀请,在阿那亚参加了「声量The Power of …

emo-scheme 新特性

缘起 最近发现 scheme 组件使用的一些不完美和可改进点,主要有以下几个: DeepLink 该如何支持?期望使用时可以获取结构化的数据(data class),避免从 NavBackStackEntry 去 getString、getInt 之类的。期望…

单测时尽量用fake object

1. 单元测试的难点:外部协作者(external collaborators)的存在 单元测试是软件开发的一个重要部分,它有助于在开发周期的早期发现错误,帮助开发人员增加对生产代码正常工作的信心,同时也有助于改善代码设计。**Go语言从诞生那天起…

【从零开始玩量化20】BigQuant平台策略代码本地化(与Github同步)

引言 最近发现了个不错的量化平台,BigQuant BigQuant的客服找到我,推荐他们平台给我使用,宣传的是人工智能,里面可以使用类似ChatGPT的聊天机器人,和可视化拖拉拽功能实现策略。 不过,这些都是锦上添花的…

微软“封杀”了推特,马斯克怒了:我要起诉微软!

文|鱼羊 发自 凹非寺源|量子位 OpenAI还没撕完,马斯克又跟微软杠上了,甚至直接在推特上放话: 我要告微软! 这又是发生了甚么? 原因无它:微软刚刚“封杀”了推特。公告显示&#xff0…

新 Bing 惨遭微软“脑叶切除”,引大量网友不满!

整理 | 禾木木 责编 |梦依丹 出品 | CSDN(ID:CSDNnews) 在新版 Bing 引入 ChatGPT 爆火之后,Bing 就开始了各种“作妖”秀,翻车离谱事件是一件接着一件。有不少用户表示在和 Bing 的交流过程中,发现…

成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统

梦想照进现实,微软果然不愧是微软,开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统,贾维斯(jarvis)全称为Just A Rather Very Intelligent System(只是一个相当聪明的人工智能系统),它可以帮助钢铁侠托尼斯塔克…

【JAVA】让 ChatGPT 来描述 IOC

前言 又迎来了一年一度的金三银四,虽然说今年的大环境不好,但是招聘还是在火热进行中。 面试过 Java 工程师的小伙伴都知道,Spring 中的 IOC 是面试高频题,面试官上来就问,知道什么是 IOC 吗,IOC 是如何初…

【工具】VScode|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)

使用过 Anaconda、Jupyter、Pycharm、VScode、VS2022、pdb 这几个 IDE 去编写 python 项目或者维护 python 环境,各有各的优缺点,但 VScode yyds! 可能会被网上说得天花乱坠的 Python 配置项吓退,会被 VScode 各种插件介绍吓退&a…

日本僧人问道弘法寺当家师

时间过得真快,六名日本禅僧在弘法寺为期10天的体验生活已进行到第三天,晚上10:00,方丈印顺大和尚依然等候在丈室,与前二日不同的是,弘法寺的当家师智空法师也来到了方丈室。 六位日本僧人行礼完…

佛教基础知识

佛教基础知识 1、《佛教常识》(1)佛陀和佛教的创立(2)佛法的基本内容、书籍(3)僧团和佛的弟子(4)佛教在印度的发展、衰亡及复兴(5)佛教在中国的发展、演变 2、…

【ChatGPT与网络安全攻击】AI密码破解器可在60秒内攻破50%以上普通密码

研究表明,ChatGPT等功能强大AI工具已经被用于网络攻击者实施犯罪活动,例如开发恶意软件和生成钓鱼邮件等。如果人们的密码从数据库泄露或被破坏,那么网络攻击者采用AI密码破解器猜出密码是概率几乎是100%,其中50%以上会在60秒内被…

chatgpt赋能Python-pythonmd5解密

Python MD5解密原理及应用 MD5是一种广泛使用的哈希算法,被用于加密敏感数据。MD5算法使用不可逆的方法将任何长度的数据转换为固定长度的哈希值,并且只能通过暴力破解的方式破解加密后的敏感数据。尽管MD5算法被广泛采用,但历史上已发现其存…

chatgpt赋能python:Python怎么破解Windows软件?

Python怎么破解Windows软件? 作为一名有10年Python编程经验的工程师,我想分享一些破解Windows软件的经验。Python是一种高级编程语言,可以用于许多不同的应用程序,包括软件破解。 什么是软件破解? 软件破解是指绕过…

讯飞星火认知大模型与ChatGPT的对比分析

引言: 人工智能是当今科技领域的热门话题,自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言,实现人机交互和智能服务。近年来,随着深度学习的发展,自然语言处理领域出现了许多创…

【Unity开发小技巧】UnityWebGL移动端和电脑端调起输入法,中文输入处理

目录 一.TextMesh Pro中文显示问题 1.PC端和移动端中文显示异常乱码(解决方案) 1.制作TextMesh Pro字体 方式一 2.制作TextMesh Pro字体 方式二 3.通用字体资源 2.web端中文不能输入窗口模式(解决方案) 二.移动端Inputfile调…

分享一个利用ChatGPT为世界上任何城市建立旅行路线(带链接)的工具 GPTravel Advisor

GPTravel Advisor - 在几秒钟内创建世界上任何城市的旅行路线 网址链接:https://gpt-travel-advisor.vercel.app/ GIthub:https://github.com/dabit3/gpt-travel-advisor ChatGPT中文论坛:https://gptocean.com/

ChatGPT 新版 API 推出 語音轉換文字模型 Whisper

OpenAI 宣布釋出新 ChatGPT API,允許第三方開發人員通過 API 將 ChatGPT 整合到他們的網站、應用程式及產品中。同時發表開源的,讓用户用以轉錄或翻譯音訊。 OpenAI 表示,新版的 ChatGPT API 不僅可用於創建人工智能聊天界面,更可…

怎么玩chatgpt?如何利用ChatGPT来编写PRD?

很多人对于chatgpt不知道怎么玩?其实对于一个产品经理来说,他可以这样玩!在产品开发过程中,产品需求文档(PRD)是一个非常重要的文档,它描述了产品的功能、特性和目标用户等信息。编写PRD需要耗费…