本文为《无人机飞控固件开发教程》系列视频的辅助资料,已经在“网易云课堂”上线, 链接如下:https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983
无人机调试,飞控硬件定制、固件修改,日志分析,请QQ联系:3500985284
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
可选。将不同层级的括号用不同的颜色显示,同时以竖线的形式提示括号的范围,非常好用!
2022年8月6日更新:最新版的vscode已经集成此功能,因此不需要单独安装这个插件了。
4、vscode-icons
可选。将不同类型的文件用不同的图标显示
5、GitLens
可选。不过我要说的是:这是个神器!
6、Task Runner
可选。方便快速运行编译任务。注意,能搜索出来两个这种插件,我们要安装的是作者为“Sana Ajani”的那个插件。
2022年10月17日更新:这个插件不用安装了,已经用不了了。
四、针对飞控代码设置Vscode
大家可以直接下载我验证过的配置文件:https://gitee.com/junzixing/ardupilot-vscode-settings
1、设置代码缩进规则;
2、设置调用cygwin环境
2022年10月17日更新:设置调用cygwin环境的功能已经不可用了,因此我删除了里面的“tasks.json”文件。
3、设置不包含的文件夹
五、使用vscode的任务功能编译飞控固件
2021年9月6日更新:随着vscode的更新,此方法又不可用了。请大家按照“课时3”中的方法使用Cygwin64终端编译飞控固件吧,也就是说打开vscode来编辑代码,打开Cygwin64终端来编译固件,二者配合着用,也没有多不方便。
最初为了实现使用鼠标点击就能编译飞控固件的功能时 我费了很大劲,可是准备录制本节课的视频时由于vscode的更新当时的方法不行了。
后来我又花了好久在新版vscode下实现了此功能并录制了本节课。谁知道刚刚多去1个多月,又不行了。
算了,不折腾了,手动输入“./waf copter”对于一个开发者来讲并不会消耗多少时间。
注意,在“TASK RUNNER”处是“单击”任务名,不是“双击”
1、清理工程
2、设置编译目标
3、编译固件
六、vscode使用技巧
1、快捷键
(1)F12:跳转到定义
2021年9月27日更新,放弃这个“跳转到定义”的功能吧,对于较大的软件工程,vscode跳转速度很慢,并且不少情况下由于引用路径配置问题不能正常跳转,因此我们大部分情况下是以下面第3条“全局搜索”为主,“跳转到定义”为辅。
(2)修改快捷键
(3)其他快捷键
2、查看函数调用关系
3、全局搜索
由于飞控代码中有太多的条件编译,右键“跳转到定义”功能时灵时不灵,因此大家平常看代码的时候请以这个“全局搜索”为主。
另外,如果你在代码中看到有红色波浪线(提示语法错误),不要认为是真有错误,也不必去花时间去刻意解决这个问题。ardupilot源代码太庞大且复杂,vscode在语法检查上会出现很多误报的情况,不必在意。再次强调,vscode只是代码“编辑器”,不是代码“编译器”,编译是否报错,是GCC编译器说了算的。
4、文件内搜索
5、格式化选定内容
6、git
七、不要局限于本课程教的内容
我一直是根据其他编辑器的使用技巧摸索着使用vscode,于是很多地方一直是似是而非,也因此我一直感觉vscode有时好用,有时难用。直到有一天,我受够了,买了本专门讲vscode的书《Visual Studio Code 权威指南》,花了一下午的时间快速看完(前半部分细看,后半部分快速翻阅),然后我感觉一切都豁然开朗,使用vscode编写代码的效率也大大提升。
如果你对某种知识掌握的似是而非、模模糊糊,那么这项知识对你的拖累远大于其带来的好处。这时最好立即投入一定精力将模糊的知识转化为准确的、成体系的知识。
vscode还有很多非常有用的功能,请大家自行探索:打开百度,搜索“vscode 插件推荐”、“vscode 如何设置快捷键”、“vscode工作区跟文件夹的区别”、“不会用百度怎么办”……
本文为《无人机飞控固件开发教程》系列视频的辅助资料,已经在“网易云课堂”上线, 链接如下:
https://study.163.com/course/introduction/1209568864.htm?share=1&shareId=1448054983
无人机调试,飞控硬件定制、固件修改,日志分析,请QQ联系:3500985284