[嵌入式开发工具]使用VSCODE代替Keil进行C51和ARM单片机开发与调试

您所在的位置:网站首页 独孤天下的插曲是什么歌 [嵌入式开发工具]使用VSCODE代替Keil进行C51和ARM单片机开发与调试

[嵌入式开发工具]使用VSCODE代替Keil进行C51和ARM单片机开发与调试

2023-12-30 22:02| 来源: 网络整理| 查看: 265

VS Code简介

Keil-MDK是一款老牌的嵌入式开发工具,且作为ARM的亲儿子,其自带ARMCC在编译与调试方面上较gcc有所优势,却因其过于简陋的UI与极为不便的代码编写方式令新生代的程序员们无法接受。而VScode作为一款简洁且高效的代码编辑器,同时支持诸如调试,任务执行和版本管理之类的开发操作,集成了所有一款现代编辑器所应该具备的特性,包括语法高亮、可定制的热键绑定、括号匹配、以及代码片段收集等,使用它编码不仅心情舒畅,且效率倍增。本教程面向新人提供了使用VScode来编辑、编译、烧录、调试代码的方法,操作简单可行。

准备工作 第一步(前提):安装Keil与VScode

Keil官网(正版需要付费,懂的都懂): Keil Embedded Development Tools for Arm, Cortex-M, Cortex-R4, 8051, C166, and 251 processor families.

VSCode官网: Visual Studio Code - Code Editing. Redefined

第二步(编译):安装VSCode插件

1.C/C++

2.C/C++ Extension Pack

3.C/C++ Themes

4.Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code

5.Embedded IDE

6.Cortex-Debug (ARM调试插件)

7.vscode-icons

第三步(烧录):安装JLink驱动

JLink官网有Jlink的官方驱动:J-Link Debug Probes by SEGGER – the Embedded Experts

第四步(调试):安装arm-none-eabi-gdb

GNU的官方工具链下载网站上有arm-none平台的工具链下载链接:Prebuilt GNU toolchain for ARM (gnutoolchains.com)

配置VScode适配C51与MDK开发环境 C51:

安装完上述插件后后重启VScode,并按照下图进行工具链选择与配置,该步骤仅需在安装EIDE后配置一遍即可,以后不用反复配置。 QQ截图20230301165350.png 配置完毕后选择新建项目(此处以开发C51为例),依次选择“空项目->8位MCU项目”,并输入该项目文件夹的名称和路径,此处选择在桌面事先建立的名为"Test"的文件夹。并在该文件夹中分别新建名为“src”和“inc”的文件夹分别存放.c文件和.h文件。

QQ截图20230301170713.png

回到Vscode,修改构建配置为C51 Compile(编译器在每次新建工程时需要手动修改)。 QQ截图20230301171220.png 展开“项目资源文件夹”,点击旁边的文件夹图标,选择“普通文件夹”,从资源管理器中选择src和inc文件夹将它们添加到项目资源中。 QQ截图20230301171426.png 展开“项目属性”,并将inc文件夹添加到包含目录,从而完成对.h文件的包含。 QQ截图20230301171637.png

切换至工作区,选择要打开的.c文件,可以看到vscode已经自动使能了自动补全与代码高亮的功能,能够据用户的输入预测可能的函数名与变量名,是Keil中所不具有的。

QQ截图20230301172215.png

再将光标放在头文件上,按下“F12”,即可以实现头文件秒跳转,或按“Alt+←”可回到光标上一时刻所在的位置,“Ctrl+/”即可快速注释或解开注释,是不是比用Keil开发的手感好上了不少!除此之外,我们还可以直接在VScode中对该项目进行源码编译。

QQ截图20230301173349.png 可以在项目资源的Output Files文件夹中找到项目对应生成的Hex文件,当然,通过串口烧录工具或指定Shell也可以实现程序的一键烧录。 QQ截图20230301173519.png

至此,C51下用VScode代替Keil的方法已经实现,接下来介绍如何用VScode实现基于ARM Cortex-M的单片机开发。

MDK:

如果你的电脑上已经安装Keil MDK,那么你可以在Keil的安装目录下找到ARM->ARMCC文件夹,其对应的是我们开发STM32F1时常用到的AC5编译器(实际上已经落后),打开里面的bin目录可以找到如下图所展示的工具:

QQ截图20230318222611.png

其中:

armasm为汇编器,用于汇编程序 armcc为编译器,用于编译源代码文件 armlink为链接器,用于连接各程序段 fromelf可用于从elf文件中提取反汇编代码、生成二进制文件等 armar主要用于从.a和.lib文件中提取信息

各个工具的具体用法可参照ARM官方说明。我们只需要知道可用的ARM编译器所在路径为C:\Keil_v5\ARM\ARMCC\bin,再次配置编译工具链,不同于之前的C51选项,本次设置ARMCC编译器所在路径如下图 QQ截图20230318223742.png QQ截图20230318224009.png

直接导入Keil5工程

选择好编译工具链后可以直接打开已有的Keil-MDK工程,点击左侧的“导入项目”,并选择“MDK”,找到文件夹中的Keil工程后点击“Import”,此时右下角若有弹窗提示“是否与原有Keil项目共存于同一目录下”,可根据自身情况选择,选择完毕后切换入新工作区。

QQ录屏20230318230702 00_00_00-00_00_30.gif

可以看到很多报错,不要急,点击右下角的“允许EIDE为此文件夹配置IntelliSense”,报错消失。 QQ截图20230318231122.png

切换至“EIDE”分页并查看工程配置,可以发现与Keil中的配置的一致,且跳转、自动补全功能都已经可以实现。 QQ截图20230318231330.png

通过EIDE建立新的项目模板

点击新建项目,依次选择“空项目->Cortex-M 项目”,并输入该项目文件夹的名称和路径,此处选择在桌面事先建立的名为"STM32_TEST"的文件夹,并在文件夹中移植好STM32F10x所适用的标准库函数。 QQ截图20230318232611.png 其中User目录存放用户应用代码,System目录存放板级驱动程序,STARTUP目录存放启动文件,Libraries目录存放STM32的标准库函数。此处以STM32F103VET6为例,工程的编译工具链选择AC5,“芯片支持包”通过“From Disk”选项找到位于本机的对应芯片型号的Pack。 QQ截图20230318234225.png

注意:已经在Keil-MDK中安装过的芯片包一般位于Keil安装目录下的ARM\PACK.Download目录下。

QQ截图20230318234401.png 添加完相应的PACK之后,再展开分支选择对应的芯片型号。

最后在预处理选项中添加“USE_STDPERIPH_DRIVER”项 QQ截图20230318235338.png

没有问题后按下快捷键F7成功编译,可以发现成功输出了bin文件与hex文件。 QQ截图20230318235311.png

至此,通过VScode对ARM搭建工程进行编辑与编译的任务已经完成,下面介绍VSCode如何取代Keil对编写的ARM裸机代码进行烧录与调试。

烧录

点开EIDE的烧录配置选项,可以看到这里支持的有JLink,STLink,OpenOCD等,此处就以Jlink为例进行烧录配置。 QQ截图20230319000613.png 在使用JLink烧录前需要安装JLink驱动,否则电脑无法识别到Jlink,驱动程序可以在JLink的官网下载到,详情见文章开头的准备部分。

回到工程配置页面,选择烧录配置为JLink,再展开烧录配置,选择芯片名称为STM32F103VE QQ截图20230319002748.png 连接电脑、JLink与开发板,按下快捷键Ctrl+Alt+D,即可进行程序烧录。

调试

转到EIDE插件的设置界面,找到Axf To Elf选项,将其勾选,这样就得到了GDB调试时所需要的文件类型。 QQ截图20230319002327.png 再打开Cortex-Debug插件的设置页面,搜索Arm Toolchain Path项,将ARM Toolchian Path的路径修改为gcc-none-eabi工具链中的bin文件夹所在路径 QQ截图20230319003514.png 再搜索jlink关键字,将JLink GDBServer Path的路径修改为Jlink GDBServer所在目录 QQ截图20230319003809.png 修改完后的json文件如图所示 QQ截图20230319004007.png 此处的JLinkGDBServerPath中需要包含JLinkGDBServerCL.exe文件本身。编辑完成后按下Ctrl+s保存json文件,并按下快捷键F5即可进入调试模式。 QQ截图20230319004639.png 可以看到左侧的变量信息与寄存器信息应有尽有,按下F10可以单步跳过,F11单步跳入,断点信息也比Keil列举清晰的多。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3