Zephyr 4.5.0(工作草案)
我们很高兴地宣布 Zephyr 4.5.0 版本正式发布。
本次发布的主要增强包括:
- Infineon TriCore 支持
Zephyr 现在支持 Infineon TriCore 架构。
新增驱动类别
Zephyr 4.5 新增多项新的驱动 API,包括:
时钟监视器,用于在运行时观测时钟频率
新增子系统
Zephyr 4.5 新增多项新的子系统 API,包括:
视频,用于控制视频驱动
将应用从 Zephyr v4.4.0 迁移到 Zephyr v4.5.0 时需要或建议采取的变更概览,见单独的 迁移指南。
以下小节按组件详细列出各项变更。
安全漏洞相关
本次发布修复了以下 CVE:
CVE 2026-8718 在 2026-08-08 前处于禁运期
CVE 2026-9263 在 2026-06-28 前处于禁运期
API 变更
移除的 API 和选项
架构
ARM
CONFIG_PLATFORM_SPECIFIC_INITz_arm_platform_init()
RISC-V
CONFIG_EXTRA_EXCEPTION_INFO
x86
CONFIG_SSECONFIG_SSE_FP_MATH
Xtensa
CONFIG_XTENSA_BACKTRACE_EXCEPTION_DUMP_HOOK
蓝牙
控制器
CONFIG_BT_CTRL_ADV_ADI_IN_SCAN_RSP
主机
CONFIG_BT_RECV_CONTEXTKconfig 选择项及其选项CONFIG_BT_RECV_WORKQ_SYS和CONFIG_BT_RECV_WORKQ_BT已被移除。主机现在始终在专用的蓝牙 RX 工作队列上处理低优先级 HCI 数据包(即原先CONFIG_BT_RECV_WORKQ_BT的行为)。参见迁移指南。部分主机工作项已从系统工作队列移至专用的蓝牙 RX 工作队列。由这些工作项触发的应用回调现在运行在蓝牙 RX 线程中。受影响的回调系列参见迁移指南。
CONFIG_BT_HCI_RAW_H4和CONFIG_BT_HCI_RAW_H4_ENABLE这两个 Kconfig 选项已被移除。自 Zephyr 4.2 起,HCI raw 层已改为对所有缓冲区无条件使用 H:4 数据包编码,因此这两个选项一直不起任何作用。仍然设置这些选项的应用可以直接删除它们。CONFIG_BT_AUTO_PHY_UPDATE,已由BT_AUTO_PHY_CENTRAL和BT_AUTO_PHY_PERIPHERAL选项取代_bt_gatt_cccBT_GATT_CCC_INITIALIZERCONFIG_BT_CONN_TX_MAXCONFIG_BT_FIXED_PASSKEYbt_passkey_set()BT_PASSKEY_INVALID
Mesh
CONFIG_BT_MESH_BLOB_IO_FLASH_WITH_ERASECONFIG_BT_MESH_BLOB_IO_FLASH_WITHOUT_ERASE
服务
CONFIG_BT_DIS_MANUFCONFIG_BT_DIS_MODEL
开发板
移除了以下已弃用的开发板别名:
arduino_uno_r4_minimaarduino_uno_r4_wifiesp32c6_devkitcesp32_devkitc_wroom/esp32/procpuesp32_devkitc_wroom/esp32/appcpuesp32_devkitc_wrover/esp32/procpuesp32_devkitc_wrover/esp32/appcpuneorv32panb511evbraytac_an54l15q_db/nrf54l15/cpuappscobc_module1xiao_esp32c6
以下开发板已被弃用并重命名:
adafruit_metro_rp2350/rp2350b/m33重命名为adafruit_metro_rp2350/rp2350b/m33_0motion_2350_pro/rp2350a/m33重命名为motion_2350_pro/rp2350a/m33_0motion_2350_pro/rp2350a/hazard3重命名为motion_2350_pro/rp2350a/hazard3_0beetle_rp2350/rp2350a/m33重命名为beetle_rp2350/rp2350a/m33_0beetle_rp2350/rp2350a/hazard3重命名为beetle_rp2350/rp2350a/hazard3_0pico2_spe/rp2350a/m33重命名为pico2_spe/rp2350a/m33_0pico_plus2/rp2350b/m33重命名为pico_plus2/rp2350b/m33_0pico_plus2/rp2350b/hazard3重命名为pico_plus2/rp2350b/hazard3_0rpi_pico2/rp2350a/m33重命名为rpi_pico2/rp2350a/m33_0rpi_pico2/rp2350a/m33/w重命名为rpi_pico2/rp2350a/m33_0/wrpi_pico2/rp2350a/m33/mcuboot重命名为rpi_pico2/rp2350a/m33_0/mcubootrpi_pico2/rp2350a/m33/w/mcuboot重命名为rpi_pico2/rp2350a/m33_0/w/mcubootrpi_pico2/rp2350a/hazard3重命名为rpi_pico2/rp2350a/hazard3_0xiao_rp2350/rp2350a/m33重命名为xiao_rp2350/rp2350a/m33_0xiao_rp2350/rp2350a/hazard3重命名为xiao_rp2350/rp2350a/hazard3_0rp2350_zero/rp2350a/m33重命名为rp2350_zero/rp2350a/m33_0rp2350_zero/rp2350a/hazard3重命名为rp2350_zero/rp2350a/hazard3_0rp2350b_core/rp2350b/m33重命名为rp2350b_core/rp2350b/m33_0rp2350b_core/rp2350b/hazard3重命名为rp2350b_core/rp2350b/hazard3_0w5500_evb_pico2/rp2350a/m33重命名为w5500_evb_pico2/rp2350a/m33_0w6100_evb_pico2/rp2350a/m33重命名为w6100_evb_pico2/rp2350a/m33_0w6300_evb_pico2/rp2350a/m33重命名为w6300_evb_pico2/rp2350a/m33_0
构建系统
CONFIG_BUILD_NO_GAP_FILLcmake/app/boilerplate.cmake名为
<board>_<revision>.conf的开发板版本 Kconfig 片段,已替换为<board>_<revision>_defconfigzephyr_code_relocate(FILES ...)中的模式展开,已替换为file(GLOB ...)CMake 的
flash、debug、debugserver、attach和rtt目标,已替换为对应的west命令WEST_DIR构建系统变量ZephyrUnittestCMake 包,已替换为find_package(Zephyr COMPONENTS unittest)
CAN
bus-speedbus-speed-data
比较器
nxp,kinetis-acmp的nxp,enable-output-pin、nxp,use-unfiltered-output、nxp,high-speed-mode、nxp,enable-sample、nxp,filter-count、nxp,filter-period和nxp,window-mode属性
计数器
CONFIG_COUNTER_MAXIM_DS3231nxp,lptmr的prescaler属性
hawkBit
<zephyr/mgmt/hawkbit.h>
设备树
zephyr,memory-region-mpu
以太网
使用
CONFIG_ETH_NUMAKER的 NuMaker 以太网驱动已被CONFIG_ETH_NUMAKER_DWC_ETHER_1000取代。参见迁移指南。
LLEXT
llext_get_fn_table,已替换为llext_get_fn_table_entry
Mbed TLS
CONFIG_MBEDTLS_MDCONFIG_MBEDTLS_LMSCONFIG_MBEDTLS_TLS_VERSION_1_2CONFIG_MBEDTLS_DTLSCONFIG_MBEDTLS_TLS_VERSION_1_3CONFIG_MBEDTLS_TLS_SESSION_TICKETSCONFIG_MBEDTLS_CTR_DRBG_ENABLEDCONFIG_MBEDTLS_HMAC_DRBG_ENABLED
MCUboot
CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH,已替换为CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_USING_MOVE
MCUmgr
CONFIG_MCUMGR_GRP_OS_INFO_HARDWARE_INFO_SHORT_HARDWARE_PLATFORM
网络
CONFIG_NET_TC_SKIP_FOR_HIGH_PRIOCONFIG_NET_SOCKETS_POLL_MAXCONFIG_NET_TEST_PROTOCOL,以及作为其唯一被测系统的samples/net/sockets/tcp示例。CONFIG_NET_GPTP_CLOCK_ACCURACY_*net_ipv6_set_hop_limit()net_if_ipv4_get_netmask()net_if_ipv4_set_netmask()net_if_ipv4_set_netmask_by_index()openthread_state_changed_cb_register()openthread_state_changed_cb_unregister()openthread_start()openthread_api_mutex_lock()openthread_api_mutex_try_lock()openthread_api_mutex_unlock()struct openthread_state_changed_cbTLS_CREDENTIAL_SERVER_CERTIFICATEstart_11r_roamingIEEE802154_HW_SLEEP_TO_TX
Nordic
nordic,owned-memory和nordic,owned-partitions的owner-id、perm-read、perm-write、perm-execute、perm-secure和non-secure-callable属性CONFIG_BOARD_ENABLE_CPUNET,由CONFIG_SOC_NRF53_CPUNET_ENABLE取代CONFIG_GPIO_AS_PINRESETCONFIG_NRFS_LOCAL_DOMAIN_DVFS_SCALE_DOWN_AFTER_INIT,由CONFIG_CLOCK_CONTROL_NRF_HSFLL_LOCAL_REQ_LOW_FREQ取代CONFIG_SOC_DCDC_NRF52XCONFIG_SOC_DCDC_NRF52X_HVCONFIG_SOC_DCDC_NRF53X_APPCONFIG_SOC_DCDC_NRF53X_NETCONFIG_SOC_DCDC_NRF53X_HV
POSIX
CONFIG_POSIX_READER_WRITER_LOCKS
随机数
CONFIG_CTR_DRBG_CSPRNG_GENERATORCONFIG_CS_CTR_DRBG_PERSONALIZATION
Shell
kernel log_level,由log enable取代
SPI
流式 Flash
stream_flash_erase_page()
ZTest
CONFIG_ZTEST_SHUFFLE_SUITE_REPEAT_COUNTCONFIG_ZTEST_SHUFFLE_TEST_REPEAT_COUNT
imgtool 的 West 签名支持在 Zephyr 4.0 中已弃用,现已被移除。
scripts/logging/dictionary/log_parser_uart.py字典日志脚本在 Zephyr 4.3 中已弃用,现已被移除。请改用 scripts/logging/dictionary/live_log_parser.py。west flash、west debug以及其他调用 runner 的命令的--skip-rebuild选项在 Zephyr 4.3 中已弃用,现已被移除。请改用--no-rebuild。
已弃用的 API 和选项
音频编解码器
audio_codec_api结构体已弃用。音频编解码器驱动现在应使用DEVICE_API宏来声明其驱动 API。
蓝牙
CONFIG_BT_CUSTOM协议栈选择项已弃用。它源自过去可将整个蓝牙主机卸载到 Zephyr Bluetooth API 之后的年代,如今树内已无使用者;HCI 传输只是普通的设备驱动。基于 HCI 的协议栈CONFIG_BT_HCI是树内仅存的选择项;该选择本身保留,作为树外协议栈的扩展点。
构建系统
zephyr_file_copy()CMake 函数已弃用。请改用原生file(COPY_FILE ...)CMake 命令。
时钟控制
z_nrf_clock_control_get_onoff()函数已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_K32SRC_ACCURACY已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_K32SRC已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_SUBSYS_HFAUDIO已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_SUBSYS_HFAUDIO已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_SUBSYS_HF24M已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_SUBSYS_HF24M已弃用。详见 迁移指南。宏
CLOCK_CONTROL_NRF_SUBSYS_HF已弃用。详见 迁移指南。枚举
clock_control_nrf_type已弃用。详见 迁移指南。Kconfig 选项
CONFIG_CLOCK_CONTROL_NRF及所有依赖的 Kconfig 均已弃用。详见 迁移指南。这些 Kconfig 位于drivers/clock_control/Kconfig.nrf和modules/hal_nordic/nrfx/Kconfig文件中。
控制器局域网(CAN)
can_set_state_change_callback()已弃用,取而代之的是can_init_state_change_callback()、can_add_state_change_callback()和can_remove_state_change_callback()。新增的 API 函数允许添加多个 CAN 控制器状态变更回调(GitHub #117889)。
CPU 负载
CONFIG_CPU_LOAD_METRIC和cpu_load_metric_get()已弃用。CPU 负载指标模块已合并到统一的 CPU 负载 模块中;请使用CONFIG_CPU_LOAD,并搭配CONFIG_CPU_LOAD_BACKEND_RUNTIME_STATS后端和cpu_load_get_cpu()。
DMIC
_dmic_ops结构体已弃用。DMIC 驱动现在应使用DEVICE_API宏来声明其驱动 API。
电量计
弃用了多个电量计属性枚举和联合体字段,改用带显式单位后缀的新版本。
LoRa
已将
lora_recv_duty_cycle()重命名为lora_recv_duty_cycle_async(),以与现有的同步/异步命名约定保持一致。
Nordic
Nordic 内部的 SoC 平台 Kconfig 符号
NRF_PLATFORM_HALTIUM和NRF_PLATFORM_LUMOS已弃用。请改用具体的 SOC_SERIES_* Kconfig 选项。sysbuild 的 Kconfig 选项
SB_CONFIG_NRF_HALTIUM_GENERATE_UICR已重命名为SB_CONFIG_NRF_GENERATE_UICR。Nordic SoC 头文件
<haltium_power.h>和<haltium_pm_s2ram.h>已分别重命名为<soc_power.h>和<soc_pm_s2ram.h>。
Raspberry Pi
RP2350 的
SOC_RP2350A_HAZARD3、SOC_RP2350A_M33、SOC_RP2350B_HAZARD3和SOC_RP2350B_M33Kconfig 符号,以及soc.yml中对应的裸hazard3/m33cpucluster 均已弃用,取而代之的是SOC_RP2350A_HAZARD3_0、SOC_RP2350A_M33_0、SOC_RP2350B_HAZARD3_0和SOC_RP2350B_M33_0及其hazard3_0/m33_0cpucluster,以使 RP2350 双核簇命名与硬件模型 v2 保持一致。旧的 Kconfig 符号和soc.yml条目都将在未来版本中移除。所有树内开发板均已完成迁移。
环形缓冲区
环形缓冲区的 item API(
ring_buf_item_init()、ring_buf_item_put()、ring_buf_item_get()、ring_buf_item_space_get())已弃用,改用sys_ringq(参见 sys_ringq 数据结构)。零拷贝的 claim/finish API(
ring_buf_put_claim()、ring_buf_put_finish()、ring_buf_get_claim()、ring_buf_get_finish())已弃用,改用新的ring_buf_put_ptr()/ring_buf_get_ptr()API。仍在使用该 API 的代码必须启用CONFIG_RING_BUFFER。CONFIG_RING_BUFFER已弃用。环形缓冲区 API 现在完全由头文件实现且始终可用,因此使用环形缓冲区不再需要该选项。它现在仅作为已弃用的开关保留:树外代码迁移到替代 API 期间,可用它恢复旧版的 claim/finish API 和 item API。
网络缓冲区
net_buf_max_len()和net_buf_simple_max_len()已弃用。请改用net_buf_tailroom()和net_buf_simple_tailroom()。详情请参见 迁移指南。
网络
LLMNR 支持已弃用(
CONFIG_LLMNR_RESOLVER和CONFIG_LLMNR_RESPONDER)。LLMNR 正在被逐步淘汰;请改用 mDNS(CONFIG_MDNS_RESOLVER/CONFIG_MDNS_RESPONDER)。
网络链路层
SPI
SPI API 现在使用包容性术语(controller/peripheral、SDO/SDI)。以下旧名称已弃用:
SPI_OP_MODE_MASTER/SPI_OP_MODE_SLAVE(请使用SPI_OP_MODE_CONTROLLER/SPI_OP_MODE_PERIPHERAL)、spi_config的slave成员(请使用peripheral)、SPI_MOSI_OVERRUN_*宏(请使用SPI_SDO_OVERRUN_UNKNOWN、SPI_SDO_OVERRUN_DT、SPI_SDO_OVERRUN_DT_INST)、CONFIG_SPI_SLAVE(请使用CONFIG_SPI_PERIPHERAL)、zephyr,bt-hci-spi-slave设备树 compatible(请使用zephyr,bt-hci-spi-peripheral)以及迁移指南中列出的绑定的mosi-gpios/miso-gpios风格设备树属性。
定时器
新增
sys_clock_no_timeout()钩子,用于处理CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE,取代以ticks=K_TICKS_FOREVER调用sys_clock_set_timeout()。新增
sys_clock_idle_enter()钩子,用于处理进入低功耗状态的情况,取代以idle=true调用sys_clock_set_timeout()。
USB
st,stm32u5-otghs-phy的clock-reference属性已弃用。请勿指定该属性;底层驱动不再需要它。
视频
视频驱动 API(
<zephyr/drivers/video.h>)中的所有函数已移至视频子系统(<zephyr/video/video.h>)。应用只需重命名#include。
West
west spdx --init已弃用。启用CONFIG_BUILD_OUTPUT_META的构建现在会向 CMake 请求west spdx所读取的基于文件的 API,因此构建目录不再需要在配置之前预先准备。参见 软件物料清单:west spdx。
工作队列
k_work_q.thread已弃用。请改用k_work_q.thread_id。
新增 API 和选项
ADC
新增可选的
adc_driver_api.ref_get回调和adc_ref_get(),使应用和adc_raw_to_millivolts_dt()可以对任意adc_reference使用驱动自有的运行时毫伏标度。当回调为 NULL 时,静态的adc_driver_api.ref_internal仍是ADC_REF_INTERNAL的回退值。adc_raw_to_millivolts_dt()在adc_ref_get()失败时会回退到通道设备树属性zephyr,vref-mv。
CPU 频率调节
FIDO2
HWSPINLOCK
Kconfig
新增
dt_partition_mtd预处理函数(GitHub #111599)
LoRa
USB Type-C
Zbus
内核
中断控制 API 的命名空间等效函数,推荐用于新代码;不带前缀的名称仍完全支持:
k_irq_lock()、k_irq_unlock()、k_irq_enable()、k_irq_disable()、k_irq_is_enabled()、k_irq_connect_dynamic()和k_irq_disconnect_dynamic()
加密
多媒体流水线
安全存储
新增
CONFIG_SECURE_STORAGE_ITS_TRANSFORM_AEAD_CRYPT_CUSTOM,用于实现自己的secure_storage_its_transform_aead_crypt()。(GitHub #118542)CONFIG_SECURE_STORAGE_ITS_TRANSFORM_AEAD_SCHEME_IS_CONFIGURABLECONFIG_SECURE_STORAGE_ITS_TRANSFORM_AEAD_KEY_SIZE_IS_CONFIGURABLE
定时器
z_sys_clock_lpm_enter()
时钟控制
CLOCK_CONTROL_NRF_ONOFF对于兼容
nordic,nrf-clock-hfclk、nordic,nrf-clock-lfclk、nordic,nrf-clock-hfclk192m、nordic,nrf-clock-hfclk24m、nordic,nrf-clock-hfclkaudio、nordic,nrf-clock-xo和nordic,nrf-clock-xo24m的设备,现在支持以下函数。详情请参见 迁移指南。 *clock_control_request()*clock_control_request_sync()*clock_control_release()*clock_control_cancel_or_release()
显示
架构
CONFIG_ARM_MPU_CM7_UNMAPPED_REGION(Arm Cortex-M7 用于未映射地址的兜底 MPU 区域,勘误 1013783 的规避措施)CONFIG_CORTEX_M_ERRATUM_440977_WORKAROUND(在提升优先级的 BASEPRI 写入后保留一条 ISB 指令;在 Arm Cortex-M7 上默认启用,勘误 440977 影响 r0p0/r0p1 内核。其他 Cortex-M 内核不再在中断加锁/解锁快速路径中执行屏障,从而加快内核热路径)CONFIG_EXCEPTION_DUMP(默认启用,可禁用以在空间受限的构建中编译掉故障处理程序的输出)CONFIG_RISCV_ISA_EXT_ZKR(RISC-V Zkr 熵源扩展,通过riscv,isa-extensions设备树属性启用)CONFIG_RISCV_USER_STRING_NLEN_VALIDATE(RISC-V,在arch_user_string_nlen()中逐块校验用户字符串,而不依赖故障修正机制,适用于加载访问故障不精确的 SoC)CONFIG_RISCV_SOC_HAS_SYSCALL_INTMASK(RISC-V SoC 钩子,用于在用户态系统调用主体中屏蔽中断,而不清除mstatus.MIE)CONFIG_RISCV_SOC_SYSCALL_CLOSE_ECALL(RISC-V SoC 钩子,用于在用户态系统调用主体运行前退出 ecall 异常,适用于在该异常仍处于打开状态时无法递送由系统调用主体引发的故障的 SoC)
熵源
CONFIG_ENTROPY_RISCV_ZKR(基于 RISC-V Zkr 扩展seedCSR 的架构级熵源驱动)
环形缓冲区
电源管理
电量计
fuel_gauge_set_buffer_prop()以及可选的fuel_gauge_driver_api.set_buffer_property回调,用于写入可变长度缓冲区属性,与fuel_gauge_get_buffer_prop()对称。
管理
MCUmgr
新增对 SPI MCUmgr SMP 传输的支持,可通过
CONFIG_MCUMGR_TRANSPORT_SPI启用。新增实验性的 传输管理组:
CONFIG_MCUMGR_GRP_TRANSPORT、CONFIG_MCUMGR_GRP_TRANSPORT_LOCKING、CONFIG_MCUMGR_GRP_TRANSPORT_MAX_BRIDGES、CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_DEFAULT、CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_VALUE、CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_VALUE_GROUP_ID、CONFIG_MCUMGR_GRP_TRANSPORT_GROUP_ID_CUSTOM_FUNCTION和CONFIG_MCUMGR_GRP_TRANSPORT_INFO_FUNCTIONS。
网络
新增
net_eth_set_if_type_wifi(),用于将以太网接口类型设置为 Wi-Fi。新增公开的邻居缓存 API:
net_if_ipv4_nbr_flush()和net_if_ipv6_nbr_flush()用于丢弃接口已学习到的邻居,net_if_ipv4_nbr_rm()和net_if_ipv6_nbr_rm()则移除单个邻居。在以太网链路上,IPv4 缓存就是 ARP 缓存。新增
net_dhcpv4_set_reboot_hint(),用于为 DHCPv4 客户端预置先前租用的地址,以支持 INIT-REBOOT。新增 mDNS 应答器接口策略(
CONFIG_MDNS_RESPONDER_IFACE_POLICY_ALLOWLIST、CONFIG_MDNS_RESPONDER_IFACE_POLICY_DENYLIST),以及CONFIG_MDNS_RESPONDER_IFACE_LIST,用于控制 mDNS 应答器在哪些网络接口上运行。新增
mdns_responder_enable_iface()和mdns_responder_disable_iface()(CONFIG_MDNS_RESPONDER_RUNTIME_IFACE_CONTROL),用于在运行时启用或停用某个网络接口上的 mDNS 应答器。新增支持 IPv6 前缀委派的 DHCPv6 服务器(
CONFIG_NET_DHCPV6_SERVER):net_dhcpv6_server_start()、net_dhcpv6_server_stop()和net_dhcpv6_server_foreach_lease()。新增 IPv6 路由器角色,即发送路由器通告(
CONFIG_NET_IPV6_ND_RA_TX):net_if_ipv6_router_start()、net_if_ipv6_router_stop()和net_if_ipv6_prefix_set_advertise()。为 DHCPv6 客户端新增请求路由器支持,委派前缀可通过
net_dhcpv6_params.downstream_ifaces再委派到下游链路。新增
net_eth_mcast_addr_add()、net_eth_mcast_addr_rm()和net_eth_mcast_addr_foreach()。以太网 L2 现在会跟踪接口所监听的链路层组播地址,因此只有当某个组的第一个用户加入或最后一个用户离开时,才会要求以太网驱动更改其接收过滤器。此前,IP 层的加入和数据包套接字成员关系是分别转发给驱动的,离开某个组可能导致设备不再监听另一个需要相同链路层地址的组。由于 IPv4 组播地址与链路层地址按 32:1 映射,这种情况很容易发生。驱动还可以把ETHERNET_CONFIG_TYPE_FILTER视为地址已变化的提示,并通过net_eth_mcast_addr_foreach()遍历这些地址来重新配置其过滤器,这适合按地址哈希进行过滤的设备。一个接口能跟踪多少地址,等于各已启用子系统请求的数量之和;如果应用需要更多,可用CONFIG_NET_L2_ETHERNET_MCAST_FILTER_COUNT提高。传给net_eth_mac_filter()或NET_REQUEST_ETHERNET_SET_MAC_FILTER的组播目的地址也按同样方式计数,因此应用设置的每个此类过滤器现在也必须由应用取消设置,而取消设置一个从未设置过的过滤器会失败并返回-ENOENT。在
ZSOCK_SOL_PACKET层新增ZSOCK_PACKET_ADD_MEMBERSHIP和ZSOCK_PACKET_DROP_MEMBERSHIP套接字选项(CONFIG_NET_SOCKETS_PACKET_MCAST_MEMBERSHIP),使数据包套接字可以请求网络接口开始或停止监听额外的 L2 组播地址。在以太网上,如果设备支持过滤,该地址会被写入设备的接收过滤器;不支持过滤的设备则仍会将组播向上传递。接口无法满足的加入请求会报告给应用:接口无法再跟踪更多地址时返回ENOMEM,不是以太网接口时返回ENOTSUP。成员关系变化由NET_EVENT_PACKET_MCAST_MEMBERSHIP_ADD和NET_EVENT_PACKET_MCAST_MEMBERSHIP_DROP网络管理事件报告。套接字关闭时仍持有的成员关系会自动丢弃,CONFIG_NET_SOCKETS_PACKET_MCAST_MEMBERSHIP_COUNT用于设置同一时间可激活的成员关系数量。新增对接收数据的 TCP 选择性确认(RFC 2018,
CONFIG_NET_TCP_SACK,默认启用)。Zephyr 现在在握手阶段提供 SACK,并报告保存在接收队列中的乱序数据,从而使支持 SACK 的发送方只需重发缺失的数据。重传时还不会使用接收到的 SACK 块。新增 SNTP 服务器(
CONFIG_SNTP_SERVER),它在所有已启用的地址族上应答 UDP 端口 123 的时间查询。应用先设置系统时钟,然后通过sntp_server_clock_source()告知服务器其时钟源;在此之前,服务器会告知客户端不得使用其时间。SNTP 客户端现在仅由CONFIG_SNTP选择,二者共用CONFIG_SNTP_LIB。新增
dns_resolve_is_active(),用于在不读取解析上下文内部信息的情况下检查某个 DNS 解析上下文是否处于活动状态。
脉冲 IO
新增了 脉冲 IO 子系统,为在 GPIO 线上生成和捕获定时数字边沿的硬件提供与厂商无关的 API。
蓝牙
音频
经典蓝牙
HCI 驱动
主机
bt_le_adv_param.tx_power和BT_LE_ADV_OPT_TX_POWER,用于为每个扩展广播集请求特定的 TX 功率级别。BT_HCI_QUIRK_NO_FLOW_CONTROLHCI 设备特殊行为,适用于宣称支持却拒绝控制器到主机流控命令的控制器。bt_rfcomm_dlc.rx_credit_limit,用于配置每个 DLC 的初始 RX 信用数。bt_rfcomm_dlc_recv_complete(),用于向对端返还 RX 信用。应用可以从bt_rfcomm_dlc_ops.recv回调返回-EINPROGRESS,将缓冲区释放和流控信用补充推迟到处理完成之后。bt_le_bond_addr_res_support()、bt_le_addr_res_support和bt_conn_auth_info_cb.addr_res_support_read
Mesh
触觉反馈
设备树
调制解调器
音频
新增开发板
Adafruit Industries, LLC
Adafruit Feather ESP32C6 (
adafruit_feather_esp32c6)TRRS Trinkey (
adafruit_trrs_trinkey)
Advanced Micro Devices (AMD), Inc.
ACP 7.0 Xtensa Audio DSP (
acp_7_0_adsp)ACP 7.X Xtensa Audio DSP (
acp_7_x_adsp)AMD Zynq UltraScale+ MPSoC APU (
zynqmp_apu)AMD Zynq UltraScale+ MPSoC RPU (
zynqmp_rpu)
Aesc Silicon
ElemRV Flask-H (
elemrv_flask_h)
Ai-Thinker Co., Ltd.
Ai-Thinker M64P-32S Development Board (
ai_m64p_32s_kit)AiPi-Eyes-S2 Multi-Functional Development Board (
aipi_eyes_s2)
Alif Semiconductor
Alif Balletto B1 Development Kit (
balletto_b1_dk)Alif Ensemble E8 AI/ML AppKit (
ensemble_e8_ak)
Analog Devices, Inc.
MAX32651EVKIT (
max32651evkit)
Antmicro
STM32H7 HDMI Board (
stm32h7_hdmi_board)STM32H7 Renode Reference Platform (
stm32h7_renode_reference_board)
Arduino
Arduino Nano RP2040 Connect (
arduino_nano_connect)Arduino Nesso N1 (
arduino_nesso_n1)
ARM Ltd.
Arm Corstone-1000-A320 Fixed Virtual Platform (
fvp_corstone1000)
Armfly
Armfly STM32H743XIH6 (
armfly_stm32h743xih6)
Barth Elektronik GmbH
STG-800 lococube mini-PLC (
stg_800)
BeagleBoard.org Foundation
BeagleBadge (
beaglebadge)BeagleConnect Zepto (
beagleconnect_zepto)PocketBeagle 2 Industrial (
pocketbeagle_2_industrial)
BLIIoT Technology Co., Ltd.
BLIIoT ARMxy BL350 AM62x M4 (
am62x_m4_bl350)
Bouffalo Lab (Nanjing) Co., Ltd.
Bouffalo Lab BL618 G0 evaluation board (
bl618g0)
CAN-module, FOP
CANBRIDGE G473 (
canbridge_g473)USBCAN ISO (
usbcan_iso)USBCANFD DUAL (
usbcanfd_dual)USBCANFD SOLO (
usbcanfd_solo)
Chengdu Ebyte Electronic Technology
Ebyte E80 Module Development Board (HF) (
e80_900mbl_01)Ebyte EoRa-HUB-900TB Module Test Kit (
eora_hub_900tb)
Chengdu Heltec Automation Technology Co., Ltd.
Heltec T114 v2 (
heltec_t114_v2)
Cirrus Logic, Inc.
CRD40L26-POC-C (
crd40l26)
emtrion GmbH
emSBC-NEON-CM7 (
emsbc_neon_cm7)
Espressif Systems
ESP32-P4-Function-EV-Board (
esp32p4_function_ev_board)ESP32-P4X-Function-EV-Board (
esp32p4x_function_ev_board)ESP32-S3-BOX-3 (
esp32s3_box3)
Eurovibes
STM32G431 based Sertest-NG board (
eurovibes_stm32g431_sertest-ng)
FlySky
FlySky FS-i6S (
fs_i6s)
Heimann Sensor GmbH
Heimann HTPA Eval Board (rev0) (
htpa_eval)
Intel Corporation
Nova Lake RVP (
intel_nvl_s_rvp)
Jhoinrch
RH02 (
rh02)RH02 Plus (2026) (
rh02_plus_2026)
KAGA FEI Co., Ltd.
EC4L15BA1-EVB (
ec4l15ba1)
KinCony Electronics Co., Ltd.
KC868-A8 (
kincony_kc868_a8)
Lilygo Shenzhen Xinyuan Electronic Technology Co., Ltd
LilyGO T-Deck / T-Deck Plus (
t_deck)
M5Stack
PaperColor (
m5stack_paper_color)M5Stack StickS3 (
m5stack_sticks3)Unit C6L (
m5stack_unitc6l)
Makerfabs
Matouch MTRO128G (
matouch_mtro128g)
Microchip Technology Inc.
Microchip M2S010 MKR Kit (
m2s010_mkr_kit)Microchip M2S Hello FPGA Kit (
m2s_hello_fpga_kit)PIC32CK GC01 Curiosity Ultra (
pic32ck_gc01_cult)PIC32CM GC00 Curiosity Pro (
pic32cm_gc00_cpro)PIC32CM SG00 Curiosity Pro (
pic32cm_sg00_cpro)SAMA5D27 SOM1 Kit1 (
sama5d27_som1_ek1)
MuseLab Electronics
MuseLab nanoCH32V317 (
nano_ch32v317)MuseLab nanoCH57x (
nano_ch57x)
Nordic Semiconductor
nRF93M1 DK (
nrf93m1dk)
Norik Systems
DECT NR+ USB Dongle (
dect_nr_plus_usb_dongle)
NUCODE Co., Ltd. (nuworks.io)
NUCODE NU32 (
nucode_nu32)NUCODE NU40 (
nucode_nu40)
Nuvoton Technology Corporation
NUMAKER M031KI (
numaker_m031ki)NUMAKER M3351KI (
numaker_m3351ki)
NXP Semiconductors
FRDM-IMXRT1152 (
frdm_imxrt1152)FRDM-IMXRT700 (
frdm_imxrt700)i.MX952 EVK (
imx952_evk)LPC845-BRK (
lpc845brk)LPCXpresso54628 (
lpcxpresso54628)MIMXRT685-AUD-EVK (
mimxrt685_aud_evk)MR-NavQ95B (
mr_navq95b)
OLIMEX Ltd.
ESP32-P4-PC (
esp32p4_pc)
其他
BL704L Development Board (
bl704l_dvk)ESP32-H2-SUPERMINI (
esp32h2_supermini)JZ-F407VET6 Industrial Control Board (
jz_f407vet6)STM32 Debug Probe (
stm32_debug_probe)
Pine64
PineCone BL602 Evaluation Board (
pinecone)
QEMU
QEMU Emulation for ARM Cortex-A72 (
qemu_cortex_a72)
Radxa
Radxa ROCK 3B (
rock_3b)ROCK 5B+ (
rock_5b_plus)
Raspberry Pi Foundation
Raspberry Pi Zero 2 W (
rpi_zero_2w)
Raytac Corporation
AN54LV-DB-15 (
raytac_an54lv_db_15)
Realtek Semiconductor Corp.
RTL8721Dx Evaluation Board (
pke8721daf_c13_f10)
Renesas Electronics Corporation
R-Car Ironhide (
rcar_ironhide_x5h)RZ/A3M Evaluation Kit (
rza3m_ek)
Seeed Technology Co., Ltd
reTerminal E1001 (
reterminal_e1001)reTerminal E1003 (
reterminal_e1003)Wio Tracker L1 (
wio_tracker_l1)XIAO ESP32C5 (
xiao_esp32c5)XIAO nRF54LM20A (
xiao_nrf54lm20a)
SEGGER Microcontroller GmbH
NAND Flash Evaluator (
nandeval_h743zi)
SHAKTI Processor Program
Nexys Video (Ganga SoC) (
nexys_ganga)
Shanghai Ruiside Electronic Technology Co., Ltd.
RA8P1 Titan (
ra8p1_titan)RA8P1 Titan Mini (
ra8p1_titan_mini)
Shenzhen JLC Technology Group Co., Ltd.
SkyStar GD32F407VET6 (
skystar_gd32f407vet6)
Shenzhen Luckfox Technology Co., Ltd.
Pico Ultra (
pico_ultra)
Shenzhen Sipeed Technology Co., Ltd.
Sipeed M0Sense (
m0sense)Sipeed M1S Dock (
m1s_dock)
Shenzhen Xunlong Software CO.,Limited
Orange Pi Zero 2W (
opi_zero2w)
Silicon Laboratories
KG100S Radio board (KG100S-RB4332A) (
kg100s_rb4332a)SiWx917Y Module Wi-Fi 6 and Bluetooth LE Explorer Kit (BRD2708A) (
siwx917_ek2708a)EFR32xG26 Dev Kit (xG26-DK2608A) (
xg26_dk2608a)EFR32xG26 2.4 GHz +20 dBm Radio Board (
xg26_rb4121a)
STMicroelectronics
Nucleo G491RE (
nucleo_g491re)Nucleo U545RE Q (
nucleo_u545re_q)
Sutajio Ko-Usagi PTE Ltd.
Tomu (
tomu)
Texas Instruments
AM13E230X Launchpad (
lp_am13e230)TI AM243x LaunchPad (
lp_am243)MSPM33C321A Launchpad (
lp_mspm33c321a)
Trenz Electronic
Trenz Electronic TE0950 (
te0950)
Tuya Inc.
TYZS3 (
tyzs3)
u-blox
EVK-NORA-B2 (
ubx_evknorab2)
Udoo
UDOO KEY (
udoo_key)
Umeta & Ikki Automotive Parts
UIAPduino Pro Micro CH32V003 (
uiapduino_pro_micro_ch32v003)
VIEWE Display Co., Ltd.
VIEWE UEDX24240013-MD50E (
uedx24240013_md50e)VIEWE UEDX32480035E-WB-A (
uedx32480035e_wb_a)
Waveshare Electronics
ESP32-C6 LCD 1.47" (
esp32c6_lcd_1_47)ESP32-P4-WIFI6 (
esp32p4_wifi6)ESP32-P4-WIFI6-Dev-Kit (
esp32p4_wifi6_dev_kit)Waveshare ESP32-P4-ETH (
waveshare_esp32p4_eth)
WeAct Studio
WeActStudio CH32V00xCoreBoard (
ch32v00x_core)USB2CANFDV2 (
usb2canfdv2)WeAct RA4M1 Core Board (
weact_ra4m1_core)
WinChipHead
WCH CH32H417EVT (
ch32h417evt)WCH CH32V103EVT (
ch32v103evt)WCH CH32V203EVT (
ch32v203c8t6evt)WCH CH32V305F-EVT-R0 (
ch32v305f_evt_r0)
WIZnet Co., Ltd.
W55RP20-EVB-Pico (
w55rp20_evb_pico)W6100-EVB-Pico (
w6100_evb_pico)W6100-EVB-Pico2 (
w6100_evb_pico2)W6300-EVB-Pico2 (
w6300_evb_pico2)
新增扩展板
新增驱动
ADC
ARM 架构
音频
辅助显示
蓝牙
蜂鸣器
CAN
充电器
时钟控制
时钟监视器
比较器
计数器
CPU
CPU 频率调节
CRC
加密加速器
DAC
DAI
DALI
磁盘
显示
DMA
DSP
EDAC
ESPI
以太网
固件
Flash 控制器
FPGA
电量计
GNSS
GPIO 与排针
触觉反馈
硬件信息
I2C
I2S
I3C
IEEE 802.15.4
输入
中断控制器
IPC
LED
LED 灯带
LoRa
邮箱
MCUmgr
内存控制器
其他
调制解调器
MTD
多比特 SPI
多功能设备
MUX
网络
gPTP
CONFIG_NET_GPTP_STATIC_TIME_RECEIVER将该节点作为静态配置的时间接收端运行,使其可以通过不发送 Announce 消息的 IEEE 802.1AS 车载配置文件(automotive profile)网桥进行同步。
OPAMP
OTP 存储器
PCIe
PHY
引脚控制
电源域
电源管理
脉冲 IO
PWM
稳压器
复位控制器
保持内存
RNG
RTC
SDHC
传感器
串行控制器
SMbus
SPI
转速计
定时器
USB
唤醒控制器
看门狗
Wi-Fi
新增示例
库 / 子系统
加密
新增对 AES CFB 和 OFB 密码模式的支持。
Mbed TLS
TF-M
TF-M 已从 2.2.2 版本更新至 2.3.1 版本。版本说明见:
现在可以通过将
ZEPHYR_TOOLCHAIN_VARIANT设置为zephyr/llvm,使用 LLVM 编译 TF-M。
DFU
新增
CONFIG_IMG_CUSTOM_SECTOR_SIZE,允许 MCUboot 使用不同的扇区大小,以缩小 swap-using-offset 状态区的大小。
LoRa / LoRaWAN
新增原生 LoRaWAN 后端(
CONFIG_LORA_MODULE_BACKEND_NATIVE),它直接在 LoRa 无线电驱动之上实现 LoRaWAN 1.0.x Class A,不依赖 Semtech LoRaMac-node。目前支持 EU868 区域。
管理
MCUmgr
镜像管理客户端现在支持 SHA-512 镜像摘要。对于使用
CONFIG_MCUBOOT_BOOTLOADER_USES_SHA512构建的目标,它可以列出并选择镜像以进行测试或确认。
网络
CoAP
CoAP 服务器接受携带空令牌的 Observe 注册(RFC 7641 允许这种做法),并以端点和该空令牌作为观察者的键。
安全存储
对于认证失败或格式错误的条目,
psa_its_get*()函数现在返回PSA_ERROR_INVALID_SIGNATURE或PSA_ERROR_DATA_CORRUPT,而不再返回PSA_ERROR_GENERIC_ERROR。修改条目的 ITS 操作现已串行化,丢弃无法读回的条目时会记录一条警告。
以 0 作为
data_size调用psa_its_get()时,现在会报告该条目是否存在且有效,而不再总是返回PSA_SUCCESS。
多媒体流水线
引入 多媒体流水线(mpipe),这是用于以可复用元素(源、变换和接收端)构建多媒体应用的新子系统,这些元素链接在一起构成流水线。它让应用可以描述自己想要的媒体流,而不必亲自驱动每个音频、视频或显示设备。
视频
引入视频子系统,它继承了此前视频驱动中的所有函数名。
Zbus
CONFIG_ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION现在无需在每个通道上使用专用池即可工作(在调用zbus_chan_set_msg_sub_pool()之前,通道会回退到共享池)
__assert
__ASSERT_ON定义已被移除。
Devicetree
节点现在可以使用 phandle 引用其子节点,而不会在依赖图中形成循环并导致构建错误。有关如何使用这一新特性,请参见 dependency-mode。 (GitHub #108892)
绑定可以使用新增的
class:键声明设备类别成员关系(参见 Class),从而在构建时枚举某个设备类别的所有节点:$(dt_class_enabled,<class name>)Kconfig 预处理函数
ADC shell 现在通过
adc设备类别枚举 ADC 控制器,而不再使用硬编码的 compatible 列表,因此也能覆盖树外的 ADC 驱动。I3C shell 现在通过
i3c设备类别枚举 I3C 控制器,而不再使用硬编码的 compatible 列表,因此也能覆盖树外的 I3C 驱动。
其他值得注意的变更
蓝牙
CONFIG_SYSTEM_WORKQUEUE_PRIORITY不再仅因启用CONFIG_BT而被强制设为协作式优先级。现在只有向系统工作队列提交工作的组件才需要该设置,因此不包含这些组件的构建(例如驱动外部控制器的 HCI raw 镜像)可以重新选择可抢占优先级 (GitHub #119123)。
构建系统
要求的最低 CMake 版本已提升至 3.28.0,Ubuntu 24.04 LTS 软件包仓库中的 CMake 软件包即满足这一版本要求。如果所用发行版提供的版本较旧,可选方案参见 迁移指南。
内核
CONFIG_SCHED_CPU_MASK不再依赖CONFIG_SCHED_SIMPLE。CPU 亲和性掩码现在受全部三种调度器后端支持:SCHED_SIMPLE(O(N) 链表扫描)、SCHED_SCALABLE(O(N) 红黑树遍历)和SCHED_MULTIQ(O(P·N) 逐优先级桶扫描)。各后端的性能说明参见更新后的 SMP 文档。CONFIG_SCHED_CPU_MASK_PIN_ONLY现在会在 API 边界(cpu_mask_mod())和入队时(thread_runq())同时强制满足单 CPU 位这一不变式。在 PIN_ONLY 模式下调用k_thread_cpu_mask_clear()、k_thread_cpu_mask_enable_all()或k_thread_cpu_mask_disable()会触发断言失败。可使用k_thread_cpu_pin()将线程重新分配到其他 CPU。
定时器
启用
CONFIG_SYSTEM_CLOCK_SLOPPY_IDLE后,如果停止时基会破坏sys_clock_cycle_get_32()/sys_clock_cycle_get_64(),则驱动不得在无待处理超时时立即停止时基。这些函数在 CPU 运行期间必须保持计数。仅允许从sys_clock_idle_enter()停止时基,因为随后保证会调用sys_clock_idle_exit()。Tickless 系统定时器驱动现在可以基于共享实现头文件
drivers/timer/system_timer_generic.h构建;该头文件负责此前由各驱动自行实现的 tick 核算:周期到 tick 的转换、announce 基准、按 tick 对齐的期限,以及计数器回绕与范围处理。驱动只需实现少量周期域原语,即读取周期计数器并设置绝对比较定时。有关如何使用它,参见 迁移指南 (GitHub #115844)。
网络
DHCPv4 客户端现在会在所有放弃租约的路径上,把租约地址、该租约的 DNS 服务器以及它安装的网关从接口上移除,并在请求被拒绝或地址被拒绝后等待约十秒再重新启动。
Wi-Fi
移除了
samples/net/wifi/test_certs/rsa2k企业测试证书(DES 加密的私钥)。请改用rsa2k_no_des。连接结果事件现在可以通过新增的
WIFI_STATUS_CONN_AUTH_REJECT和WIFI_STATUS_CONN_ASSOC_REJECT值表明接入点拒绝了认证或关联,并且wifi_status会携带失败背后的原始 IEEE 802.11 状态码和原因码。supplicant 会填充这些信息,Wi-Fi shell 会在连接和断开连接结果中打印它们。 (GitHub #116704)wifi-tx-power-2g.yaml和wifi-tx-power-5g.yaml中的发射功率上限属性不再是required,并且现在带有保守的默认值,因此尚未标定的开发板宁可发射功率偏小,也不会超出法规限制。已自行测量限值的开发板仍会显式声明这些限值,因此没有任何开发板的行为发生变化。
MCUboot
SB_CONFIG_BOOT_SIGNATURE_KEY_FILE现在接受以逗号分隔的密钥文件列表,并将每个密钥的公钥部分嵌入 MCUboot 引导加载程序。提供多个密钥时,MCUboot 接受由其中任一密钥签名的镜像——典型用法是使用开发用引导加载程序,它可同时引导开发签名和生产签名的镜像,而生产引导加载程序只嵌入生产密钥。列表中的第一项是用于签名应用的密钥,其余各项为仅用于验证的公钥。参见 Signing Binaries。Espressif 开发板在 sysbuild 下不再强制使用仅覆盖模式和未签名镜像。这些开发板现在会构建采用偏移量交换并支持回退的 MCUboot,以及使用 RSA-2048 签名的应用;共享的 Espressif 分区表也不再保留 scratch 分区。参见 迁移指南。
NXP
NXP LPC DTSI 文件已从扁平的
dts/arm/nxp/lpc/目录重组为按系列划分的子目录(lpc11u6x/、lpc51u68/、lpc54xxx/、lpc55xxx/、lpc84x/)。有关如何更新树外开发板的包含路径,参见 迁移指南。NXP Kinetis DTSI 文件已从扁平的
dts/arm/nxp/kinetis/目录重组为按系列划分的子目录(k2x/、k32lx/、k6x/、k8x/、ke1xf/、ke1xz/、kl2x/、kv5x/、kwx/)。有关如何更新树外开发板的包含路径,参见 迁移指南。NXP MCX DTSI 文件已从扁平的
dts/arm/nxp/mcx/目录重组为按系列划分的子目录(mcxa/、mcxc/、mcxe/、mcxl/、mcxn/、mcxw/)。有关如何更新树外开发板的包含路径,参见 迁移指南。NXP i.MX RT DTSI 文件已从扁平的
dts/arm/nxp/imxrt/目录重组为按系列划分的子目录(imxrt10xx/、imxrt11xx/、imxrt5xx/、imxrt6xx/、imxrt7xx/、imxrt118x/)。有关如何更新树外开发板的包含路径,参见 迁移指南。
Arm
- 非安全变体的
Arm Musca-S1 (
v2m_musca_s1/musca_s1/ns) 已被移除,原因是 TF-M 移除了对该开发板的平台支持。
作为上述变更的结果, Arm Musca-S1 (
v2m_musca_s1) 的安全变体已被弃用,以避免出现部分支持这种令人困惑的状态。
Trusted Firmware-A
引入
CONFIG_TFA_BUILD_FIP以配置 FIP (Firmware Image Package) 的生成。FIP 生成默认处于禁用状态,可以通过在prj.conf中设置CONFIG_TFA_BUILD_FIP=y来启用;对于自定义开发板,也可以在开发板的<board>_defconfig文件中设置。