欢迎光临
我们一直在努力

VS Code链接Keil搭建嵌入式开发环境

VS Code链接Keil搭建嵌入式开发环境

一、前言

在使用Keil进行嵌入式开发的过程中,如果是作为初学者,Keil的编辑环境尚且可以忍受,但如果想让Keil作为长久的开发工具,Keil的编辑环境就会显得太难以忍受了一点。相较于现代各式各样功能完备、智能的代码编辑器,Keil的编辑器功能堪称原始,时不时无法转跳的bug、经常抽风的代码提示等等,会让开发者的开发体验感降到最低。

对于这样的问题,解决方案大体上分为两种。第一种,舍弃Keil的编辑器功能,选择其他开发体验更好的现代编辑器,让Keil只负责处理后端的编译链接,也就是现代编辑器链接Keil搭建开发环境的方案;第二种,在舍弃Keil编辑器的基础上,同时舍弃Keil的编译链接处理功能,自己搭建GCC工具链进行工程的后端处理,即现代编辑器搭配GCC工具链搭建开发环境的方案。

一般来说,对于水平有限的开发者,方案一就足以解决当前开发舒适度不够的问题。本文将介绍VS Code链接Keil搭建嵌入式开发环境的方案,但不会在文章中介绍软件安装上的问题,只讲解如何实现链接并完成开发。

二、原理

对于Keil,我们可以称之为支持嵌入式开发的集成开发环境(IDE)。集成开发环境的一大特点,就是将编译器、调试器、项目管理器、甚至模拟器深度耦合在一起,让你无需弄清项目工程是如何“跑起来”、有何样的底层逻辑,你只需要确保你的PC上已经安装好了相应的编译器、配置好了编译器在系统中的路径(也就是所谓的环境变量),就能在集成开发环境中进行开发,因为它已经在“背后”默默为你准备好了一切。毫无疑问,集成开发环境能够显著降低开发的上手难度。

与之相对的,VS Code并不是一个集成开发环境类的软件,而可以理解为是一个支持各类插件的高级编辑器。乍一听上去,貌似VS Code比不上能让开发者“少操心”的IDE,但VS Code在其强大的插件支持下,在灵活性上可谓“一骑绝尘”。

从上文的描述中,我们知道,集成开发环境类的软件,是直接将底层处理逻辑集成在软件内部。而这也导致,对于一个功能已经确定的IDE软件,你很难再利用它去进行其他方向的项目开发。你能用Keil开发Python项目吗?或许可以,但实现难度难以想象。可如果你要问,你能让一个已经拥有了开发嵌入式项目能力的VS Code去开发Python项目吗?答案是:完全可行。

VS Code中支持的各类插件,可以实现在VS Code中配置不同的开发环境,让多个开发环境同时共存。通过插件,VS Code可以将特定方向开发所需的外部工具链集成在软件中,这样就具备了开发此方向项目的能力。因为插件的存在,开发者们能在VS Code中集成若干不同方向的项目开发环境。VS Code可供自定义的开发环境,让开发者们的开发变得极为灵活。

这里可能会存在一点疑问,既然前面提到的VS Code配置开发环境都是插件集成外部工具,为什么配置嵌入式开发环境的时候,是“链接”Keil,而不是直接集成嵌入式开发中需要用到的开发工具呢?这是因为嵌入式开发存在其特殊性。嵌入式开发要实现的不仅仅是软件上的编译,更进一步还有软件与硬件之间的链接,这也是为什么嵌入式领域中的编译往往被称为“交叉编译”。

相较于其他开发环境的搭建(例如C开发环境、Java开发环境),嵌入式开发环境的搭建对开发者自身的能力有一定要求,需要其对开发过程有十分清晰的认知,不是简单安装编译器、配置环境变量就能够实现的。如果一定要完全使用插件,让外部工具在VS Code中进行集成(上文中的方案二),反而会让开发难度陡增。我们当前的目的只是为了解决Keil编辑器开发手感差的问题,在能力有限的情况下,不需要舍本逐末,既然Keil底层已经将这些工具链接好了,直接在VS Code中使用插件调用Keil中配置好的工具链进行开发就好。

三、链接

首先是在安装好的VS Code中安装几个搭建环境的必要插件。第一个插件是Keil Assistant,这个插件的作用类似于一个“远程遥控器”,让VS Code能调用Keil的项目开发功能(功能实现者还是Keil)。 KeilAssistant安装

在安装完成后,进入Keil Assistant插件的设置界面,设置Keil MDK及Keil C51的路径(如果不进行C51开发,也可以忽略C51路径的配置),这个路径就是Keil安装文件夹中,UV4.exe可执行文件的路径。 进入KeilAssistant的插件设置界面

配置完成路径之后,可以在侧边文件栏中发现新增的一行“KEIL UVISION PROJECT”,点击右侧按钮,选择一个已经创建好的Keil工程文件,在VS Code中打开。 打开Keil工程1

打开工程后,能看到KEIL UVISION PROJECT栏下出现了项目工程结构,这就是插件KEIL ASSISTANT解析的工程结构。同时,当鼠标位于Target文件夹时,其右侧会出现构建项目的三个功能按钮:编译(Build)、下载(Download To Device)、重构建(Rebuild)。如果展开每个文件组,也能看到对应在组中的文件。 项目结构

在完成插件配置后,我们先编译一下工程。在编译时,可能会出现需要你安装功能的提示。必须点击下载并安装此功能,因为Keil Assistant在调用时需要用到一些底层的功能。 安装功能

安装完成后,重启电脑,以防止某些功能需要重启后才能工作(这里如果第一次安装不成功,可以尝试重启电脑后,重新编译项目触发这个安装信息的弹窗进行安装),重启完成后,执行工程编译,0错误0警告。 工程编译

进入文件编辑界面,看一下代码编写效果如何。编写后可以发现,当前的编辑器并没有函数参数提示、以及转跳到定义等一系列功能,就连仅有的代码补全功能,依旧保持着Keil风格的不好用。 仅KeilAssistant效果

原因在于,现在VS Code并没有对文件中内容进行解析的能力。从上文的讲解中我们知道,Keil Assistant仅限于调用Keil的项目开发功能,所以目前只安装了Keil Assistant的VS Code,用一个通俗点的话来说,压根“看不懂”这些文件的内容。

所以为了让VS Code能“看懂”这些工程中的源文件,达到为我们提供函数补全、代码转跳等功能的目的,还需要用到C/C++这一插件,这一插件的作用就是“让编辑器读懂代码”。 C_C++插件

在安装完成C/C++插件后,再在编辑器中进行编写测试,可以发现代码补全、参数提示、函数转跳等功能都实现了,效果非常丝滑。 C_C++插件功能展示1

进行过如上操作之后,VS Code与Keil的链接就算是完成了,接下来可以进行开发效果测试了。

注意本文安装的C/C++插件,仅仅只是实现了代码的智能补全、语法错误实时检查以及跨文件的符号跳转等功能,与真正的C开发环境还存在差距。如果你想配置完整的C开发环境,在VS Code中进行C开发,还需要去下载别的功能插件以及安装C编译器、配置环境变量,详情可以参考网上介绍VS Code配置C开发环境的博客或教程。

三、测试

所谓的测试,其实就是测试在VS Code上编写的程序是否真的能在MCU上跑通,这里我简单编写了一个点灯程序进行测试。

#include "gd32f10x.h"

int main(void)
{
rcu_periph_clock_enable(RCU_AF);
gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE);

rcu_periph_clock_enable(RCU_GPIOB);
gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_4);

gpio_bit_reset(GPIOB,GPIO_PIN_4);

while(1){
}
}

编译结果是0错误0警告后,进行下载操作。 测试1

测试结果:灯正常点亮,下载成功。 测试结果

经过上面的测试,VS Code链接Keil搭建开发环境的方案已经成功实现,可以在VS Code中正常进行开发了。

注意本文中使用的方案,虽然最终实现了在VS Code中进行嵌入式开发的目的,但是,无法像Keil一样,从0开始创建出一个项目工程。正如前文所说,VS Code只是通过插件调用了Keil的开发功能,(在这种方案下)没有能力做到真正地像Keil一样完成完整的项目开发逻辑。VS Code在这个方案中能做的,只是提高代码编写的舒适度。所以,在使用VS Code进行嵌入式项目开发之前,要先在Keil中把项目创建、配置好,当然,如果开发中途需要更改配置,仍需要回到Keil中进行更改。至于调试,个人建议还是老老实实回到Keil的开发环境中进行调试。

最后提醒一下,如果在VS Code中发现编译(Build)的快捷键F7无法使用,可能是与VS Code中已经存在的快捷键冲突了,可以先按下快捷键Crtl+K、再按下快捷键Crtl+S打开快捷键设置,在设置中只保留Keil Assistant的快捷键(或者直接更改为没有被使用的快捷键,这样就不用进行后面的操作了),更改另一与之冲突的功能的快捷键或直接删除。同理,如果其余快捷键也遇到同样的问题,如法炮制即可。 快捷键冲突处理

赞(0)
未经允许不得转载:171主机测评 » VS Code链接Keil搭建嵌入式开发环境
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址