Zephyr 3.4 现已发布。Zephyr 项目是一个可扩展的实时操作系统 (RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑了安全性。Zephyr OS 基于专为资源受限系统设计的小型内核:从简单的嵌入式环境传感器和 LED 可穿戴设备到复杂的智能手表和物联网无线网关。
公告称,此版本证明了Zephyr在各种类型应用中的广泛使用。例如,越来越多的公司正在使用Zephyr构建嵌入式控制器 – 这些微控制器驱动的应用支持计算机处理底层系统任务 – 而新版本3.4中的一些改进正好可以帮助简化这一领域的开发:比如对NVMe硬盘、SMBus外设和实时时钟添加新API和驱动程序的支持。
Zephyr 3.4还引入了其内置测试框架(Twister)的几项改进,使得可以编写比以前版本更全面的测试用例。现在,开发人员可以使用流行的第三方测试框架,如pyTest,GoogleTest和RobotFramework,编写在真实或仿真硬件上运行的端到端测试用例,并可以连接到例如物联网服务器进行测试。
新增外设支持
辅助显示(Auxiliary Text Display)
辅助显示是基于文本的显示器,它们用简单的界面显示文本、数字或字母数字。你通常会想通过发送字符,而不是像素来与这些显示器进行交互。新增 Auxiliary Text Display API 可以让你达到目的。目前已有针对常见的辅助显示(来自Hitachi,Noritake,Jinghua等)的驱动程序。示例代码可以在这里找到。
NVMe 磁盘
NVMe (Non-Volatile Memory Express 非易失性存储器快速访问接口) 是一种专为 NAND 闪存(比如:固态硬盘SSD,M.2卡等)设计的高性能存储协议。
从 3.4 版开始支持 NVMe 控制器和磁盘,并且与 Devicetree 完全集成,以便进行配置和定制。
实时时钟
实时时钟是低功耗的,通常由电池供电的设备,用于实时记录时间,在主系统被关闭时RTC也能继续工作。Zephyr 3.4 为 RTCs 增加了支持 ,提供了一种与硬件无关的一致方式来与它们进行交互。
除了基本的时钟获取或设置交互外,API 还支持设置闹钟或校准时钟,如果这些功能由底层硬件支持的话。针对如 NXP PCF8523 和 Motorola MC146818 等热门 RTC 芯片的驱动程序已经可用。
保留内存区(Retained memory)
新增的保留内存(Retained memory)API使应用程序能够对某些保留的内存区域(例如,未被初始化的RAM部分)、或在设备启动时保留信息的设备进行数据的读取和写入。当人们不想使用非易失性存储器(non-volatile storage),例如,在不同的应用程序之间、或在单个应用程序的内部分享信息,或在设备重启后不丢失状态信息时,这些API会是一个很好的选择。
SMBus
SMBus(System Management Bus 系统管理总线)是从I²C派生的两线制总线 (two-wire bus),经常用于主板与低带宽设备的通信,例如获取来自温度传感器、电池燃料表等的信息。
从Zephyr 3.4开始,新的SMBus子系统允许开发人员在他们的应用程序中操控SMBus控制器和设备。
输入子系统
输入子系统让输入设备可以通过API将输入事件送到应用程序
它提供了处理输入事件(如键/按钮被按下,触摸屏被按下等)的更高级别的抽象。这使得GUI和硬件底层输入解耦,让GUI开发更为容易。
这个新的子系统也为开发人员提供了一个很好的机会,来研究如何利用Zephyr内置的状态机框架来处理更复杂的交互场景。
保留内存区子系统
为了补充对保留内存区的支持,新的保留内存区子系统已经与设备树集成,可以轻松配置和自定义如何保留数据,包括创建多个分区,通过校验和验证数据完整性,或处理设备重启的特殊情况,比如使其运行不同的应用程序。
Twister测试框架改进
Twister,是Zephyr自家的测试框架,在内部广泛被使用(dogfooding)以确保Zephyr本身被充分测试。实际上,对于提交到Zephyr仓库的每个pull request(假设它有代码更改),我们的CI任务会触发Twister并运行数千个单元测试。
Zephyr 3.4为Twister添加了许多改进,使其更适合复杂的、端到端的、功能测试。开发者现在可以使用流行的第三方测试框架如pyTest,GoogleTest和RobotFramework来编写在真实或模拟的硬件上运行的测试,并且可以连接到网络例如IoT服务器。
Zephyr SDK更新
建议更新到Zephyr SDK (0.16.1)的最新版本。Zephyr SDK的主要优点之一是它能让您一站式获取到所有的工具链和主机工具,这对您的Zephyr日常开发来说是非常方便的。
SDK的尺寸多年来的一直在增长,由于现在使用tar.xz(Linux/macOS)和7zip(Windows)进行打包,而不是以前的.tar.gz和.zip,所以这个最新版本的大小减小了一半(因此下载速度变快为原来的2倍)。
片段(Snippets)
新添加的”片段“帮助简化所有常见设置(例如,配置文件、设备树覆盖Devicetree overlays)在各种项目中可能需要重复使用的内容。
一个典型的使用场景是将所有您喜欢的调试选项(例如,启用shell、自定义日志级别等)打包成一个片段,以便您可以轻松地检测需要故障排除的应用程序,也包括更改硬件定义级别(例如,通过USB接口启用Zephyr shell)。
以下是其他值得注意的 API 介绍
内存屏障(Memory Barriers)
一个用于数据内存屏障的新API已经推出。数据屏障本质上是一种方式,友好地告诉你的处理器:”嘿,我知道你喜欢为了效率重排任务,但是这些特定的内存操作需要按照我给出的确切顺序进行!”。这在对称多处理器(SMP)场景中特别有用,但在多线程应用或异步访问硬件时也可能需要。
新的屏障API为所有的处理器架构提供了一种更一致的方式来实现同步栅栏(synchronization fences)。
蓝牙5.4新增特性(但不仅仅是蓝牙5.4!)
蓝牙核心规范版本5.4 于今年2月7日发布,这个新的Zephyr版本已经支持了这个标准版本的所有新增功能,即:
- 加密广播数据(Encrypted Advertising Data,EAD),它允许在蓝牙LE广播数据包中安全地广播数据;
- 带响应的周期性广播(Periodic Advertising with Responses,PAwR),一种允许蓝牙低能耗设备在大规模一对多拓扑中进行高能效、双向通信的功能。与EAD结合,这对于如电子货架标签等应用可能非常有用;
蓝牙方面的其他值得注意的变化包括对以下内容的支持:
- 公共音频配置文件(Common Audio Profile,CAP)单播;
- 电话和媒体音频配置文件(Telephony and Media Audio Profile,TMAP)— 蓝牙在所有与电话有关的事情中特别受欢迎,因此很高兴看到初步的蓝牙LE电话和媒体音频配置文件(TMAP)支持已经添加;
- 网状网络(Mesh) — 新增了对Mesh 1.1、网状二进制大对象传输模式(Mesh Binary Large Object Transfer Mode)1.0和网状设备固件更新模型(Mesh Device Firmware Update Model)1.0的最新工作草案的实验性支持。
新增开发板和驱动
- 相较于上一版,新增支持了30多款开发板,包括Arduino GIGA R1 WiFi,Seeed Studio的Wio Terminal和XIAO BLE,ESP32-S3开发套件等等。
- 添加了几十种传感器的驱动(环境传感器,惯性测量单元,电流传感器等),现在Zephyr不仅原生支持超过150种传感器,而且通常与Zephyr堆栈紧密集成,例如利用其电源管理功能。
详情可查看更新公告。
还没有评论,来说两句吧...