ESP-IDF 5.0 系统组件迁移指南

ESP-IDF 5.0 系统组件迁移指南

esp-idf Espressif IoT Development Framework. Official development framework for Espressif SoCs. esp-idf 项目地址: https://gitcode.com/gh_mirrors/es/esp-idf

前言

随着 ESP-IDF 5.0 版本的发布,系统组件进行了多项重要变更。本文将为开发者详细解析这些变更内容,帮助您顺利完成项目迁移。

处理器间通信(IPC)变更

在 ESP-IDF 5.0 中,IPC (Inter-Processor Call)功能不再是一个独立组件,而是被整合到了 esp_system 组件中。这意味着:

  • 项目中所有 CMakeLists.txt 文件里包含 PRIV_REQUIRES esp_ipcREQUIRES esp_ipc 的配置都应删除
  • 由于 esp_system 组件默认已包含,无需额外声明依赖

时钟系统API变更

ESP 时钟 API(以 esp_clk 为前缀的函数/类型/宏)已被调整为私有 API:

  • 原包含路径 #include "{IDF_TARGET_NAME}/clk.h"#include "esp_clk.h" 已被移除
  • 如需使用(不推荐),可通过 #include "esp_private/esp_clk.h" 引入

重要提示:私有 API 不稳定且不受版本兼容性规则约束,建议开发者避免使用。

缓存错误中断API变更

缓存错误中断 API(以 esp_cache_err 为前缀)同样调整为私有:

  • 原路径 #include "{IDF_TARGET_NAME}/cache_err_int.h" 已移除
  • 如需使用,改为 #include "esp_private/cache_err_int.h"

Bootloader支持变更

bootloader支持组件有以下重要变更:

  1. bootloader_common_get_reset_reason() 函数已移除,改用 ROM 组件中的 esp_rom_get_reset_reason()
  2. 安全启动相关函数 esp_secure_boot_verify_sbv2_signature_block()esp_secure_boot_verify_rsa_signature_block() 已移除且无替代方案

低电压检测(Brownout)API变更

Brownout API(以 esp_brownout 为前缀)调整为私有:

  • 原路径 #include "brownout.h" 已移除
  • 如需使用,改为 #include "esp_private/brownout.h"

硬件支持组件变更

esp_hw_support 组件有多项重要变更:

  1. 头文件 soc/cpu.h 已删除,CPU 工具函数已弃用,应改用 esp_cpu.h
  2. 多个 HAL 层头文件已弃用,统一改用 esp_cpu.h
  3. compare_set.h 已删除,改用 esp_cpu.h 中的 esp_cpu_compare_and_set()
  4. 多个 CPU 相关函数名称变更:
    • esp_cpu_get_ccount()esp_cpu_get_cycle_count()
    • esp_cpu_set_ccount()esp_cpu_set_cycle_count()
    • esp_cpu_in_ocd_debug_mode()esp_cpu_dbgr_is_attached()
  5. esp_intr.h 已删除,改用 esp_intr_alloc.h 管理中断
  6. Panic API 调整为私有,原路径 #include "esp_panic.h" 改为 #include "esp_private/panic_reason.h"

PSRAM管理变更

PSRAM/SPIRAM 相关管理有重大调整:

  • 目标特定头文件 spiram.hesp_spiram.h 已移除
  • 新增 esp_psram 组件,相关函数现在通过 esp_psram.h 提供
  • 函数变更:
    • esp_spiram_get_chip_sizeesp_spiram_get_size 已删除
    • 改用 esp_psram_get_size

eFuse管理变更

eFuse 相关 API 有以下变更:

  1. esp_secure_boot_read_key_digests() 参数类型从 ets_secure_boot_key_digests_t* 改为 esp_secure_boot_key_digests_t*
  2. 新增晶圆版本号(主/次版本)支持:
    • 移除 esp_efuse_get_chip_ver()
    • 新增替代 API:
      • efuse_hal_get_major_chip_version()
      • efuse_hal_get_minor_chip_version()
      • efuse_hal_chip_revision()

系统组件变更

esp_system 组件有以下变更:

  1. 头文件包含方式变更:
    • esp_random.hesp_mac.hesp_chip_info.h 不再通过 esp_system.h 间接包含
    • 需要显式包含这些头文件
  2. 多个 API 调整为私有:
    • Backtrace Parser API(eh_frame_parser.hesp_private/eh_frame_parser.h
    • 中断看门狗 API(esp_int_wdt.hesp_private/esp_int_wdt.h

FreeRTOS相关变更

兼容性变更

默认禁用 configENABLE_BACKWARD_COMPATIBILITY 选项,意味着:

  • 不再默认支持 FreeRTOS v8.0.0 之前的函数名和数据类型
  • 开发者需要:
    • 更新代码使用新API
    • 或显式启用 CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY

任务快照变更

  • task_snapshot.h 不再通过 freertos/task.h 包含
  • 如需使用任务快照API,需显式包含 freertos/task_snapshot.h
  • vTaskGetSnapshot() 现在返回 BaseType_t 类型(成功返回 pdTRUE

端口宏API变更

移除 portmacro_deprecated.h,替代方案:

| 已移除函数 | 替代方案 | |------------|----------| | portENTER_CRITICAL_NESTED() | portSET_INTERRUPT_MASK_FROM_ISR() | | portEXIT_CRITICAL_NESTED() | portCLEAR_INTERRUPT_MASK_FROM_ISR() | | vPortCPUInitializeMutex() | spinlock_initialize() | | vPortCPUAcquireMutex() | spinlock_acquire() | | vPortCPUAcquireMutexTimeout() | spinlock_acquire() | | vPortCPUReleaseMutex() | spinlock_release() |

应用更新变更

  • 弃用函数:
    • esp_ota_get_app_description()esp_app_get_description()
    • esp_ota_get_app_elf_sha256()esp_app_get_elf_sha256()
  • 这些函数已移至新组件 esp_app_format

芯片版本检查

Bootloader 在加载应用时会检查芯片版本:

  1. 应用加载条件:
    • 版本 ≥ CONFIG_{IDF_TARGET_CFG_PREFIX}_REV_MIN
    • 版本 < CONFIG_{IDF_TARGET_CFG_PREFIX}_REV_MAX_FULL
  2. OTA 升级时同样会检查版本兼容性

总结

ESP-IDF 5.0 对系统组件进行了大量重构和优化,主要方向是:

  1. 统一API接口(如CPU相关操作统一到 esp_cpu.h
  2. 清理过时API和头文件
  3. 增强模块化设计
  4. 提高代码一致性

开发者应根据本文指南逐步检查项目代码,完成必要的修改。对于不确定的变更,建议查阅最新版本文档或寻求技术支持。

esp-idf Espressif IoT Development Framework. Official development framework for Espressif SoCs. esp-idf 项目地址: https://gitcode.com/gh_mirrors/es/esp-idf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏献源Searcher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值