查看: 1045|回复: 0

使用vscode编译apm飞控固件

[复制链接]

46

主题

775

帖子

1551

积分

金牌飞友

Rank: 6Rank: 6

积分
1551
飞币
768
注册时间
2017-9-14
发表于 2022-11-17 15:57:25 | 显示全部楼层 |阅读模式
视频教程

本文为《无人机飞控固件开发教程》系列视频的辅助资料,已经在“网易云课堂”上线, 链接如下:https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983

 Visual Studio Code(简称Vscode)是微软发布的一款源代码编辑器,它虽然从名字上很接近那个安装后动辄占用十几个G的Visual Studio,但是实际上二者并没有直接的关系。发布后的这几年以来,其凭借各种优势,已经有了相当高的市场占有率,并且增长迅速。我们后续的课程将逐渐弃用eclipse,转向Vscode,本节课我们将讲述如何使用Vscode编辑飞控源代码和编译飞控固件。

 2021年7月之后开始学习我们课程的同学可以直接上手Vscode而不用学习eclipse,当然如果你感觉eclipse更好用的话,可以继续使用eclipse,毕竟工具终究只是工具,不同人顺手的工具是不一样的,而最终把活干完、干好才是我们干活的本质目的,请勿本末倒置。

题外话:

    我曾经以为买了Apple Watch就可以多运动一点,最终却发现这个手表的确可以减少我漏接重要电话,但是我的体重却依然还在稳步增加;

    我曾经以为买了ThinkPad P1 Gen2工作效率就会提高不少,最终发现玩《守望先锋》果然不卡了,但是我最终还是在一次对战中被队友骂之后宣布永远退出《守望先锋》;

    我曾经以为买了MacBook M1之后就能更多地更新视频,但是大家有目共睹,我的更新越来越慢了,忙只是借口,懒才是本质,毕竟我刷抖音的时候时间可是以小时为单位算的;

    我曾经以为买了机械键盘后编程水平和效率会大幅提升,但是显然代码是经过脑子传导到手的,脑子没变,手上的工具再好都是没有用的,更何况红轴、青轴、黑轴、茶轴我都试过,并没有让我感到惊艳,唉,下一步得试试静电容了;

    我曾经……篇幅有限,不曾经下去了。

 很明显,工具终究只是工具,专注于工具的升级与优化,是做工具的人的事情。作为一个工具的使用者,如果太在意工具的选择与优化,那是在逃避干活的辛苦,毕竟砍柴比磨刀辛苦,营造出一个自己在努力的假象,事实上更加重要的活一点没干……这是我以前走过的弯路,希望大家不要再走一遍。

因此,如果大家问我eclipse和vscode到底哪个更好的时候,我的回答是:都挺好,少废话,赶紧把代码改起来,把飞机飞起来!
一、先搞明白“源代码”、“编辑器”、“编译器”以及“固件”之间的关系

1、源代码:“开源”,指的就是开放源代码,源代码(*.c、*.cpp、*.h)本质上都是一堆“文本文件”,使用任何文本编辑器修改其内容最终效果都是一样的:记事本、vscode、eclipse、vim。只不过“集成开发环境”(IDE)使用起来更方便,同时大部分集成开发环境集成了“编译器”,或者可以在其后台调用外部的编译器;

2、编辑器,就是编辑源代码这种文本的程序。记事本、vscode、eclipse、vim等软件在修改源代码的时候,都可以称为编辑器;

3、编译器,是将源代码这种文件文件通过预处理、编译、链接等步骤最终生成计算机可以执行的文件的工具软件。注意,大部分情况下编译器是与平台绑定的,比如飞控固件是运行在STM32单片机上的程序,它显然无法在Windows电脑上直接运行;

4、固件,一般情况下指的是单片机的包含了操作系统(可有可无)、应用程序的可执行程序文件。固件是与芯片型号一一对应的,这也是为什么pixhawk2.4.x飞控(主控为STM32F427)的固件无法在FMUv5系列的飞控(主控为STM32F7)上运行的原因。

事实上,不管是用eclipse“编译”飞控固件、还是用vscode“编译”飞控固件,在“编译”阶段,都是调用“课时3”中的“cygwin64环境”和“waf命令”来编译的,因此“课时3”还是需要大家认真学习。
二、安装Vscode

1、打开百度;

2、在搜索框中输入“vscode 官方下载”;

3、擦亮眼睛,找出真正的官方下载链接。注意,vscode官网有时候打开速度的确较慢,但是终究还是比github官网好打开很多倍,请耐心一点;

4、下载。如果使用浏览器下载速度慢的话,请尝试用迅雷下载,速度会从kB变MB。
三、安装Vscode插件(安装方法见视频教程)

1、C/C++

 必选。C/C++支持

2、Chinese (Simplified) Language Pack for Visual Studio Code

 可选。简体中文支持

3、Bracket Pair Colorizer 2

 可选。将不同层级的括号用不同的颜色显示,同时以竖线的形式提示括号的范围,非常好用!

4、vscode-icons

 可选。将不同类型的文件用不同的图标显示

5、GitLens

 可选。不过我要说的是:这是个神器!

6、Task Runner

 可选。方便快速运行编译任务。注意,能搜索出来两个这种插件,我们要安装的是作者为“Sana Ajani”的那个插件。
四、针对飞控代码设置Vscode

大家可以直接下载我验证过的配置文件:https://gitee.com/junzixing/ardupilot-vscode-settings

1、设置代码缩进规则;

2、设置调用cygwin环境

3、设置不包含的文件夹
五、使用vscode的任务功能编译飞控固件

具体步骤见视频教程:https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983

注意,在“TASK RUNNER”处是“单击”任务名,不是“双击”

1、清理工程

2、设置编译目标

3、编译固件
六、vscode使用技巧

1、快捷键

(1)F12:跳转到定义

(2)修改快捷键

(3)其他快捷键

2、查看函数调用关系

3、全局搜索

4、文件内搜索

5、格式化选定内容

6、git
七、不要局限于本课程教的内容

 我一直是根据其他编辑器的使用技巧摸索着使用vscode,于是很多地方一直是似是而非,也因此我一直感觉vscode有时好用,有时难用。直到有一天,我受够了,买了本专门讲vscode的书《Visual Studio Code 权威指南》,花了一下午的时间快速看完(前半部分细看,后半部分快速翻阅),然后我感觉一切都豁然开朗,使用vscode编写代码的效率也大大提升。

 如果你对某种知识掌握的似是而非、模模糊糊,那么这项知识对你的拖累远大于其带来的好处。这时最好立即投入一定精力将模糊的知识转化为准确的、成体系的知识。

vscode还有很多非常有用的功能,请大家自行探索:打开百度,搜索“vscode 插件推荐”、“vscode 如何设置快捷键”、“vscode工作区跟文件夹的区别”、“不会用百度怎么办”……
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表