Zephyr V4.1.0 发布
Zephyr v4.1.0 如期在 2025.3.7 发布,该版本支持截止日期为 2025.11.14。
- Release 文件 https://github.com/zephyrproject-rtos/zephyr/releases/tag/v4.1.0
- Relase Notes https://docs.zephyrproject.org/latest/releases/release-notes-4.1.html
- Release Blog https://zephyrproject.org/zephyr-rtos-4-1-is-available/
- 迁移指南(从 4.0.0 迁移到 4.1.0) https://docs.zephyrproject.org/latest/releases/migration-guide-4.1.html
- 配套视频 https://youtu.be/TOIwI9XrHZM
官方 Release 博客详细概述 v4.1.0 新功能和亮点的摘要,Release note 可以找到细节,视频对新功能进行了 demo 演示,本文一二级标题列出主要更新内容,正文文字列出个人关注的内容。
这次版本的更新,性能改进、支持 IAR 工具链、Rust 等。
重大变化 链接到标题
- 性能提升:内核对象的速度,尺寸均有大幅改善。添加“thread_metric” RTOS 基准测试的官方接口支持。
- 实验性支持 IAR 编译器
- 开始支持 Rust
- 导入新的 USB MIDI 2.0 设备驱动程序
- 新增 70 个主板和 11 个扩展板
内容摘要 链接到标题
修补漏洞 链接到标题
CVE 2025-1673 https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-jjhx-rrh4-j8mx CVE 2025-1674 https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-x975-8pgf-qh66 CVE 2025-1675 https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-2m84-5hfw-m8v4
API 变化 链接到标题
删除
- 旧版蓝牙 HCI 驱动程序 API 被删除,被取代为 Bluetooth HCI APIs
- CAN 相关
CAN_MAX_STD_ID
(由CAN_STD_ID_MASK
取代) 和CAN_MAX_EXT_ID
(由CAN_EXT_ID_MASK
取代) 被删除can_get_min_bitrate
(由can_get_bitrate_min
取代) 和can_get_max_bitrate
(can_get_bitrate_max
取代) 被删除can_calc_prescaler
被删除
CONFIG_NET_SOCKETS_POSIX_NAMES
被移除- 删除
video_pix_fmt_bpp
(video_set_stream
取代) - 弃用
CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE
(CONFIG_PM_DEVICE_SYSTEM_MANAGED
取代) z_pm_save_idle_exit
被删除- 移除
z_arch_esf_t
(struct arch_esf
取代) - 移除
CONFIG_NET_PKT_BUF_DATA_POOL_SIZE
和CONFIG_NET_TCP_ACK_TIMEOUT
弃用
- 蓝牙(BLE)
-
bt_le_set_auto_conn()
API 已弃用- 弃用
CONFIG_BT_DIS_MODEL
和CONFIG_BT_DIS_MANUF
, 新选项CONFIG_BT_DIS_MODEL_NUMBER_STR
和CONFIG_BT_DIS_MANUF_NAME_STR
用于设置设备型号和制造商名称字符串。 -弃用CONFIG_BT_BUF_ACL_RX_COUNT
- 弃用
- 弃用
stream_flash_erase_page()
, 改用flash_area_erase()
或flash_erase()
实现擦除功能。 - 管道 API 变更
•k_pipe_put()
→k_pipe_write()
•k_pipe_get()
→k_pipe_read()
•k_pipe_flush()
和k_pipe_buffer_flush()
→k_pipe_reset()
• 移除动态管道分配功能(如k_pipe_alloc_init()
和k_pipe_cleanup()
)。 • 弃用CONFIG_PIPES
Kconfig 选项
• 移除管道字节数查询接口(k_pipe_read_avail()
和k_pipe_write_avail()
)。 - 弃用 TinyCrypt 加密库:上游版本停止维护,推荐改用 PSA Crypto API。
CONFIG_NATIVE_SIM_NATIVE_POSIX_COMPAT
调整为默认关闭,并将弃用。- HWMv1 板级名称别名(自 v3.7 起标记为弃用)已删除(https://github.com/zephyrproject-rtos/zephyr/issues/82247)。
新增加
- 架构
CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL
CONFIG_RISCV_CURRENT_VIA_GP
- 蓝牙:涉及音频,Host,Mesh,Service
- 构建系统:为 sysbuild 新增
SB_CONFIG_MCUBOOT_MODE_SWAP_USING_OFFSET
支持 MCUBOOT 偏移模式 - Crypto
CONFIG_MBEDTLS_PSA_STATIC_KEY_SLOTS
CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT
- I3C
CONFIG_I3C_TARGET_BUFFER_MODE
CONFIG_I3C_RTIO
i3c_ibi_hj_response()
i3c_ccc_do_getacccr()
i3c_device_controller_handoff()
- Management
- hawkBit
- 子系统改为状态机实现
- CONFIG_HAWKBIT_TENANT
- CONFIG_HAWKBIT_EVENT_CALLBACKS
- CONFIG_HAWKBIT_SAVE_PROGRESS
- MCUmgr:镜像管理 MGMT_EVT_OP_IMG_MGMT_DFU_CONFIRMED 新增镜像数据字段 img_mgmt_image_confirmed
- hawkBit
- MCUboot:配置加密密钥时,已签名的十六进制文件(signed hex)的镜像头会自动标记加密标志
- 网络:涉及 Coap,DHCP,DNS,以太网,HTTP,IPv4,IPv6,LwM2M,MQTT-SN,OpenThread,Sockets
- Video:新增
video_set_stream
取代video_stream_start
和video_stream_stop
主板 & 扩展板 链接到标题
新增 70 个主板和 11 个扩展板,详见 release note。
驱动 链接到标题
涉及多个驱动,本次更新多为新增驱动实现,详见 release note。
实例 链接到标题
新增 22 个实例,详见 release note。
其它显著的变化 链接到标题
- PSA Crypto API:引入头文件 key_ids.h 管理持久化密钥 ID 分配,需按用户类型定义 ID 范围。
- Twister 配置:移除空格分隔列表支持,提供迁移脚本 twister_to_list.py。
- Ztest 测试:测试用例名称新增套件名前缀,格式为 <场景>.<套件>.<测试>,支持简化名称输出。
- HTTP 服务器:支持动态资源的 PUT、PATCH 和 DELETE 方法。
- 驱动 API:通过可迭代区段和 DEVICE_API_IS 宏支持设备 API 兼容性检查,优化 Shell 命令自动补全。
- 板级文档:新增硬件特性搜索功能,使用指令 zephyr:board-supported-hw 自动列出开发板支持的硬件特性
关于内核性能 链接到标题
Zephyr 4.1 发布的官方博客中有两张图表分别是
3.7 和 4.1 的性能对比:
可以看出在 Zephyr 在内核性能优化上一直在努力,从内核对象和调度性能方面都有一定的提升
4.1 和其它 RTOS 的性能对比
大多数情况下 Zephyr 和 ThreadX 的性能相当,大幅优于 FreeRTOS。
在社区和 RTOS 使用者中对 Zephyr 的性能对比由来已久,例如: https://github.com/zephyrproject-rtos/zephyr/discussions/79785#discussioncomment-12097036 Zephyr 4.1 将性能提升作为重要变化之一提出可能对这些比较的一个回应。
事实上,Zephyr 的内核性能和其内核配置息息相关,网络上对与 Zephyr 做对比的 RTOS 大多只是拉下 Zephyr main branch 来直接测试,这样比较的结果并不准备。
另外从实际应用上看,在 MCU 性能不断提升的今天,不十分关注实时性的系统就算不做优化配置 Zephyr 也不会影响其应用的性能,真的涉及到要抠实时性能时会进行进行的配置和测量,乃至于针对芯片架构进行上优化。
对于成熟的 RTOS 来说单纯通过性能来判断其优劣过于片面,可以说是无用之争。一个 RTOS 是否成功,性能只是其中一方面,其社区与治理模式,安全保障,跨平台适配,生态支持等也都是其重要的衡量标准。最后市场说明一切。