| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 基于VS Code搭建通用ARM微控制器开发平台 -> 正文阅读 |
|
[嵌入式]基于VS Code搭建通用ARM微控制器开发平台 |
基于VS Code搭建通用ARM微控制器开发平台
文章目录概述现在流行的开发平台有很多,很多芯片厂商也会提供自己的IDE,一般这些IDE都是基于通用IDE框架(例如Eclipse与VS Code)通过设计相应的插件实现的。例如目前用的比较多的STM32CubeIDE就是基于Eclipse开发的。同时,ARM提供的官方开发工具Keil MDK虽然比较原始简陋,但使用者也很多。不同的操作系统、不同的单片机平台就会对应衍生出很多个开发环境,带来管理和开发上的困难。 单片机开发的核心过程是交叉编译,即在PC端编译生成能够在单片机平台运行的可执行文件。因此,通过设置正确的交叉编译工具链,并使用与平台无关的Makefile文件可以将不同单片机的工程统一的组织起来。当然,这样做的缺点是对新手极其不友好,如果没有gcc、linux与交叉编译相关项目经验的很难直接理解与掌握。同时,很多工程师只是用一两款平台的甚至是一两种型号的单片机开发,如此就没有必要考虑通用的微控制器开发方法。 但是,从进一步提高嵌入式开发水平、全面理解交叉编译过程以及多单片机平台开发的角度来看,搭建通用ARM微控制器开发平台又是十分必要的,具备很强的工程意义与研究价值。 需要说明的是,本文档是基于现成Makefile工程进行的。而不同的单片机平台的Makefile文件是不一样的,尤其是与内核相关的编译命令。与此同时,不同单片机平台还有不同的启动文件(.S*)与链接脚本(.ls*),这些都是需要提前整理好,并用Makefile文件组织起来的。 VS Code与Eclipse之争VS Code与Eclipse都是主流的、开源的、通用的IDE,都能通过预留的接口与插件实现对各种编程语言、各种运行平台的支持。笔者综合考虑了各个MCU芯片厂商的推荐工具、软件维护与使用体验、代码编写与功能支持、交叉编译环境设置难以程度的角度出发,最终认为VS Code更加适合我们设计通用ARM微控制器开发的需要。因此,以下介绍使用VS Code搭建MCU开发平台的一般过程。 其实,从它们的官网首页风格中就能看出彼此的差异。 下载安装VS Code官方下载地址:https://code.visualstudio.com/ 安装ARM-GCC工具链根据不同的系统平台选择安装不同的交叉编译工具链。作者推荐使用metalcode-eu出品的原生工具链。例如,如果是windows系统,就选择安装windows-arm-none-eabi工具链;如果是darwin(macOS)系统,就选择安装darwin-arm-none-eabi工具链。 安装完成之后,打开扩展,会显示相应的教程。使用交叉编译工具链,最重要的就是正确设置环境变量,使得Makefile文件中指定的命令可以被正确识别。因此,这个插件中所介绍的使用方法就是在tasks.json中指定任务名、任务的环境变量。 Windows平台的版本问题经过在Windows平台的实际测试发现如果安装了最新版本的GCC工具链,从elf生成hex文件时会报错:“objcopy.exe: 64-bit address 0x4b4fa308000000 out of range for Intel Hex file”,其他功能不受影响。经过排查发现是GCC工具链的版本问题,可以自行选择安装其他插件提供的工具链或者简单的将此扩展插件降低版本即可使用。笔者实测V0.1.2版本是可用的。 创建项目工程如果是初次在VS Code上使用一个Makefile工程,那么需要打开这个工程所在的文件夹(可以是任意位置)。当然,也可以指定git的远端仓位地址直接clone代码到本地。 创建tasks.json对于新打开的Makefile工程,需要手动创建tasks.json文件与launch.json文件。 VS Code是通过运行tasks.json中配置的任务来执行脚本命令的。配置文件中以JSON格式保存各个参数,例如任务名字label,类型type,命令command,参数args等等。其中run build/test task是软件提供的最常用的两种任务,所以一般就把编译,链接等生成目标程序的任务名设置为build,把测试运行的任务名设置为run。其中run build task的快捷键是ctrl/cmd + shift + B。 依次选择【Terminal】【Configure Tasks…】【Create tasks.json file from template】即可创建默认的tasks.json文件。 可以根据GCC工具链扩展中提示的参考配置修改此文件。提供的示例参考如下:
设置完tasks.json文件后,可以执行【Terminal】【Run Build Task…】,即可按照"command"字段中指定的命令完成工程编译。 关键设置说明tasks.json文件中除了要指定各个平台的工具链路径之外,还需要提供两个任务,一个为默认的build任务,一个为测试任务。通过测试任务可以输出环境变量以判断是否设置正确。同时,考虑到跨平台支持,需要额外设置一个
创建launch.jsonVS Code是通过运行launch.json中配置的任务来执行程序下载与调试的。 对于ARM单片机开发,首先需要安装Cortex-debug插件。 依次选择【Run】【Add Configuration…】【Cortex Debug】,即可自动生成launch.json文件。 其中,"executable”字段的值需要改为实际可执行文件的位置。"servertype”需要改为实际使用的调试器的类型。也可以使用【Add Configuration…】进行快捷设置。配置文件中的不同字段的值需要根据实际项目进行修改,例如OpenOCD调试时需要指定2个配置文件。 调试器的驱动安装、配置文件设置灯可以参考此文档。 调试程序点击【Run and Debug】,可以看到出现了launch.json文件指定的两个配置的名称,可以根据实际调试器的类型选择一种配置运行。 文件类型支持可以在VS Code中下载相关插件支持**.map文件与**.ld文件的语法高亮。 支持语法高亮后,比较适合阅读、检查以及修改这些文件。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:51:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |