Zephyr V4.2.0 发布
Zephyr v4.2.0 如期在 2025.7.18 发布,该版本支持截止日期为 2026.3.18。
- Release 文件 https://github.com/zephyrproject-rtos/zephyr/releases/tag/v4.2.0
- Relase Notes https://docs.zephyrproject.org/latest/releases/release-notes-4.2.html
- Release Blog https://www.zephyrproject.org/zephyr-rtos-4-2-now-available-introduces-renesas-rx-support-usb-video-class-and-more/
- 迁移指南(从 4.1.0 迁移到 4.2.0) https://docs.zephyrproject.org/latest/releases/migration-guide-4.2.html
- 配套视频 https://www.youtube.com/watch?v=25xrHzeaw5w
官方 Release 博客详细概述 v4.2.0 新功能和亮点的摘要,Release note 可以找到细节,视频对重大变化进行说明和新功能演示,本文一二级标题列出主要更新内容,正文文字列出个人关注的内容。
重大变化 链接到标题
- 加入 Renesas RX 架构支持
- 新增 USB Video Class 驱动
- 在 Twister 中引入 Power Harness 测试,使用硬件电源监视器执行自动数据收集和分析,用于电流检测与结果验证
- 全面支持 MQTT 5.0
- 蓝牙协议栈中新增加 HFP/AG/HF
- zbus API 到 1.0.0,API 状态已稳定
- 新增 96 个主板和 22 个扩展板
内容摘要 链接到标题
修补漏洞 链接到标题
详细的说明可以在 https://docs.zephyrproject.org/latest/security/vulnerabilities.html 找到
- CVE 2025-27809 TLS 客户端可能会无意中跳过服务器身份验证
- CVE 2025-27810 TLS 握手过程中潜在的身份验证绕过
- CVE 2025-2962
dns_copy_qname
中有无限循环 - CVE 2025-52496 AESNI 中有竞争发生
- CVE 2025-52497 解析 PEM encrypted 资料时堆读取不足
- CVE 2025-49600 LMS 验证中未检查返回值可导致绕过签名
- CVE 2025-49601
mbedtls_lms_import_public_key()
读取越界 - CVE 2025-49087 Timing side-channel in block cipher decryption with PKCS#7 padding
- CVE 2025-48965 使用 mbedtls_asn1_store_named_data() 后出现空指针取消引用
- CVE 2025-47917 Misleading memory management in mbedtls_x509_string_to_names()
- CVE 2025-7403: 2025-09-05 解禁
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 设备组地址的支持
弃用
- CONFIG_SCHED_DUMB 和 CONFIG_WAITQ_DUMB 弃用。请用 CONFIG_SCHED_SIMPLE 和 CONFIG_WAITQ_SIMPLE 替代
- CONFIG_LWM2M_ENGINE_MESSAGE_HEADER_SIZE 弃用。 标头大小应包含在消息大小中,使用 CONFIG_LWM2M_COAP_MAX_MSG_SIZE
- TLS 凭证类型 TLS_CREDENTIAL_SERVER_CERTIFICATE 弃用,用 TLS_CREDENTIAL_PUBLIC_CERTIFICATE 替代
- arduino_uno_r4_minima 和 arduino_uno_r4_wifi 开发板弃用,用 arduino_uno_r4 开发板替代
- esp32c6_devkitc 板目标弃用,替换为 esp32c6_devkitc/esp32c6/hpcore
- xiao_esp32c6 板目标已被弃,替换为 xiao_esp32c6/esp32c6/hpcore
- CONFIG_HAWKBIT_DDI_NO_SECURITY 弃用,hawkBit 服务器已不再支持匿名身份验证
- CONFIG_BT_CONN_TX_MAX 弃用。与 CONFIG_BT_BUF_ACL_TX_COUNT 选项保持一致
- 已弃用的 CONFIG_CRYPTO_TINYCRYPT_SHIM 被移除
- 已弃用项 CONFIG_BT_MESH_USES_TINYCRYPT 被删除。使用 CONFIG_BT_MESH_USES_MBEDTLS_PSA 或 CONFIG_BT_MESH_USES_TFM_PSA
稳定版本 API 变更
- net_mgmt_request_handler_t 从 uint32_t 更改为 uint64_t
新增加
- 架构
- 移除 NIOS2 架构
ARCH_HAS_VECTOR_TABLE_RELOCATION
- 蓝牙:涉及音频,Host
- 构建系统
- SB_CONFIG_MCUBOOT_MODE_SINGLE_APP_RAM_LOAD 单应用程序 RAM 加载
- 支持 load image 设置和选择
- Counter: 新增 counter_reset()
- 调试
- coredump
- 当选择 CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN 时,默认情况下为 ARM Cortex M 启用 CONFIG_DEBUG_COREDUMP_THREAD_STACK_TOP
- CONFIG_DEBUG_COREDUMP_BACKEND_IN_MEMORY
- CONFIG_DEBUG_COREDUMP_BACKEND_IN_MEMORY_SIZE
- coredump
- Display
- 标准化清除显示内容 API:display_clear()
- CFB 可通过 cfb_draw_circle() 绘制圆圈
- I2C
- i2c_configure_dt().
- i2c_configure_dt()
- I2C_DEVICE_DT_DEINIT_DEFINE
- I2C_DEVICE_DT_INST_DEINIT_DEFINE
- I3C
- CONFIG_I3C_MODE
- CONFIG_I3C_CONTROLLER_ROLE_ONLY
- CONFIG_I3C_TARGET_ROLE_ONLY
- CONFIG_I3C_DUAL_ROLE
- Kernel
- K_TIMEOUT_ABS_SEC
- timespec_add()
- timespec_compare()
- timespec_equal()
- timespec_is_valid()
- timespec_negate()
- timespec_normalize()
- timespec_from_timeout()
- timespec_to_timeout()
- k_heap_array_get()
- LVGL
- 更新到 v9.3
- 支持多屏同时显示,支持输入设备和显示器绑定
- SSD1327、SSD1320、SSD1322 和 ST75256 等显示器添加 L8/Y8 像素格式支持
- CONFIG_LV_Z_COLOR_MONO_HW_INVERSION
- LoRaWAN: lorawan_request_link_check()
- Management
- CONFIG_MCUBOOT_BOOTLOADER_MODE_FIRMWARE_UPDATER
- CONFIG_MCUMGR_GRP_OS_RESET_BOOT_MODE
- 网络:涉及 Coap,DHCPv4,DNS,HTTP,IPv4,LwM2M,MQTT,OpenThread,SNTP, Sockets, WiFi,zperf
- PCIe:CONFIG_NVME_PRP_PAGE_SIZE
- 电源管理
- 传感器
- sensor_value_to_deci()
- sensor_value_to_centi()
- 步进电机:stepper_stop()
- Storage:flash_area_copy()
- Sys
- util_eq()
- util_memeq()
- sys_clock_gettime()
- sys_clock_settime()
- sys_clock_nanosleep()
- USB:uvc_set_video_dev()
- UpdateHub:updatehub_report_error()
- Video: 改动了 API 和结构体,添加了软件视频生成器
- ZBus
- API 发布 1.0.0 版本,已稳定
- runtime 观察者可以静态/动态分配内存
- 增加一些配置项
主板 & 扩展板 链接到标题
新增 96 个主板和 22 个扩展板,详见 release note。 国产芯片的有:
-
乐鑫 ESP32x:
- Adafruit x6
- adafruit_feather_esp32s2
- adafruit_feather_esp32s2_tft
- adafruit_feather_esp32s2_tft_reverse
- adafruit_feather_esp32s3
- adafruit_feather_esp32s3_tft
- adafruit_feather_esp32s3_tft_reverse
- 乐鑫 x1 esp32_devkitc
- Lilygo x4
- tdongle_s3
- ttgo_tbeam
- ttgo_toiplus
- twatch_s3
- M5Stack x1 m5stack_fire
- 微雪 x1 esp32s3_matrix
- Adafruit x6
-
博流 BL60X
- 安信可 x1 ai_wb2_12f
- 博流 x1 bl604e_iot_dvk
- 四博智联 x1 dt_bl10_devkit
-
沁恒 CH32V
- WeAct Studio x1 bluepillplus_ch32v203
- 沁恒 x4
- ch32v003f4p6_dev_board
- ch32v006evt
- ch32v303vct6_evt
- linkw
驱动 链接到标题
涉及多个驱动,详见 release note。
实例 链接到标题
新增 34 个实例,详见 release note。
其它显著的变化 链接到标题
- 添加对 Armv8.1-M MPU 的 PXN(Privileged Execute Never)属性的支持
- Mbed TLS 从 3.6.2 更新至 3.6.4
- TF-M 从 2.1.1 更新至 2.1.2
- 更新所有带有外部 I2C 连接器(Qwiic、Stemma、Grove 等)的开发板,可以使用 zephyr_i2c 标签