目前的位置: 首页 学术信息 正文

ZDS 2023技术报告分享第10篇:Circuit Dojo基于VSCode的zephyr插件的使用


前言

2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。


ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。



今天分享第10篇技术报告,题目为:

Circuit Dojo基于VSCode的zephyr开发环境插件的使用



作者简介

1866B

Jared是一位出色的制作者和开发者,他热衷于使用新技术,并通过对开源项目的贡献与他人分享自己的知识。他是nRF9160 Feather的创建者,nRF9160 Feather是nRF9160系统级封装(SiP)的开源开发板。Jared还是Zephyr实时操作系统的贡献者和倡导者,并通过YouTube上名为"Zephyr 101"的直播课程分享他的知识和经验。


对于新手来说,Zephyr很难上手。Python安装、环境变量、工具链等等都加剧了这种困惑!幸运的是,如果你使用VSCode,那么使用Circuit Dojo的Zephyr Tools就可以更容易地开始使用Zephyr。这些工具最近在Apache 2.0许可下作为开源发布,其目标是使Zephyr社区中的每个人都可以更轻松地启动他们的项目,无论工具链或体系结构如何。在这个演讲中,我们将讨论:*初始化扩展*从头开始一个项目*获取依赖关系*构建、闪存(flash)和控制台输出。




问题

每个人都明白Zephyr是一个新热点,开始使用Zephyr时会很痛苦。我们必须弄清楚如何使用它,去完成新工具(如mcumgr, west, ninja, cmake等)的学习路线。我可以编写一个统一的代码库改变多个目标,并且可以在完全不同的平台上编写相同的固件。




解决办法

为了减轻负担,我们聚焦于一个大多数人使用的代码环境——VSCode,推出一个解决方法让用户更容易地将完成将代码从0转到编译,并且支持能够跨平台使用。这一解决方案通过构建一个开源VSCode扩展包实现,代码使用typescript编写完成,并放置于于GitHub (https://github.com/circuitdojo/zephyr-tools)。

10F26




初始化拓展

在使用这个工具之前,用户只需要做两个准备,即预先安装Git和python3。接下来在VSCode的扩展市场下载Circuit Dojo插件,使用Setup指令完成以下下载和安装。


  • 设置python3环境

  • Zephyr工具链(ARM)

  • CMake, Ninja, Newtmgr和Zephyr Tools CLI (监测串行设备)


14DCC


所有支持的平台(Windows、Linux、Mac)会得到一个提供了下载链接的manifest.json入口文件,允许对不同体系结构的二进制文件进行细粒度控制,特别地,这同样适用于x86—64和Arch64架构的Mac。


5E05

B502


正如你所能想到的,这一工具为以下场景提供了很多的可能性。


  • 不同SDKs(qemu x86等)的工具链

  • 其他被Zephyr项目广泛需要的公用事业(utilities)/依赖





从样例开始一个项目

用户可以使用Init Repo完成以下目标:


  • 获取 Git 网址并下载到你指定的位置,你甚至可以设置分支

  • 下载并更新所有依赖项

  • 安装所有尚未安装的Python requirements



它的巧妙之处在于,你的代码和SDK代码被放在同一个位置,而改变依赖关系并不会影响其它的事物。缺点在于,需要更多的存储空间。

DF58

769A


从头开始一个项目

你并不一定需要去克隆一个仓库,你也可以直接使用Create Project指令去完成以下目标:


  • 提供一些启动代码(Blinky示例)

  • 初始化 Zephyr 变体(Vanilla 或 NCS)

  • 像 Init Repo 一样进行初始化


1384D

6D96

117F8




获取依赖关系

如果你需要把一些东西pull进你的项目,那么可以将它们作为依赖项加入到已创建的west.yml文件中,接着使用指令 Zephyr Tools: Update Dependencies即可完成依赖性的更新。

CBE4

ADC3




构建、闪存(flash)和查看控制台输出

使用指令Zephyr Tools: Build即可简单地完成构建(Build)。而想要完成一个干净的构建,只需要运行Pristine或者使用Clean指令删除已经构建好的文件夹。

8B8F

在构建的过程中,扩展包会询问你需要构建的板子和app。

4108

4597


即使关闭VSCode,板和项目目标也会被保留。如果您需要更改它们,您可以使用以下命令Zephyr Tools: Change Board、Zephyr Tools: Change Project。

5B33

A557


控制台访问是由Zephyr-Tools CLI后台完成,它能够连接和监视任何串口连接,并保存输出到日志文件供以后使用。

FD7C

B81B




总结


  • 跨平台

  • 容易设置

  • 应用一种固执己见的(opinionate)方式进行Zephyr下的编程

  • 开源并且十分欢迎PRs

  • 非常感谢Zephyr社区


上一条:ZDS 2023技术报告分享第11篇:基于Zephyr的IoT设备管理 下一条:ZDS 2023技术报告分享第9篇:CHESTER平台的介绍

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学