前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次 ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期 待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展 趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起, 2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核 异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样 的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享, 尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
今天分享第8篇技术报告,题目为:
“如何基于一个流行的、可视化的VScode IDE开发Zephyr应用”
Jonathan Beri是Golioth的创始人兼首席执行官,Golioth是一个针对规模构建的简单商业物联网开发平台。Jonathan花了十多年时间在谷歌、Nest、Particle和WeWork等公司构建物联网解决方案。
为什么 Visual Studio Code (VS Code) 如此受欢迎?
先问几个问题:
1. 谁在使用VS Code?
2. 谁使用VS Code进行非嵌入式开发?Ex. Web, Python, etc?
3. 谁使用VS Code进行嵌入式开发?
VS Code受 欢 迎 程 度,全球各类IDE使用率,VS Code占榜首 :
VS Code受欢迎的原因有许多,免费、速度快、跨平台等等:
此外,还依赖于其有许多拓展支持,多种程序语言支持、多种主题、调试支持等等:
而用户自定义配置更是VS Code的一大特性,VS Code使用JSON文件进行配置:
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
通过JSON文件配置,用户可以配置每一个项目,如显示格式、行为以及拓展支持等。同时也可以在每个工程或者单个工程中进行配置。
VS Code还有IDE一样的特性,如代码补全、注释颜色、代码导航、调试等等。一般通过拓展进行支持:
使用VS Code进行嵌入式进行开发一般关注的几个点:
“Smart coding”
Build, Flash, Test & Debug easily
Reproducible environments
使用VS Code开发嵌入式应用,需要一些拓展,例如以下C++拓展:
还有对Cmake支持,Python支持,cortex Debug支持,串口支持等等。此外还有一些可选项,如:
Python Environment Manager
YAML, RST - Github Pull Requests & Github Repos
Remote Development pack - Docker
VSCode中可支持的配置项目:
首先需要编写一些初始化配置文件,包括下面介绍的4个主要的配置文件。
1. setting.json配置
在VSCode中,通过setting.json文件进行配置。VSCode中有三种JSON配置:
(1) User Settings(用户设置):关联于用户。在某个window用户下打开任意vscode界面都会用此配置,即 应用于该用户打开的所有工程
(2) Workspace Settings (工作区设置):工作区设置是指使用VSCode打开某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹, 里面包含着仅适用于当前目录的vscode的设置,工作区的设置会覆盖用户设置
(3) Remote Settings(远程设置):与当前VSCode连接的远程连接,例如Win10连接Linux 并打开某个工程,即应用于远程此工程
首先需要初始化一些基本配置,下面是一个setting.json的配置示例:
其中,需要关注的是有下面两项:
2. tasks.json配置
tasks.json配置 west build过程中的一些命令参数,具体示例如下:
3. launch.json配置
lauch.json配置主要配置 west debug 过程中的一些参数,包括可执行文件zephyr.elf,以及调试器gdb的位置等,示例如下:
4. extensions.json配置
extensions.json是一些其他的拓展配置项,示例如下:
上面说到的这些配置文件.vscode目录下,如下图所示:
至此为止,VSCode中配置基本完成,对开发者自己来说,需要根据实际的项目例程来修改相应代码。
作者提供了一个示例demo供大家参考,有如下特性:
相关的demo配置示例可在如下链接中找到:https://github.com/beriberikix/zephyr-vscode-example
作者最后提到了未来工作中的两项:
1. 基于远程服务器连接的环境搭建:
2. 基于远程服务器连接的环境搭建:
Beri提出的一些思考,他认为VS Code的配置功能几乎是无限的,但如何去找到合适的配置是一个艰巨的任务。而且现今进行嵌入式开发配置也成为了可能,同时开发者可以基于一些现有的demo进行配置。