小型实时操作系统-Zephyr


Zephyr是一个小型的实时操作系统,用于资源受限的嵌入式互联设备,支持多种体系并在Apache许可证 2.0下发行,采用C和汇编语言写成。它有一个BSD许可证的仿品出现在来自Intel的Arduino 101软件资源包中。

Zephyr最初是风河系统公司在2015年11月推出的为物联网(IoT)设备开发的“Rocket内核”,更早时称为“Microkernel Profile for VxWorks”,代码移植于2001年并购Eonic Systems得来的Virtuoso DSP RTOS。在2016年2月,它成为Linux基金会的项目而改为现名。该项目是一个可扩展的实时操作系统(RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑了安全性。Zephyr OS 基于专为资源受限系统设计的小型内核:从简单的嵌入式环境传感器和 LED 可穿戴设备到复杂的智能手表和物联网无线网关。
Zephyr内核提供了如下一些特征:内存保护,内核服务,高可配置性,编译时确定资源。
Zephyr内核设计用于资源受限的系统,预期目标是用于从简单的嵌入式环境传感器和LED可穿戴设备,到复杂的智能手表和IoT无线网关。它的构造系统支持Zephyr SDK之外的第三方工具链。Zephyr计划的成员和支持者包括:Intel、Linaro、NXP半导体、Nordic半导体,和Synopsys、 runtime.io、DeviceTone、Oticon等。
内存保护
实现可配置的特定于架构的栈溢出保护,内核对象及设备驱动程序许可权追踪,和线程隔离,采用了在x86、ARC和ARM架构上的线程级别内存保护、用户空间和内存域。对于没有MMU/MPU的平台和内存受限的设备,支持把特定应用的代码和一个定制内核组合起来创建一个单体映像,它被装载并执行于系统硬件之上。应用代码和内核代码二者都执行在一个共享的单地址空间中。
高可配置性
允许应用只合并入它需要的功能,并指定它们的数量和大小。
编译时确定资源
要求所有系统资源都在编译时确定,这缩减代码大小并增进性能。
内核服务
内核为应用开发提供了一些熟悉的服务,包括:
多线程服务,兼具基于优先级的、非抢先式的协同线程和基于优先级的、抢先式线程,带有可选的轮流式时间片。包括POSIX pthread兼容API支持。
中断服务,兼具编译时和运行时的中断处理器注册。
线程间同步服务,具有二值信号量、计数信号量、互斥信号量。
线程间数据传递服务,具有基本消息队列、增强消息队列和字节流。
内存分配服务,具有固定大小或可变大小内存块的动态分配和释放。
电能管理服务,具有比如无时标空闲和高级的空闲下部构造。
关于风河系统公司
风河系统公司(英语:Wind River Systems Inc.),常被称作风河公司,是一间以发展嵌入式系统为核心业务的美国软件公司,同时提供对应的嵌入式系统开发工具、中间件和其它软件。1981年由Jerry Fiddler 与 David Wilne创立于美国加州柏克莱。2009年6月4日被英特尔以8.84亿美元并购,成为英特尔旗下的子公司并保持自身独立性。

公司总部位于美国加利福尼亚的阿拉米达。最著名的产品是VxWorks嵌入式操作系统,另一个操作系统Wind River Linux也享有盛名。
风河系统公司专注于嵌入式系统的中间件:设备的操作系统和软件。他们的产品被用于手机、汽车、路由器、数字相机、投影仪、电视机顶盒、交通信号灯、火星探测器(勇气号、机遇号、好奇号)、火箭、卫星、飞机等。其核心发展战略是设备软件的优化。
公司的旗舰产品是VxWorks嵌入式实时操作系统(RTOS),Wind River Linux嵌入式操作系统,基于Eclipse的IDE -- Wind River Workbench。
最新版本:3.4
Zephyr 3.4 现已于2023年6月下旬发布。发和公告称,此版本证明了 Zephyr 在各种类型应用中的广泛使用。例如越来越多的公司正在使用它来构建嵌入式控制器 – 这些微控制器驱动的应用支持计算机处理底层系统任务 – 而新的3.4版本中的一些改进正好可以帮助简化这一领域的开发:比如对 NVMe 硬盘、SMBus 外设和实时时钟添加新 API 和驱动程序的支持。还引入了其内置测试框架(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 测试框架改进
它是 Zephyr 自家的测试框架,在内部广泛被使用(dogfooding)以确保 Zephyr 本身被充分测试。实际上,对于提交到 Zephyr 仓库的每个 pull request(假设它有代码更改),我们的 CI 任务会触发 Twister 并运行数千个单元测试。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 堆栈紧密集成,例如利用其电源管理功能。
详情可查看更新公告。
最新版本:4.0
Zephyr v4.0于2024年11月中旬发布,官方 Release Blog 详细概述 v4.0 新功能和亮点的摘要,在 Release Note 中可以找到细节,视频对新功能进行了demo演示,本文一二级标题列出主要更新内容,正文文字列出部分关注的内容。这次大版本的更新,导入了步进电机, 触觉驱动,强化视频驱动,可以推断Zephyr将会在机器人领域,AR/VR领域有所发展和应用。
主要增加/改变的功能
安全存储子系统:secure_storage,提供通用的PSA API 来与安全存储交互
ZMS子系统:Zephyr Memory Storage,将经典的NOR(先擦后写)和新技术RRAM/MRAM(无需写入前擦除)
模拟比较器(Analog Comparators)设备驱动
触觉(Haptics)设备驱动
多媒体功能:扩展音视频功能,支持新的图像传感器、视频接口、音频接口和编解码器
Prometheus 库:集成Prometheus--用于监控和警报的开源工具
文档改进
新增60+主板和扩展板
内容摘要
修补漏洞
CVE 2024-8798: 解禁日期 2024-11-22
CVE 2024-10395: 解禁日期 2025-01-23
CVE 2024-11263:
API变化
删除
K_THREAD_STACK_MEMBER:使用K_KERNEL_STACK_MEMBER替代CBPRINTF_PACKAGE_COPY_
_ENUM_TOKEN和_ENUM_UPPER_TOKEN
移除include/zephyr/arch/arm/cortex_a_r/cmsis.h和include/zephyr/arch/arm/cortex_a_r/cmsis.h,现在直接使用cmsis_core.h
ceiling_fraction:使用DIV_ROUND_UP替代
移除include/zephyr/random/rand32.h使用random.h替代
移除已弃用的EARLY、APPLICATION和SMP初始化级别
弃用
弃用了net_buf_put()和net_buf_get(),使用k_fifo_put()和k_fifo_get()替代
键盘扫描子系统标记为弃用
弃用 TinyCrypt shim 驱动程序CONFIG_CRYPTO_TINYCRYPT_SHIM
弃用 native_posix,使用native_sim替代
include/zephyr/net/buf.h,使用include/zephyr/net_buf.h替代
弃用net_buf_put()和net_buf_get()
架构
添加对 Cortex-M (arm_mpu_v8) 上设备内存属性的支持
ARM64
添加对arch_stack_walk()的初始支持,仅支持通过 esf 展开
添加对 ARM64 的 sys_arch_reboot() 支持
添加对请求分页的支持。
添加对动态模块 (LLEXT) 的支持。
RISC-V
异常时支持打印堆栈指针 (sp) 或帧指针 (fp) 的地址
异常堆栈帧 (arch_esf) 支持csf
x86添加对arch_stack_walk()的初始支持,仅支持通过 esf 展开。
内核
Devicetree中的设备可以作为动态模块加载
蓝牙
涉及蓝牙音频,Host, Controller,HCI Driver,Mesh.
添加对周期广告同步传输 (PAST) 支持,支持发送和接收角色
增加mesh专用队列,提高mesh消息的传输的可靠性
主板和 SoC 支持
增加的SOC
ESP32-C2 和 ESP8684 SoC
STM32U0系列
STM32WB0系列
STM32U545xx系列
NXP i.MX93的 Cortex-M33 core
NXP MCXW71, MCXC242, MCXA156, MCXN236, MCXC444, RT1180
对一些SOC进行了修改,详情查看release note。
添加 ESP32 WROVER-E-N16R4 变体
STM32H5:通过 STMicroelectronics OpenOCD 分支添加对 OpenOCD 的支持
NXP IMXRT:修复由于闪存配置 Kconfig 导致的 flexspi 启动问题
NXP RT11xx:启用 FlexIO
新增60+主板和扩展板,对部分主板进行了修改,详情查看release note
构建系统和基础设施
jlink、pyocd 和 linkserver 的 west flash 命令支持 .elf 文件
pickled EDT 生成从 gen_defines.py 移到 gen_edt.py 中
在构建系统中直接使用使用 imgtool 对image签名
通过SB_CONFIG_MCUBOOT_MODE选择MCUboot的操作模式
构建系统添加对 RAM-load MCUboot 操作模式的支持
Twister 添加脚本参数以启用硬件特定参数
文档
用户能够按名称、架构、供应商或 SoC 等标准搜索主板
可以根据名称和描述快速查找代码示例
在Devicetree 绑定文档中添加与绑定兼容字符串匹配的驱动程序源代码的链接
代码示例自述文件页面中增加一个按键,允许直接浏览 GitHub 上的示例源代码
Zephyr C API 文档移出了主文档
添加了两个新的构建命令make html-live和make html-live-fast
驱动
涉及ADC,DAC, CAN,Clock control ,Audio Codec, Comparator, Counter,Crypto, Disk,Display,DMA,EPROM,Entropy,Ethernet,Flash,GPIO,Haptics,I2C,I2S,I3C,Input,Interrupt,LED,LED 灯带,Mailbox,MDIO,MEMC,Modem,MIPI-DBI,MSPI-CSI,Pin control,PWM,Regulators,RTC,SDHC,Sensors,Serial,SPI,Steppers,Timer,USB,Video,W1,Watchdog,Wi-Fi 详情查看release note, 下面仅列出部分。
ADC
ESP32 中添加了合适的 ADC2 校准项
修复了 ESP32-S3 ADC的校准方案
增加瑞萨 RA8 /ADI MAX32 SoC系列/NXP S32 /Ambiq Apollo3 系列 ADC驱动
CAN
增加瑞萨 RA CANFD /NXP S32Z27x Flexcan驱动
时钟控制
STM32 MCO可通过Devicetree配置时钟控制
增加瑞萨 RA 时钟控制驱动
添加Silabs Series 2+时钟管理单元
增加nRF54H 系列时钟控制驱动
音频
增加 Wolfson WM8904 音频编解码器驱动
Comparator
新增比较器驱动CONFIG_COMPARATOR
新增比较器shell命令CONFIG_COMPARATOR_SHELL
增加 nRF COMP/nRF LPCOMP/NXP Kinetis ACMP设备驱动
Counter
增加瑞萨 RA8 AGT/ADI MAX32 SoC counter驱动
更新NXP counter_mcux_lptmr/nxp_sys_timer驱动
Crypto
增加对 STM32L4 AES 的支持
DAC
DAC API支持指定使用内部通道, STM32的DAC驱动以实现
Disk
STM32F7 SDMMC 驱动支持使用 DMA
SDMMC 在磁盘去初始化时将关闭 SD 卡电源
Display
NXP LCDIF 驱动支持使用 PXP 沿水平或垂直轴翻转图像
ST7789V 支持BGR565
增加SSD1327/SSD1322/IST3931 驱动
DMA
增加ADI MAX32 SoC 系列
NXP EDMA开始支持eDMAv5 和循环模式
NXP PXP DMA支持翻转模式
EEPROM
嵌入式 C 标准库可直接使用EEPROM 模拟器
Entropy
增加瑞萨 RA8 /ADI MAX32 SoC 系列 的Entropy驱动
Ethernet
增加返回接口物理设备的API get_phy ()
Ethernet capabilities api 增加2.5G和5G的链接速度
增加synopsis dwc_xgmac/NXP iMX NETC 驱动
各网卡驱动的bug修复
增加和修改部分PHY Driver
Flash
修复了 SPI NOR 驱动启用 SFDP 时,Devicetree初始化WP、HOLD 和 RESET 引脚不正确的问题
更新Espressif SoC 初始化驱动,支持新芯片组和八进制闪存
允许选择 SPI NOR 驱动程序初始化优先级
添加 flash_copy () 函数,可在两个闪存设备之间执行直接数据复制
STM32 OSPI 驱动程序以支持 QUAL、DUAL 和 SPI 模式,支持自定义写入和SFDP:BFP opcodes
STM32F7 SoC 实现读出保护处理(RDP 级别)
增加瑞萨 RA8/ADI MAX32 SoC Flash驱动
NXP MCUX Flexspi增加支持W25Q512JV 和 W25Q512NW - IQ/IN
Haptics
新增触觉驱动CONFIG_HAPTICS
增加TI DRV2605驱动和示例
I2C
加了瑞萨 RA8 I2C 驱动
I2S
增加 ESP32 - S3 和 ESP32 - C3 I2S驱动
Input I2S驱动
增加新特性zephyr,input-double-tap
增加新驱动ilitek,ili2132a
增加矩阵键盘驱动的电源管理
添加新的触摸屏框架
修复ESP32触摸驱动
修复GT911驱动
中断
更新ESP32系列中断分配器
提供函数为Arm GIC设置pending interrupts
为多OS共享GIC增加配置项
mailbox
增加ESP32和ESP32-S3 mailbox驱动
MDIO
添加 LiteX MDIO 驱动
MEMC
基于NXP FLEXSPI增加APS6404L PSRAM驱动
Modem
增加 U-Blox LARA-R6 modem
初始化期间可设置modem的UART波特率
MIPI-DBI
增加 bitbang MIPI-DBI驱动,支持8080和6800模式
支持STM32 FMC内存控制器
支持NXP LCDIC控制器8080模式
MIPI-CSI
NXP CSI/MIPI_CSI2Rx支持可变帧率
pin-ctrl
增加Microchip MEC5/NXP i.MX SCMI/i.MX93 M33/ESP32C2支持
PWM
rpi_pico自适配置分频比
增加瑞萨 RA8 /ADI MAX32 SoC PWM驱动
Regulators
更新CP9314驱动
增加MPS MPM54304驱动
RTC
新增NXP IRTC驱动
SDHC
添加ESP32-S3 SDHC驱动
Serial
增加支持 Synopsys Designware 8250 UART
增加瑞萨SCI UART驱动
增加Ganymed SY1XX UART驱动
SPI
增加 Renesas RA8 SPI驱动
Analog Devices MAX32 SPI驱动增加RTIO支持
增加Silabs EUSART支持
步进电机
增加步进电机驱动CONFIG_STEPPER
增加步进电机驱动控制shellCONFIG_STEPPER_SHELL
增加ADI TMC5041 驱动
增加gpio-stepper-controller支持
添加stepper相关测试套件
Timer
添加对Silabs Sleeptimer支持
USB
STM32U59x/STM32U5Ax SoC 变体支持 USB HS
添加用于 Smartbond、NuMaker USBD 和 RP2040 设备控制器的 UDC 驱动
在 NXP USB 驱动程序 (UDC) 中启用 SoF
在 NXP EHCI USB 驱动程序中启用缓存维护
Video
增加控制帧率的API
增加传输部分帧的API
增加用于多堆视频缓冲区分配的 API
video-interfaces.yaml中引入了常见视频链接属性的绑定
增加GalaxyCore GC2145/ESP32-S3 LCD-CAM/NXP MCUX SMARTDMA /OV2640/OV5640支持
STM32:实现video_get_ctrl()和video_set_ctrl()
增加NXP smartdma视频驱动
添加帧间隔 API 以支持可变帧速率
Watchdog
添加 Analog Devices MAX32 SoC 系列驱动
WIFI
支持Wi-Fi Easy Connect (DPP)
支持Wi-Fi 凭证库
station企业级支持
Wi-Fi shell 支持regulatory domain/WPS/802.11r连接命令/显示 RTS 阈值
hostap 状态消息含有当前PYH速率
允许通过Wi-Fi shell 重置 Wi-Fi 统计数据
添加 ESP32-C2 Wi-Fi/NXP RW612 /nRF70 Wi-Fi 支持
添加 ESP32 驱动程序 APSTA 支持
网络
涉及以下增加的内容和很多未列出细节修改以及 bug 修复
802.15.4
实现beacons的无关联Bit
支持beacons的playload
修复问题&改进日志
Coap
Client中未知查询使用 CoAP RST 响应进行回复
运行时可配置ACK随机因子参数
添加对无相应CoAP选项支持
修复问题&改进
DHCPv4
支持解析从 DHCP 服务器接收到的多个 DNS 服务器
DHCPv4 服务器中添加对 DNS 服务器选项的支持
添加对 DHCPv4 服务器中的路由器选项的支持
允许在 DHCPv4 服务器中分配自定义地址
修复问题
ARP/DHCPv6/gPTP/PTP/IPv4修复问题
DNS/mDNS/LLMNR
支持收集 DNS 统计信息
修复问题
HTTP
支持对应用程序指定响应标头和响应代码
在 HTTP 服务器示例中添加对 netusb 的支持
支持从应用程序回调访问 HTTP 请求标头
支持在 HTTP 服务器中处理通过 IPv6 套接字的 IPv4 连接
支持不指定本地主机的情况下创建 HTTP 服务器实例
支持HTTP 服务器中静态文件系统资源
修复问题&重构
IPv6
支持多播侦听器发现 API 的公共标头
新增net_ipv6_addr_prefix_mask()
可配置IPv6 路由器请求超时
修复问题
LwM2M
Location object现在允许可选使用高度、半径和速度等资源
将 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 添加到 DTLS 密码列表
LwM2M shell 添加列出资源/观察结果的命令
接受解码为整数的 SenML-CBOR 浮点数
支持对 X509 主机名验证
修复问题&改进
其它
支持网络数据包分配统计
添加库支持Prometheus 监控
支持捕获接口的丢包统计信息
OpenThread
支持NAT64 发送和接收回调
添加Kconfig配置项
修复问题
Shell
支持使用 Kconfig 启用/禁用单个网络 shell 命令
添加用于 DHCPv4/6 客户端管理net dhcpv4/6 client命令
添加用于虚拟接口管理的新net virtual命令
添加net cm命令用于连接管理
修复问题和改进
socket
添加专用的net_socket_service_handler_t回调函数类型
支持 TLS 1.3
修复和改进
Wi-Fi
将 80211R 快速 BSS 转换参数用法添加到 wifi shell 的连接命令
zperf
zperf 示例中添加对 USB CDC NCM 的支持
USB
添加 USB CDC 网络控制模型实现
实现Enhanced USB Audio class 2
USB 设备堆栈具有高带宽感知能力
实现Enhanced CDC ACM 和 HID class
Devicetree
支持符串数组和数组类型属性为枚举
增加了一些宏
库/子系统
Rust的嵌入式工具包probe-rs添加到west runner中
Demand Paging
添加 LRU(最近最少使用)驱逐算法
添加 on-demand内存映射支持 ( CONFIG_DEMAND_MAPPING )
Management
支持Enumeration Management Group
支持img mgmt slot info 命令,列出设备上的image和slot的信息
系统现在可以通过通知钩子的方式,支持自定义的操作系统管理引导加载程序信息响应
支持LoRaWAN MCUmgr 传输
电源管理
支持ESP32-C6 电源管理,有浅睡眠和深度睡眠功能
Crypto
Mbed TLS 更新至版本 3.6.2
修改部分Kconfig项
Shell
重组织命令kernel thread list和kernel thread stacks
添加多个 shell 命令配置 CPU 亲和力/在运行时绑定线程
Storage
LittleFS更新至2.9.3
FAT FS增加配置选项(CONFIG_FILE_SYSTEM_LIB_LINK),允许在不启用完整的文件系统子系统的情况下,直接链接和使用文件系统支持库
FAT FS启用对 64 位 LBA 和 GPT 的支持
FAT FS启用对使用 GPT 或 MBR 分区的设备的支持
FAT FS上文件时间戳可使用RTC时间
新增ZMS,涵盖所有的非易失性存储,经典的NOR Flash和RRAM,MRAM
Tracing
支持用户event
POSIX
支持POSIX_DEVICE_IO & POSIX_SIGNALS
支持_POSIX_SYNCHRONIZED_IO & _POSIX_THREAD_PRIO_PROTECT
支持open()中的O_TRUNC标志
支持rmdir()和remove()
支持asctime_r() 、 ctime_r()和localtime_r()
pool synchronization 使用用户空间信号量
JWT (JSON Web Token)
增加Kconfig项指定签名算法和加密库
Firmware
引入对 ARM 系统控制和管理接口的基本支持,包括
时钟管理协议命令子集
引脚控制协议命令的子集
共享内存和基于邮箱的传输
HAL
nrfx更新至3.7.0
STM32不同soc更新到不同的cube,详见release note
Espressif更新至v5.1.4
NXP MCUX HAL SDK更新至2.16.000
Silabs Series 2更新为 Simplicity SDK 2024.6
MCUboot
增加和修复若干小的功能,详见release note
Trusted Firmware-M (TF-M)
TF-M 更新至版本 2.1.1
Nanopb
nanopb模块更新到版本0.4.9
LVGL
添加LV_ATTRIBUTE_MEM_ALIGN,以便库内部数据结构可以与特定边界对齐
提供对齐定义以适应某些 GPU 的对齐要求
zcbor
zcbor 库更新至版本 0.9.0
fatfs API 测试中添加对测试 SDMMC 设备的支持
通过添加颜色条以实现自动化,增强相机夹具测试
使用 NXP ADSP 板的优化库添加数字运算(数学,例如 FFT、回声消除)示例
启用视频示例以运行视频捕获
演示如何将状态机框架与 LVGL 结合使用来创建简单的计算器应用程序
其它详见release note。
官方主页:http://www.zephyrproject.org

Zephyr最初是风河系统公司在2015年11月推出的为物联网(IoT)设备开发的“Rocket内核”,更早时称为“Microkernel Profile for VxWorks”,代码移植于2001年并购Eonic Systems得来的Virtuoso DSP RTOS。在2016年2月,它成为Linux基金会的项目而改为现名。该项目是一个可扩展的实时操作系统(RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑了安全性。Zephyr OS 基于专为资源受限系统设计的小型内核:从简单的嵌入式环境传感器和 LED 可穿戴设备到复杂的智能手表和物联网无线网关。
Zephyr内核提供了如下一些特征:内存保护,内核服务,高可配置性,编译时确定资源。
Zephyr内核设计用于资源受限的系统,预期目标是用于从简单的嵌入式环境传感器和LED可穿戴设备,到复杂的智能手表和IoT无线网关。它的构造系统支持Zephyr SDK之外的第三方工具链。Zephyr计划的成员和支持者包括:Intel、Linaro、NXP半导体、Nordic半导体,和Synopsys、 runtime.io、DeviceTone、Oticon等。
内存保护
实现可配置的特定于架构的栈溢出保护,内核对象及设备驱动程序许可权追踪,和线程隔离,采用了在x86、ARC和ARM架构上的线程级别内存保护、用户空间和内存域。对于没有MMU/MPU的平台和内存受限的设备,支持把特定应用的代码和一个定制内核组合起来创建一个单体映像,它被装载并执行于系统硬件之上。应用代码和内核代码二者都执行在一个共享的单地址空间中。
高可配置性
允许应用只合并入它需要的功能,并指定它们的数量和大小。
编译时确定资源
要求所有系统资源都在编译时确定,这缩减代码大小并增进性能。
内核服务
内核为应用开发提供了一些熟悉的服务,包括:
多线程服务,兼具基于优先级的、非抢先式的协同线程和基于优先级的、抢先式线程,带有可选的轮流式时间片。包括POSIX pthread兼容API支持。
中断服务,兼具编译时和运行时的中断处理器注册。
线程间同步服务,具有二值信号量、计数信号量、互斥信号量。
线程间数据传递服务,具有基本消息队列、增强消息队列和字节流。
内存分配服务,具有固定大小或可变大小内存块的动态分配和释放。
电能管理服务,具有比如无时标空闲和高级的空闲下部构造。
关于风河系统公司
风河系统公司(英语:Wind River Systems Inc.),常被称作风河公司,是一间以发展嵌入式系统为核心业务的美国软件公司,同时提供对应的嵌入式系统开发工具、中间件和其它软件。1981年由Jerry Fiddler 与 David Wilne创立于美国加州柏克莱。2009年6月4日被英特尔以8.84亿美元并购,成为英特尔旗下的子公司并保持自身独立性。

公司总部位于美国加利福尼亚的阿拉米达。最著名的产品是VxWorks嵌入式操作系统,另一个操作系统Wind River Linux也享有盛名。
风河系统公司专注于嵌入式系统的中间件:设备的操作系统和软件。他们的产品被用于手机、汽车、路由器、数字相机、投影仪、电视机顶盒、交通信号灯、火星探测器(勇气号、机遇号、好奇号)、火箭、卫星、飞机等。其核心发展战略是设备软件的优化。
公司的旗舰产品是VxWorks嵌入式实时操作系统(RTOS),Wind River Linux嵌入式操作系统,基于Eclipse的IDE -- Wind River Workbench。
最新版本:3.4
Zephyr 3.4 现已于2023年6月下旬发布。发和公告称,此版本证明了 Zephyr 在各种类型应用中的广泛使用。例如越来越多的公司正在使用它来构建嵌入式控制器 – 这些微控制器驱动的应用支持计算机处理底层系统任务 – 而新的3.4版本中的一些改进正好可以帮助简化这一领域的开发:比如对 NVMe 硬盘、SMBus 外设和实时时钟添加新 API 和驱动程序的支持。还引入了其内置测试框架(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 测试框架改进
它是 Zephyr 自家的测试框架,在内部广泛被使用(dogfooding)以确保 Zephyr 本身被充分测试。实际上,对于提交到 Zephyr 仓库的每个 pull request(假设它有代码更改),我们的 CI 任务会触发 Twister 并运行数千个单元测试。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 堆栈紧密集成,例如利用其电源管理功能。
详情可查看更新公告。
最新版本:4.0
Zephyr v4.0于2024年11月中旬发布,官方 Release Blog 详细概述 v4.0 新功能和亮点的摘要,在 Release Note 中可以找到细节,视频对新功能进行了demo演示,本文一二级标题列出主要更新内容,正文文字列出部分关注的内容。这次大版本的更新,导入了步进电机, 触觉驱动,强化视频驱动,可以推断Zephyr将会在机器人领域,AR/VR领域有所发展和应用。
主要增加/改变的功能
安全存储子系统:secure_storage,提供通用的PSA API 来与安全存储交互
ZMS子系统:Zephyr Memory Storage,将经典的NOR(先擦后写)和新技术RRAM/MRAM(无需写入前擦除)
模拟比较器(Analog Comparators)设备驱动
触觉(Haptics)设备驱动
多媒体功能:扩展音视频功能,支持新的图像传感器、视频接口、音频接口和编解码器
Prometheus 库:集成Prometheus--用于监控和警报的开源工具
文档改进
新增60+主板和扩展板
内容摘要
修补漏洞
CVE 2024-8798: 解禁日期 2024-11-22
CVE 2024-10395: 解禁日期 2025-01-23
CVE 2024-11263:
API变化
删除
K_THREAD_STACK_MEMBER:使用K_KERNEL_STACK_MEMBER替代CBPRINTF_PACKAGE_COPY_
_ENUM_TOKEN和_ENUM_UPPER_TOKEN
移除include/zephyr/arch/arm/cortex_a_r/cmsis.h和include/zephyr/arch/arm/cortex_a_r/cmsis.h,现在直接使用cmsis_core.h
ceiling_fraction:使用DIV_ROUND_UP替代
移除include/zephyr/random/rand32.h使用random.h替代
移除已弃用的EARLY、APPLICATION和SMP初始化级别
弃用
弃用了net_buf_put()和net_buf_get(),使用k_fifo_put()和k_fifo_get()替代
键盘扫描子系统标记为弃用
弃用 TinyCrypt shim 驱动程序CONFIG_CRYPTO_TINYCRYPT_SHIM
弃用 native_posix,使用native_sim替代
include/zephyr/net/buf.h,使用include/zephyr/net_buf.h替代
弃用net_buf_put()和net_buf_get()
架构
添加对 Cortex-M (arm_mpu_v8) 上设备内存属性的支持
ARM64
添加对arch_stack_walk()的初始支持,仅支持通过 esf 展开
添加对 ARM64 的 sys_arch_reboot() 支持
添加对请求分页的支持。
添加对动态模块 (LLEXT) 的支持。
RISC-V
异常时支持打印堆栈指针 (sp) 或帧指针 (fp) 的地址
异常堆栈帧 (arch_esf) 支持csf
x86添加对arch_stack_walk()的初始支持,仅支持通过 esf 展开。
内核
Devicetree中的设备可以作为动态模块加载
蓝牙
涉及蓝牙音频,Host, Controller,HCI Driver,Mesh.
添加对周期广告同步传输 (PAST) 支持,支持发送和接收角色
增加mesh专用队列,提高mesh消息的传输的可靠性
主板和 SoC 支持
增加的SOC
ESP32-C2 和 ESP8684 SoC
STM32U0系列
STM32WB0系列
STM32U545xx系列
NXP i.MX93的 Cortex-M33 core
NXP MCXW71, MCXC242, MCXA156, MCXN236, MCXC444, RT1180
对一些SOC进行了修改,详情查看release note。
添加 ESP32 WROVER-E-N16R4 变体
STM32H5:通过 STMicroelectronics OpenOCD 分支添加对 OpenOCD 的支持
NXP IMXRT:修复由于闪存配置 Kconfig 导致的 flexspi 启动问题
NXP RT11xx:启用 FlexIO
新增60+主板和扩展板,对部分主板进行了修改,详情查看release note
构建系统和基础设施
jlink、pyocd 和 linkserver 的 west flash 命令支持 .elf 文件
pickled EDT 生成从 gen_defines.py 移到 gen_edt.py 中
在构建系统中直接使用使用 imgtool 对image签名
通过SB_CONFIG_MCUBOOT_MODE选择MCUboot的操作模式
构建系统添加对 RAM-load MCUboot 操作模式的支持
Twister 添加脚本参数以启用硬件特定参数
文档
用户能够按名称、架构、供应商或 SoC 等标准搜索主板
可以根据名称和描述快速查找代码示例
在Devicetree 绑定文档中添加与绑定兼容字符串匹配的驱动程序源代码的链接
代码示例自述文件页面中增加一个按键,允许直接浏览 GitHub 上的示例源代码
Zephyr C API 文档移出了主文档
添加了两个新的构建命令make html-live和make html-live-fast
驱动
涉及ADC,DAC, CAN,Clock control ,Audio Codec, Comparator, Counter,Crypto, Disk,Display,DMA,EPROM,Entropy,Ethernet,Flash,GPIO,Haptics,I2C,I2S,I3C,Input,Interrupt,LED,LED 灯带,Mailbox,MDIO,MEMC,Modem,MIPI-DBI,MSPI-CSI,Pin control,PWM,Regulators,RTC,SDHC,Sensors,Serial,SPI,Steppers,Timer,USB,Video,W1,Watchdog,Wi-Fi 详情查看release note, 下面仅列出部分。
ADC
ESP32 中添加了合适的 ADC2 校准项
修复了 ESP32-S3 ADC的校准方案
增加瑞萨 RA8 /ADI MAX32 SoC系列/NXP S32 /Ambiq Apollo3 系列 ADC驱动
CAN
增加瑞萨 RA CANFD /NXP S32Z27x Flexcan驱动
时钟控制
STM32 MCO可通过Devicetree配置时钟控制
增加瑞萨 RA 时钟控制驱动
添加Silabs Series 2+时钟管理单元
增加nRF54H 系列时钟控制驱动
音频
增加 Wolfson WM8904 音频编解码器驱动
Comparator
新增比较器驱动CONFIG_COMPARATOR
新增比较器shell命令CONFIG_COMPARATOR_SHELL
增加 nRF COMP/nRF LPCOMP/NXP Kinetis ACMP设备驱动
Counter
增加瑞萨 RA8 AGT/ADI MAX32 SoC counter驱动
更新NXP counter_mcux_lptmr/nxp_sys_timer驱动
Crypto
增加对 STM32L4 AES 的支持
DAC
DAC API支持指定使用内部通道, STM32的DAC驱动以实现
Disk
STM32F7 SDMMC 驱动支持使用 DMA
SDMMC 在磁盘去初始化时将关闭 SD 卡电源
Display
NXP LCDIF 驱动支持使用 PXP 沿水平或垂直轴翻转图像
ST7789V 支持BGR565
增加SSD1327/SSD1322/IST3931 驱动
DMA
增加ADI MAX32 SoC 系列
NXP EDMA开始支持eDMAv5 和循环模式
NXP PXP DMA支持翻转模式
EEPROM
嵌入式 C 标准库可直接使用EEPROM 模拟器
Entropy
增加瑞萨 RA8 /ADI MAX32 SoC 系列 的Entropy驱动
Ethernet
增加返回接口物理设备的API get_phy ()
Ethernet capabilities api 增加2.5G和5G的链接速度
增加synopsis dwc_xgmac/NXP iMX NETC 驱动
各网卡驱动的bug修复
增加和修改部分PHY Driver
Flash
修复了 SPI NOR 驱动启用 SFDP 时,Devicetree初始化WP、HOLD 和 RESET 引脚不正确的问题
更新Espressif SoC 初始化驱动,支持新芯片组和八进制闪存
允许选择 SPI NOR 驱动程序初始化优先级
添加 flash_copy () 函数,可在两个闪存设备之间执行直接数据复制
STM32 OSPI 驱动程序以支持 QUAL、DUAL 和 SPI 模式,支持自定义写入和SFDP:BFP opcodes
STM32F7 SoC 实现读出保护处理(RDP 级别)
增加瑞萨 RA8/ADI MAX32 SoC Flash驱动
NXP MCUX Flexspi增加支持W25Q512JV 和 W25Q512NW - IQ/IN
Haptics
新增触觉驱动CONFIG_HAPTICS
增加TI DRV2605驱动和示例
I2C
加了瑞萨 RA8 I2C 驱动
I2S
增加 ESP32 - S3 和 ESP32 - C3 I2S驱动
Input I2S驱动
增加新特性zephyr,input-double-tap
增加新驱动ilitek,ili2132a
增加矩阵键盘驱动的电源管理
添加新的触摸屏框架
修复ESP32触摸驱动
修复GT911驱动
中断
更新ESP32系列中断分配器
提供函数为Arm GIC设置pending interrupts
为多OS共享GIC增加配置项
mailbox
增加ESP32和ESP32-S3 mailbox驱动
MDIO
添加 LiteX MDIO 驱动
MEMC
基于NXP FLEXSPI增加APS6404L PSRAM驱动
Modem
增加 U-Blox LARA-R6 modem
初始化期间可设置modem的UART波特率
MIPI-DBI
增加 bitbang MIPI-DBI驱动,支持8080和6800模式
支持STM32 FMC内存控制器
支持NXP LCDIC控制器8080模式
MIPI-CSI
NXP CSI/MIPI_CSI2Rx支持可变帧率
pin-ctrl
增加Microchip MEC5/NXP i.MX SCMI/i.MX93 M33/ESP32C2支持
PWM
rpi_pico自适配置分频比
增加瑞萨 RA8 /ADI MAX32 SoC PWM驱动
Regulators
更新CP9314驱动
增加MPS MPM54304驱动
RTC
新增NXP IRTC驱动
SDHC
添加ESP32-S3 SDHC驱动
Serial
增加支持 Synopsys Designware 8250 UART
增加瑞萨SCI UART驱动
增加Ganymed SY1XX UART驱动
SPI
增加 Renesas RA8 SPI驱动
Analog Devices MAX32 SPI驱动增加RTIO支持
增加Silabs EUSART支持
步进电机
增加步进电机驱动CONFIG_STEPPER
增加步进电机驱动控制shellCONFIG_STEPPER_SHELL
增加ADI TMC5041 驱动
增加gpio-stepper-controller支持
添加stepper相关测试套件
Timer
添加对Silabs Sleeptimer支持
USB
STM32U59x/STM32U5Ax SoC 变体支持 USB HS
添加用于 Smartbond、NuMaker USBD 和 RP2040 设备控制器的 UDC 驱动
在 NXP USB 驱动程序 (UDC) 中启用 SoF
在 NXP EHCI USB 驱动程序中启用缓存维护
Video
增加控制帧率的API
增加传输部分帧的API
增加用于多堆视频缓冲区分配的 API
video-interfaces.yaml中引入了常见视频链接属性的绑定
增加GalaxyCore GC2145/ESP32-S3 LCD-CAM/NXP MCUX SMARTDMA /OV2640/OV5640支持
STM32:实现video_get_ctrl()和video_set_ctrl()
增加NXP smartdma视频驱动
添加帧间隔 API 以支持可变帧速率
Watchdog
添加 Analog Devices MAX32 SoC 系列驱动
WIFI
支持Wi-Fi Easy Connect (DPP)
支持Wi-Fi 凭证库
station企业级支持
Wi-Fi shell 支持regulatory domain/WPS/802.11r连接命令/显示 RTS 阈值
hostap 状态消息含有当前PYH速率
允许通过Wi-Fi shell 重置 Wi-Fi 统计数据
添加 ESP32-C2 Wi-Fi/NXP RW612 /nRF70 Wi-Fi 支持
添加 ESP32 驱动程序 APSTA 支持
网络
涉及以下增加的内容和很多未列出细节修改以及 bug 修复
802.15.4
实现beacons的无关联Bit
支持beacons的playload
修复问题&改进日志
Coap
Client中未知查询使用 CoAP RST 响应进行回复
运行时可配置ACK随机因子参数
添加对无相应CoAP选项支持
修复问题&改进
DHCPv4
支持解析从 DHCP 服务器接收到的多个 DNS 服务器
DHCPv4 服务器中添加对 DNS 服务器选项的支持
添加对 DHCPv4 服务器中的路由器选项的支持
允许在 DHCPv4 服务器中分配自定义地址
修复问题
ARP/DHCPv6/gPTP/PTP/IPv4修复问题
DNS/mDNS/LLMNR
支持收集 DNS 统计信息
修复问题
HTTP
支持对应用程序指定响应标头和响应代码
在 HTTP 服务器示例中添加对 netusb 的支持
支持从应用程序回调访问 HTTP 请求标头
支持在 HTTP 服务器中处理通过 IPv6 套接字的 IPv4 连接
支持不指定本地主机的情况下创建 HTTP 服务器实例
支持HTTP 服务器中静态文件系统资源
修复问题&重构
IPv6
支持多播侦听器发现 API 的公共标头
新增net_ipv6_addr_prefix_mask()
可配置IPv6 路由器请求超时
修复问题
LwM2M
Location object现在允许可选使用高度、半径和速度等资源
将 TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 添加到 DTLS 密码列表
LwM2M shell 添加列出资源/观察结果的命令
接受解码为整数的 SenML-CBOR 浮点数
支持对 X509 主机名验证
修复问题&改进
其它
支持网络数据包分配统计
添加库支持Prometheus 监控
支持捕获接口的丢包统计信息
OpenThread
支持NAT64 发送和接收回调
添加Kconfig配置项
修复问题
Shell
支持使用 Kconfig 启用/禁用单个网络 shell 命令
添加用于 DHCPv4/6 客户端管理net dhcpv4/6 client命令
添加用于虚拟接口管理的新net virtual命令
添加net cm命令用于连接管理
修复问题和改进
socket
添加专用的net_socket_service_handler_t回调函数类型
支持 TLS 1.3
修复和改进
Wi-Fi
将 80211R 快速 BSS 转换参数用法添加到 wifi shell 的连接命令
zperf
zperf 示例中添加对 USB CDC NCM 的支持
USB
添加 USB CDC 网络控制模型实现
实现Enhanced USB Audio class 2
USB 设备堆栈具有高带宽感知能力
实现Enhanced CDC ACM 和 HID class
Devicetree
支持符串数组和数组类型属性为枚举
增加了一些宏
库/子系统
Rust的嵌入式工具包probe-rs添加到west runner中
Demand Paging
添加 LRU(最近最少使用)驱逐算法
添加 on-demand内存映射支持 ( CONFIG_DEMAND_MAPPING )
Management
支持Enumeration Management Group
支持img mgmt slot info 命令,列出设备上的image和slot的信息
系统现在可以通过通知钩子的方式,支持自定义的操作系统管理引导加载程序信息响应
支持LoRaWAN MCUmgr 传输
电源管理
支持ESP32-C6 电源管理,有浅睡眠和深度睡眠功能
Crypto
Mbed TLS 更新至版本 3.6.2
修改部分Kconfig项
Shell
重组织命令kernel thread list和kernel thread stacks
添加多个 shell 命令配置 CPU 亲和力/在运行时绑定线程
Storage
LittleFS更新至2.9.3
FAT FS增加配置选项(CONFIG_FILE_SYSTEM_LIB_LINK),允许在不启用完整的文件系统子系统的情况下,直接链接和使用文件系统支持库
FAT FS启用对 64 位 LBA 和 GPT 的支持
FAT FS启用对使用 GPT 或 MBR 分区的设备的支持
FAT FS上文件时间戳可使用RTC时间
新增ZMS,涵盖所有的非易失性存储,经典的NOR Flash和RRAM,MRAM
Tracing
支持用户event
POSIX
支持POSIX_DEVICE_IO & POSIX_SIGNALS
支持_POSIX_SYNCHRONIZED_IO & _POSIX_THREAD_PRIO_PROTECT
支持open()中的O_TRUNC标志
支持rmdir()和remove()
支持asctime_r() 、 ctime_r()和localtime_r()
pool synchronization 使用用户空间信号量
JWT (JSON Web Token)
增加Kconfig项指定签名算法和加密库
Firmware
引入对 ARM 系统控制和管理接口的基本支持,包括
时钟管理协议命令子集
引脚控制协议命令的子集
共享内存和基于邮箱的传输
HAL
nrfx更新至3.7.0
STM32不同soc更新到不同的cube,详见release note
Espressif更新至v5.1.4
NXP MCUX HAL SDK更新至2.16.000
Silabs Series 2更新为 Simplicity SDK 2024.6
MCUboot
增加和修复若干小的功能,详见release note
Trusted Firmware-M (TF-M)
TF-M 更新至版本 2.1.1
Nanopb
nanopb模块更新到版本0.4.9
LVGL
添加LV_ATTRIBUTE_MEM_ALIGN,以便库内部数据结构可以与特定边界对齐
提供对齐定义以适应某些 GPU 的对齐要求
zcbor
zcbor 库更新至版本 0.9.0
fatfs API 测试中添加对测试 SDMMC 设备的支持
通过添加颜色条以实现自动化,增强相机夹具测试
使用 NXP ADSP 板的优化库添加数字运算(数学,例如 FFT、回声消除)示例
启用视频示例以运行视频捕获
演示如何将状态机框架与 LVGL 结合使用来创建简单的计算器应用程序
其它详见release note。
官方主页:http://www.zephyrproject.org