ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ESP-IDF v5.0 组件移除与废弃迁移指南:从 ESP Component Registry 安装与管理组件

ESP-IDF v5.0 组件移除与废弃迁移指南:从 ESP Component Registry 安装与管理组件 ESP-IDF v5.0 组件移除与废弃迁移指南从 ESP Component Registry 安装与管理组件【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf本文基于 ESP-IDF 官方 v5.0 迁移指南系统梳理哪些组件已从主仓库移除并迁往 ESP Component Registry、如何通过idf.py add-dependency重新引入这些组件以及tcpip_adapter、esp_adc_cal等废弃组件的替代方案。读完本文你将掌握 v4.x 工程迁移到 v5.0 时组件的正确获取方式、版本约束语法与头文件路径调整方法避免组件找不到的编译错误。背景为何要移除这些组件随着 ESP-IDF 生态演进组件管理机制逐步走向去中心化。ESP-IDF v5.0 将大量非核心功能组件从主仓库剥离统一交由 ESP Component Registry 托管。这样做的好处是组件可以独立于主框架发布版本、独立修复缺陷用户项目也可以按需精确锁定组件版本而不必跟随整个 IDF 升级节奏。从源码结构看这些组件对应的目录已不在当前仓库的 components/ 中例如mdns、asio、tinyusb、esp_modem等均已迁出。当旧工程仍引用这些组件时构建系统会给出明确提示指引开发者前往组件注册表安装相关提示逻辑可参见 tools/idf_py_actions/hints.ymlThe component could not be found. This could be because: component name was misspelled, the component was not added to the build, the component has been moved to the IDF component manager... Please look out for component in https://components.espressif.com and add using idf.py add-dependency command.迁移到 ESP Component Registry 的组件清单以下是 ESP-IDF v5.0 中从主仓库移除、迁移至 ESP Component Registry 的完整组件列表共 17 个组件注册表中的组件名libsodiumespressif/libsodiumcborespressif/cborjsmnespressif/jsmnesp_modemespressif/esp_modemnghttpespressif/nghttpmdnsespressif/mdnsesp_websocket_clientespressif/esp_websocket_clientasioespressif/asiofreemodbusespressif/esp-modbussh2libespressif/sh2libexpatespressif/expatcoapespressif/coapesp-cryptoauthlibespressif/esp-cryptoauthlibqrcodeespressif/qrcodetjpgdespressif/esp_jpegesp_serial_slave_linkespressif/esp_serial_slave_linktinyusbespressif/esp_tinyusb需要注意的一个特例是nghttp原属于nghttp组件的 HTTP 解析器功能并未随组件迁出而是并入了主仓库的http_parser组件见 components/http_parser/。提示迁移后的组件名可能与原组件名不同例如freemodbus在注册表中叫esp-modbustjpgd对应esp_jpegtinyusb对应esp_tinyusb。安装时请以上表右侧的注册表名称为准。使用 idf.py add-dependency 安装迁移组件迁移后的组件不再由menuconfig或组件目录管理而是通过 ESP-IDF 内置的组件管理器以依赖清单方式引入。安装命令为idf.py add-dependency DEPENDENCYDEPENDENCY的完整格式为namespace/name版本约束例如espressif/libsodium。默认情况下依赖会被添加到main组件也可以通过--component或--path参数指定目标组件相关语法细节可参考 docs/en/api-guides/tools/idf-component-manager.rst。精确版本安装指定安装组件 X.Y 的确切版本使用idf.py add-dependency libsodiumX.Y兼容版本安装按 semver 规则安装与 X.Y 兼容的最新版本使用~波浪号允许补丁版本升级不允许次版本升级idf.py add-dependency libsodium~X.Y~是 semver 语义化版本约束中的常用操作符~X.Y表示X.Y且X.(Y1)即允许修复缺陷的补丁版本但不引入新的功能版本。查看可用版本要确认某个组件在注册表中发布了哪些版本打开 https://components.espressif.com按组件名搜索并查看其页面上的版本列表即可。已废弃组件与替代方案以下组件在 ESP-IDF v4.x 中已被标记废弃并在 v5.0 中正式移除。tcpip_adapter迁移到 ESP-NETIFtcpip_adapter是 v4.1 之前用于网络接口抽象的组件v5.0 中已移除应改用 ESP-NETIF 组件API 文档见 docs/en/api-reference/network/esp_netif.rst。完整的迁移步骤在 docs/en/migration-guides/release-5.x/5.0/networking.rst核心改动包括将tcpip_adapter_init()替换为esp_netif_init()注意新函数返回标准错误码将#include tcpip_adapter.h替换为#include esp_netif.h原tcpip_adapter_get_sta_list()已迁至 Wi-Fi 组件并更名为esp_wifi_ap_get_sta_list_with_ip()其通用形式是esp_netif_dhcps_get_clients_by_mac()事件处理器从tcpip_adapter迁移到对应驱动代码应用层处理方式不变IP 相关事件中应用代码收到的地址结构改为 ESP-NETIF 专用结构与 LwIP 结构二进制兼容。OpenSSL-API改用 ESP-TLS 或 mbedtlsOpenSSL-API 组件不再受支持且未进入 ESP Component Registry因此无法通过add-dependency获取。请改用 ESP-TLS见 docs/en/api-reference/protocols/esp_tls.rst或直接使用 mbedtls 组件 API见 components/mbedtls/。esp_adc_cal迁移到新 ADC 校准驱动esp_adc_cal组件不再受支持。新的 ADC 校准驱动位于esp_adc组件见 components/esp_adc/头文件为esp_adc/adc_cali.h和esp_adc/adc_cali_scheme.h。详细迁移说明见 docs/en/migration-guides/release-5.x/5.0/peripherals.rst旧驱动仍可通过#include esp_adc_cal.h使用但需要在 CMakeLists.txt 的组件依赖列表REQUIRES或PRIV_REQUIRES中加入esp_adc且默认会触发如下构建警告legacy adc calibration driver is deprecated, please migrate to use esp_adc/adc_cali.h and esp_adc/adc_cali_scheme.hAPI 级迁移映射esp_adc_cal_characterize→adc_cali_create_scheme_curve_fitting或adc_cali_create_scheme_line_fittingesp_adc_cal_raw_to_voltage→adc_cali_raw_to_voltageesp_adc_cal_get_voltage→adc_oneshot_get_calibrated_result重构后不再需要的 Target 组件在 ESP-IDF 内部架构重构后以下按芯片目标划分的组件已不再作为独立组件存在一并被移除esp32esp32s2esp32s3esp32c2esp32c3esp32h2这些组件的职责已被soc、hal、esp_hal_*、esp_common等跨目标组件吸收开发者无需在工程中显式依赖它们。迁移排查建议在 v4.x 工程升级到 v5.0 时如果构建报错提示找不到某个组件可按以下顺序排查对照上文迁移到 ESP Component Registry 的组件清单确认该组件是否属于迁移名单若在名单中在工程根目录执行idf.py add-dependency namespace/name并按要求调整#include路径若组件属于废弃名单tcpip_adapter、OpenSSL-API、esp_adc_cal按对应替代方案改写代码若报错涉及usb、esp_tinyusb、touch_element等组件构建系统的错误提示见 tools/idf_py_actions/hints.yml会直接给出对应的idf.py add-dependency命令按提示执行即可。组件管理器相关的测试用例可参考 tools/test_build_system/test_component_manager.py其中覆盖了add-dependency的默认组件添加与--component指定组件两种用法可作为验证命令行为的参考。【免费下载链接】esp-idfEspressif IoT Development Framework. Official development framework for Espressif SoCs.项目地址: https://gitcode.com/GitHub_Trending/es/esp-idf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表