Zephyr 4.4.0

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

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

OpenRISC 支持

Zephyr 现在支持 OpenRISC 架构。

工具链更新:Zephyr SDK 1.0 与 C17

Zephyr 4.4 是首个支持 Zephyr SDK 1.0 的版本,带来了升级的 GNU 工具链、实验性的 Clang/LLVM 支持,以及多平台的 QEMU 和 OpenOCD 主机工具。

Zephyr 现在默认将 C17 作为最低要求的 C 标准版本。

网络增强

Wi-Fi 管理协议栈现在支持 Wi-Fi P2P(Wi-Fi Direct),允许设备无需传统接入点即可直接发现并连接。

网络协议栈还新增了对 WireGuard VPN 的支持,可实现安全、低开销的隧道通信。

USB 主机

实验性的 USB 主机支持得到显著扩展:新增了主机类驱动框架,并为充当 USB 主机的 Zephyr 设备提供 UVC 摄像头支持。

新增驱动类别

Zephyr 4.4 新增多项新的驱动 API,包括:

Zbus 异步监听器与代理 agent

Zbus 异步监听器通过工作队列实现非阻塞的观察者回调。

Zbus 代理 agent 通过 IPC 将发布-订阅消息传递扩展到跨 CPU 和域的边界。

基于压力的 CPU 频率调节

实验性的 CPU 频率调节 子系统现在包含 基于压力的策略,可根据调度器负载调整 CPU 频率。

ARM Cortex-M 上下文切换性能改进

针对 ARM Cortex-M 的全新上下文切换实现(通过 CONFIG_USE_SWITCH 启用)带来了显著的性能提升。

NAND 闪存支持

新增的闪存转换层 (FTL) 磁盘驱动(zephyr,ftl-dhara)提供磨损均衡和坏块管理,使 NAND 闪存可像标准磁盘设备一样使用。

开发者体验改进

本次发布为开发和测试工作流新增了多项工具和改进:

  • 全新的 仪表板 将 RAM 和 ROM 占用、设备树配置、子系统初始化级别等构建信息汇总到一份报告中。

  • 面向 QEMU 目标的新显示驱动,简化了在无法使用本机模拟器的环境中开发显示类应用的过程。

  • 新增的堆加固机制(CONFIG_SYS_HEAP_HARDENING)提供多级运行时保护,防止堆损坏。

  • 新增的 基于作用域的清理辅助宏 在 C 语言中提供 RAII/defer 风格的离开作用域自动清理。

  • 全新的 ztest 基准测试框架 提供了创建周期精确基准测试的标准化方式,支持自动数据采集、开销补偿和统计报告。

Bluetooth LE 主机认证

本次发布包含一个已成功通过认证的 Bluetooth Low Energy (LE) 主机协议栈,符合 Bluetooth Core Specification 6.2。认证范围涵盖核心组件(GAP、ATT、GATT、L2CAP、SM)以及设备信息服务 (DIS)。认证列表和相应的设计编号 (DN) 见:https://qualification.bluetooth.com/ListingDetails/332380

开发板支持扩展

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

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

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

安全漏洞相关

本版本修复了以下 CVE:

API 变更

移除的 API 与选项

  • 架构

    • Xtensa

      • 以下项已移除,因为它们属于架构特性:

        • CONFIG_XTENSA_MMU_DOUBLE_MAP

        • CONFIG_XTENSA_RPO_CACHE

        • CONFIG_XTENSA_CACHED_REGION

        • CONFIG_XTENSA_UNCACHED_REGION

  • 蓝牙

  • 内核

    • CONFIG_LINKER_USE_PINNED_SECTION 和 CONFIG_LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT 已被移除。它们所启用的选择性内核固定模型在任何按需分页驱逐算法下都不安全:CPU 异常分发可能指向线程特权栈页面,而该页面不在显式 __pinned_* 集合中;若该页面已被驱逐,则会在 x86 上引发 #DF,或在 ARM64 上引发嵌套中止(GitHub #108773)。Zephyr 内核映像现在始终驻留在物理内存中;按需分页仅适用于匿名映射(k_mem_map())和显式 __ondemand_* 链接器段。

    • __pinned_func、__pinned_data、__pinned_rodata、__pinned_bss 和 __pinned_noinit 属性宏已移除,其汇编别名 PINNED_TEXT、PINNED_RODATA、PINNED_DATA、PINNED_BSS 和 PINNED_NOINIT 也随之移除。

    • K_KERNEL_PINNED_STACK_DEFINE、K_KERNEL_PINNED_STACK_ARRAY_DEFINE、K_KERNEL_PINNED_STACK_ARRAY_DECLARE、K_THREAD_PINNED_STACK_DEFINE 和 K_THREAD_PINNED_STACK_ARRAY_DEFINE 宏已移除。请改用不带 pinned 的对应宏。

  • Mbed TLS

    • CONFIG_PSA_WANT_KEY_TYPE_DES

    • CONFIG_PSA_WANT_ECC_SECP_K1_192

    • CONFIG_PSA_WANT_ECC_SECP_R1_192

    • CONFIG_PSA_WANT_ECC_SECP_R1_224

    • CONFIG_CUSTOM_MBEDTLS_CFG_FILE

    • CONFIG_MBEDTLS_CHACHAPOLY_AEAD_ENABLED

    • CONFIG_MBEDTLS_CIPHER_AES_ENABLED

    • CONFIG_MBEDTLS_CIPHER_CAMELLIA_ENABLED

    • CONFIG_MBEDTLS_CIPHER_CCM_ENABLED

    • CONFIG_MBEDTLS_CIPHER_CHACHA20_ENABLED

    • CONFIG_MBEDTLS_CIPHER_DES_ENABLED

    • CONFIG_MBEDTLS_CIPHER_GCM_ENABLED

    • CONFIG_MBEDTLS_CIPHER_MODE_CBC_ENABLED

    • CONFIG_MBEDTLS_CIPHER_MODE_CTR_ENABLED

    • CONFIG_MBEDTLS_CIPHER_MODE_XTS_ENABLED

    • CONFIG_MBEDTLS_CMAC

    • CONFIG_MBEDTLS_DHM_C

    • CONFIG_MBEDTLS_ECDH_C

    • CONFIG_MBEDTLS_ECDSA_C

    • CONFIG_MBEDTLS_ECDSA_DETERMINISTIC

    • CONFIG_MBEDTLS_ECJPAKE_C

    • CONFIG_MBEDTLS_ECP_ALL_ENABLED

    • CONFIG_MBEDTLS_ECP_C

    • CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_CURVE448_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED

    • CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED

    • CONFIG_MBEDTLS_GENPRIME_ENABLED

    • CONFIG_MBEDTLS_HKDF_C

    • CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED

    • CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED

    • CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED

    • CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED

    • CONFIG_MBEDTLS_MD5

    • CONFIG_MBEDTLS_PKCS1_V15

    • CONFIG_MBEDTLS_PKCS1_V21

    • CONFIG_MBEDTLS_POLY1305

    • CONFIG_MBEDTLS_RSA_C

    • CONFIG_MBEDTLS_SHA1

    • CONFIG_MBEDTLS_SHA224

    • CONFIG_MBEDTLS_SHA256

    • CONFIG_MBEDTLS_SHA384

    • CONFIG_MBEDTLS_SHA512

    • CONFIG_MBEDTLS_USE_PSA_CRYPTO

    • CONFIG_MBEDTLS_ENTROPY_POLL_ZEPHYR 已重命名为 CONFIG_MBEDTLS_PSA_DRIVER_GET_ENTROPY。

    • CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT 已被其原先启用的底层选项取代:CONFIG_MBEDTLS_PEM_PARSE_C、CONFIG_MBEDTLS_PEM_WRITE_C 和 CONFIG_MBEDTLS_BASE64_C。

    • CONFIG_MBEDTLS_SERVER_NAME_INDICATION 已重命名为 CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION。

    • CONFIG_MBEDTLS_TEST 已重命名为 CONFIG_MBEDTLS_DEBUG_C。

  • 随机数

已弃用的 API 和选项

新增 API 和选项

新增开发板

新增扩展板

新增驱动

新增示例

设备树

Kconfig

  • 新增预处理函数 dt_highest_controller_irq_number (GitHub #104819)

Kernel

库 / 子系统

其他重要变更