Zephyr 4.2.0

我们很高兴地宣布 Zephyr 4.2.0 版本正式发布。

本次发布的主要增强包括:

Renesas RX 初步支持

现在支持 Renesas RX 架构,包括基于 QEMU 的 开发板目标。

USB 视频类驱动

USB 设备栈现在支持 USB Video Class(UVC),可将摄像头设备和其他图像/视频源作为标准 USB 视频设备对外提供。参见 USB Video webcam 开始使用。

Twister 功耗测试装置

全新的 Twister 测试装置 可以测量被测设备的功耗,并确保其保持在给定容差范围内。

MQTT 5.0

网络协议栈现在全面支持 MQTT 5.0 协议。

Bluetooth Classic 改进

Bluetooth Classic 协议栈现在支持 Hands-Free Profile 规范(HFP),涵盖 Audio Gateway(AG)和 Hands-Free(HF)两种角色。

Zbus

Zbus 库 随 API v1.0.0 的发布升级为稳定状态。

开发板支持扩展

本次发布新增了对 96 个 新开发板 和 22 个 新扩展板 的支持。

将应用从 Zephyr v4.1.0 迁移到 Zephyr v4.2.0 时需要或建议采取的变更概览,见单独的 迁移指南。

以下小节按组件详细列出各项变更。

安全漏洞相关

本次发布修复了以下 CVE:

更多详细信息见:https://docs.zephyrproject.org/latest/security/vulnerabilities.html

API 变更

移除的 API 和选项

  • 移除了已弃用的 net_buf_put() 和 net_buf_get() API 函数。

  • 移除了已弃用的 include/zephyr/net/buf.h 头文件。

  • 移除了 --disable-unrecognized-section-test Twister 选项。该测试已删除,该选项对应的行为成为默认行为。

  • 移除了已弃用的 kscan 子系统。

  • 移除了 meas,ms5837,改用 meas,ms5837-30ba 和 meas,ms5837-02ba。

  • 从 video_driver_api 中移除了 get_ctrl 驱动 API。

  • 移除了 CONFIG_I3C_USE_GROUP_ADDR 以及对 I3C 设备组地址的支持。

已弃用的 API 和选项

  • 调度器 Kconfig 选项 CONFIG_SCHED_DUMB 和 CONFIG_WAITQ_DUMB 已重命名并弃用。请改用 CONFIG_SCHED_SIMPLE 和 CONFIG_WAITQ_SIMPLE。

  • Kconfig 选项 CONFIG_LWM2M_ENGINE_MESSAGE_HEADER_SIZE 已被移除。所需的报头大小应计入消息大小,并通过 CONFIG_LWM2M_COAP_MAX_MSG_SIZE 配置。需要特别注意确保所用的 CoAP 块大小(CONFIG_LWM2M_COAP_BLOCK_SIZE)在包含报头的情况下仍能容纳给定的消息大小。此前的预留空间为 48 字节。

  • TLS 凭证类型 TLS_CREDENTIAL_SERVER_CERTIFICATE 已重命名并弃用,请改用 TLS_CREDENTIAL_PUBLIC_CERTIFICATE。

  • arduino_uno_r4_minima 和 arduino_uno_r4_wifi 开发板目标已弃用,改用带有修订版本的新开发板 arduino_uno_r4 (arduino_uno_r4@minima 和 arduino_uno_r4@wifi)。

  • esp32c6_devkitc 开发板目标已弃用,并重命名为 esp32c6_devkitc/esp32c6/hpcore。

  • xiao_esp32c6 开发板目标已弃用,并重命名为 xiao_esp32c6/esp32c6/hpcore。

  • Kconfig 选项 CONFIG_HAWKBIT_DDI_NO_SECURITY 已弃用,因为 hawkBit 服务器 0.8.0 版本已移除对匿名认证的支持。

  • Kconfig 选项 CONFIG_BT_CONN_TX_MAX 已弃用。待处理的 TX 缓冲区数量现在与 CONFIG_BT_BUF_ACL_TX_COUNT Kconfig 选项保持一致。

  • Kconfig 选项 CONFIG_CRYPTO_TINYCRYPT_SHIM 已被移除。该选项自 Zephyr 4.0 起弃用,当时建议用户迁移到其他加密后端。

  • Kconfig 选项 CONFIG_BT_MESH_USES_TINYCRYPT 已被移除。该选项自 Zephyr 4.0 起弃用。当时建议用户改用 CONFIG_BT_MESH_USES_MBEDTLS_PSA 或 CONFIG_BT_MESH_USES_TFM_PSA。

本版本中的稳定 API 变更

新增 API 和选项

新增开发板

新增扩展板

新增驱动

新增示例

其他值得注意的变更

  • 新增对 Armv8.1-M MPU 的 PXN(Privileged Execute Never)属性的支持。因此,使用 CONFIG_ARM_MPU_PXN 和 CONFIG_USERSPACE 编译时,__ramfunc 和 __ram_text_reloc 的 MPU 属性会被修改,以便为这些区域设置 PXN 属性。这会改变从这些区域执行代码的行为:如果这些区域设置了 PXN 属性,则无法在特权模式下执行。

  • 移除了对 Nucleo WBA52CG 开发板(nucleo_wba52cg)的支持,因为它属于 NRND(Not Recommended for New Design,不建议用于新设计),并且从 STM32CubeWBA 1.1.0 版本(2023 年 7 月)起不再受支持。建议改用 Nucleo WBA55CG 开发板(nucleo_wba55cg)。

  • 将 Mbed TLS 更新到 3.6.4 版本(从 3.6.2 更新)。3.6.3 和 3.6.4 的版本说明如下:

  • 将 TF-M 更新到 2.2.0 版本(从 2.1.1 更新)。版本说明见:https://trustedfirmware-m.readthedocs.io/en/latest/releases/2.2.0.html

  • 更新了所有带有外部 I2C 连接器(Qwiic、Stemma、Grove...)的开发板,使其使用 zephyr_i2c 设备树标签。这样便可利用现有的 扩展板 构建系统特性(west build --shield),将任何带连接器的 i2c 模块接入任何具有兼容 i2c 端口的开发板,而不受具体 i2c 连接器品牌的限制。

  • 撤销了 Nordic UART 驱动中接收器选项的弃用。此前,使用额外 TIMER 外设计数接收字节的接收模式已被弃用(例如 CONFIG_CONFIG_UART_0_NRF_HW_ASYNC)。然而事实证明,该模式是唯一能够在没有硬件流控的情况下可靠接收数据的方式,因此应保留在驱动中。