ESP-IDF-OTA远程升级简单介绍(图文超详细~)

发布时间:2026/7/17 21:17:23

ESP-IDF-OTA远程升级简单介绍(图文超详细~) 目录一、新建工程二、对报错进行修改三、配置工程 WiFi 功能四、连接巴法云物联网平台五、OTA 进行固件升级摘要本文以 ESP32-P4-WIFI6-DEV-KIT 开发板和 VSCode ESP-IDF 环境为例记录新建工程、解决跨盘编译报错、配置 WiFiC6SDIO、接入巴法云 MQTT 平台并通过 OTA 实现固件升级的完整过程。工具准备开发板ESP32-P4-WIFI6-DEV-KIT开发环境VSCode ESP-IDF物联网云平台巴法云物联网平台一、新建工程直接搜索ota选择原生ota升级根据这个原生ota新建工程根据需求对新建的工程进行一些必要修改新建好后打开工程对新建好的工程进行编译发现有很多报错二、对报错进行修改这个报错说的是工程在 E 盘ESP-IDF 在 D 盘可以看到 idf_component.yml 文件引用了 D 盘的本地组件因为我的 ESP-IDF 安装在 D 盘如果是同一个盘就不会报错……。ESP-IDF 6.0.1 组件管理器处理跨盘相对路径时报错其实把工程移到 D 盘就可以完全解决报错问题最简单但是我不想移那怎么办呢工程继续放在 E 盘将 main\idf_component.yml 文件重命名为 main\idf_component.yml.disabled2. 修改 CMakeLists.txt 文件在include(...)前增加cmake_minimum_required(VERSION 3.22) set(EXTRA_COMPONENT_DIRS $ENV{IDF_PATH}/examples/common_components/protocol_examples_common ) include($ENV{IDF_PATH}/tools/cmake/project.cmake) idf_build_set_property(MINIMAL_BUILD ON) project(native_ota_example)3. 修改 main/CMakeLists.txt在PRIV_REQUIRES后增加protocol_examples_commonidf_component_register( SRCS native_ota_example.c INCLUDE_DIRS . PRIV_REQUIRES esp_http_client app_update nvs_flash esp_driver_gpio esp_netif esp_wifi protocol_examples_common EMBED_TXTFILES ${project_dir}/server_certs/ca_cert.pem )然后再删除工程里的 build 文件夹再编译就发现没有报错了三、配置工程 WiFi 功能先点击 SDK 配置编辑器再搜索 wifi发现只出来了 Host WiFi Enable这个Host WiFi Enable是ESP32-P4 外接 Wi‑Fi 控制器的总开关对应CONFIG_ESP_HOST_WIFI_ENABLEDy。它不是填写 Wi-Fi 账号密码的选项。本次测试使用的开发板是ESP32-P4-WIFI6-DEV-KIT不是普通 ESP32-P4而是ESP32-P4运行 OTA 主程序ESP32-C6通过 SDIO 提供 Wi‑Fi 6 / BLEIP101提供 RJ45 有线网络我们需要使用 WiFi 来进行 OTA 升级的话还需要进行以下配置在 VS Code 中执行Ctrl Shift P → ESP-IDF: Open ESP-IDF Terminal打开 ESP-IDF 终端然后运行以下代码idf.py add-dependency espressif/esp_wifi_remote1.6,2.0 idf.py add-dependency espressif/esp_hosted2.12,3.0运行结果完成后执行ESP-IDF: Full Clean Project。打开ESP-IDF: SDK Configuration Editor。然后我们再去配置 WiFi。先搜索 wifi发现多了个 connect using WiFi interface我们勾选上就会出来很多 WiFi 相关的配置我们对 WiFi 进行设置设置好后记得保存注意WiFi 连接手机热点的话必须要是 2.4GHz 频段的安卓手机可以手动选择苹果手机的话打开最大兼容性就是 2.4GHz 频段的。配置好后删除 build 文件再进行编译发现还是有很多报错……这个报错主要是因为esp_wifi_remote 1.6.2使用完整版本号6.0.1查找 Kconfig但组件只有6.0对应文件。这与乐鑫官方 Issue #85 描述的问题机制一致。解决办法1在 settings.json 中添加ESP_IDF_VERSION:6.02在 sdkconfig.defaults 固化 C6 SDIO 配置添加以下配置# ESP32-P4-WIFI6-DEV-KIT: onboard ESP32-C6 connected over SDIO CONFIG_SLAVE_IDF_TARGET_ESP32C6y CONFIG_ESP_HOSTED_CP_TARGET_ESP32C6y CONFIG_ESP_HOSTED_P4_DEV_BOARD_FUNC_BOARDy CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACEy然后然后就编译成功啦好的现在已经没有太大的问题了我们需要手动加入一些代码方便我们更直观地观察。先对当前工程设置版本号我这边设置为 1 版本然后获取当前工程版本号直接加到主函数里printf(---------------------------------\n); const esp_app_desc_t *desc; desc esp_app_get_description(); ESP_LOGI(TAG, Current firmware version: %s, desc-version);添加好后编译没报错就行。四、连接巴法云物联网平台登录好巴法云平台后创建一个新的 MQTT 设备点击 OTA上传前面工程生成的 .bin 文件一般是工程名.bin上传好之后就会有一个固件地址我们需要把这个地址放入我们的工程里。复制好的固件地址放到工程里的 URL 里配置好后进行保存。然后就烧录代码在终端可以看到打印出来的当前工程的版本号五、OTA 进行固件升级现在版本 1 已经烧录到板子上了我们需要进行固件升级需要手动修改一下方便我们观察。1. 我们先修改版本号2. 修改3. 修正当前 sdkconfig 文件中的 H2 SPI 残留。我们只需要对工程进行编译就行不要烧录仅编译不烧录然后再把生成好的 .bin 文件上传到巴法云平台上传好后就变成了版本 2我们再回到工程里打开监视器看到的现象发现了新版本能看到版本号变成了 2到这里就升级成功了如果要接入别的平台也可以试试……

相关新闻