ESP32 OTA升级(一)

本文介绍ESP32 OTA远程升级的具体实现方法,包括本地HTTP服务器搭建、OTA工程配置与验证流程,并提供详细步骤指导。
部署运行你感兴趣的模型镜像

ESP32 OTA升级(一)

本文以 examples/system/ota/native_ota_example 为例


前提条件

使用步骤

ESP32模块通过接入wifi,访问同局域网下服务器内固件。

在这里插入图片描述

ESP32的升级需要3块地方的组合:

  • 一是OTA代码部分,这部分需要进行一些必要信息的配置,官方通过python工具idf.py做到对OTA工程代码sdkconfig.h的修改,随后build以及flash进esp32。
    未对代码进行修改的情况下,flash完成后会自动对分区内正在运行的app代码进行验证,同时与服务器端的app代码版本进行对比,不同版本则自动升级,相同版本则进入waiting,等待其他操作。
  • 二是服务器部分(HTTP),测试服务器部分可通过python库 http.server启用。
  • 三是用户app部分,编译完成好的.bin固件存放在http的目录下。
    注意:如果要复用OTA代码,请管理好OTA_TASK以及APP_TASK的生命周期

1.本地http测试服务-python建立

http服务器ip设置

# 在本地建立http的测试服务器
固件存放目录>python -m http.server --bind 192.168.137.1/本地ip 8070/配置端口


2.native_ota_example设置-idf.py menuconfig配置wifi、OTA分区信息

运行指令:

native_ota_example目录>idf.py menuconfig

配置信息:
分区
wifi连接配置

在这里插入图片描述

保存信息:
保存
重新编译及烧录:

native_ota_example目录>idf.py build
native_ota_example目录>idf.py flash monitor

如果下图两处版本不同,flash过程中会自动更新至http服务器内存放的同名固件。相同则不会更新。新旧版本对比逻辑需要自己手动添加,这里不做拓展。
在这里插入图片描述
在这里插入图片描述

若这里idf.py没办法运行,参见 搭建与测试2.

3.升级结果

版本相同:
在这里插入图片描述
版本不同:
在这里插入图片描述


参考资料

  1. ESP32学习笔记-Leung
  2. ESP32空中升级OTA-开源一小步
  3. 官方分区表

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### ESP32 OTA固件升级教程及常见问题 #### 实现HTTP OTA升级的基础设置 对于ESP32而言,通过HTTP协议执行OTA(Over-The-Air)固件升级种便捷的方式,它允许开发者无需物理连接设备即可完成软件更新。为了实现这目标,需搭建个本地或远程的HTTP服务器来托管新的固件文件[^1]。 #### 使用esp_https_ota API进行安全升级 当采用HTTPS方式进行OTA时,`esp_https_ota`组件提供了必要的API支持。此过程不仅涉及资源释放与固件校验,还包括更改OTA数据分区以及更新下载状态至未定义(ESP_OTA_IMG_UNDEFINED),最终调用`esp_restart()`使新固件生效[^2]。 #### 简化开发体验 传统方法依赖于USB转串口线缆来进行程序烧录,而引入OTA特性后极大地方便了迭代部署工作流。用户只需确保网络畅通并遵循相应配置指南就能轻松实施无线更新操作[^3]。 #### 完整流程概述 旦WiFi连接建立完毕,在接收到有效响应之后即刻触发OTA进程;待全部传输完成后重启系统加载最新版本的应用逻辑[^4]。 #### 支持的目标平台列表 值得注意的是,除了ESP32本身外,其他诸如ESP32-C系列(S2/S3/C2/C3/C6)同样兼容此类高级别的HTTPS OTA范例项目结构[^5]。 ```c #include "esp_http_client.h" #include "esp_https_ota.h" void start_ota_update(const char *url){ esp_err_t ret; esp_http_client_config_t config = { .url = url, }; ret = esp_https_ota(&config); if (ret == ESP_OK) { printf("OTA finished successfully\n"); esp_restart(); } else { printf("Error occurred during OTA, error code %d\n", ret); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值