前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
“East -- 构建NCS/Zephyr应用的辅助工具”
作者简介

曾受过电气工程教育的Marko已经转行成为嵌入式工程师。在过去的四年里,他在IRNAS(一家科技研发公司)参与了多个不同领域的项目,包括动物保护、消费类物联网设备和医疗设备。他涉足了低功耗设计、蓝牙、LoRa和GPS等无线射频协议、小型嵌入式设备上的机器学习实践以及嵌入式Linux等领域。
文章简介
本文主要介绍了East这样一款用于构建NCS(Nordic Connect SDK)和 Zephyr 应用程序的辅助工具,详细讲述了East从创立到与Zephyr/NCS合作的发展历程。
East简介
East是一款用Python编写的命令行元工具。它被用于创建、管理和部署Zephyr或nRF Connect SDK(NCS)项目。East基于West和Nordic的nRF Connect Toolchain Manager构建。且开源在github上。East具有以下主要功能:自动安装 NCS 项目所需的工具链,提供隔离的开发环境,生成发布构建产物,支持不同构建类型(通过 Kconfig 文件进行配置),以及提供一系列常用开发者工具。这些功能使开发人员能够更轻松地进行嵌入式系统开发,并确保项目的稳定性和安全性。
Markos在参与IRNAS的第一个大的硬件项目时,他需要管理包括具有电机控制、BLE和DFU的消费类设备在内的4种不同确功能相似的产品,且每种产品都有多个硬件版本,其相同的代码库每周会更新几个新图像,并且在9个月内从原型到了10万个单位,此时他遇到了以下几个问题:如何管理多个不同的板卡?如何管理构建变体?如何快速有效地创建版本?如何创建可复制的构建环境?如何快速创建一个新项目?根据这些需求产生了East的第一个版本。在East的第一个版本中扩展了默认的nRF 5 SDK makefile,有点类似于Make,但可以在Python中使用,且可以方便的完成工具安装和版本控制,但这个版本仅适用于nRF 5 SDK项目。下图为East第一版的命令列表。

East在与NCS/Zephyr合作中遇到了新问题,比如在合作的很多项目中很多硬件都在运行不同的NCS版本,所以East需要快捷切换NCS版本、需要确保可再现的构建环境,并且手动创建固件版本花费太多时间并且容易出错,所以需要支持自动构建固件版本。这时East目标是要做成一个CLI程序,类似于West,可以自动检测和安装NCS项目的工具、创建沙盒开发环境、自动生成整个项目的发布工件、支持构建变体,并且能够与常用的持续集成工具(如Jenkins、Travis CI、CircleCI等)集成,以便在构建、测试和集成阶段自动化执行任务,而East在完成以上目标后还提供了CLI解析器和接口、YAML配置文件、包括conda、docker在内沙盒开发环境。

而此时East就构成了一个完整的体系,如下图所示。

nRF Toolchain Manager有着每个NCS版本的工具链和易于安装的优点,但nRF Toolchain Manager是一个GUI程序,不能以编程的方式与其交互。

East在参考了nRF Toolchain Manage后创建了基于nrfutil-toolchain-manager.exe的沙盒环境,这个沙盒环境由GUI内部使用,他有着与GUI相同的功能,可以在沙箱环境中运行任意命令,下图为可使用的命令列表。


通过这个环境也大大简化了East的整体架构,也得出了现如今的East 架构,如下图所示。

在你遇到以下几点需求时可以考虑使用East:
1.正在使用不同的NCS版本处理多个项目
2.需要为几个不同的板和构建变体构建固件映像
3.想快速建立项目
4.不希望在多台开发机器上管理开发环境