Zephyr V4.1.0 发布

Zephyr v4.1.0 如期在 2025.3.7 发布,该版本支持截止日期为 2025.11.14。

官方 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_SIZECONFIG_NET_TCP_ACK_TIMEOUT

弃用

  • 蓝牙(BLE) -bt_le_set_auto_conn() API 已弃用
    • 弃用 CONFIG_BT_DIS_MODELCONFIG_BT_DIS_MANUF , 新选项 CONFIG_BT_DIS_MODEL_NUMBER_STRCONFIG_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
  • MCUboot:配置加密密钥时,已签名的十六进制文件(signed hex)的镜像头会自动标记加密标志
  • 网络:涉及 Coap,DHCP,DNS,以太网,HTTP,IPv4,IPv6,LwM2M,MQTT-SN,OpenThread,Sockets
  • Video:新增 video_set_stream 取代 video_stream_startvideo_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 的性能对比:

self_cmp 可以看出在 Zephyr 在内核性能优化上一直在努力,从内核对象和调度性能方面都有一定的提升

4.1 和其它 RTOS 的性能对比

cmp 大多数情况下 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 是否成功,性能只是其中一方面,其社区与治理模式,安全保障,​跨平台适配,生态支持等也都是其重要的衡量标准。最后市场说明一切。