ESP32 OTA升级(一)

ESP32 OTA升级(一)

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


前提条件

  • ESP32 编译环境
  • 例程1:native_ota_example
  • 例程2:hello_world

使用步骤

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

ESP32 OTA升级(一)_第1张图片

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建立

ESP32 OTA升级(一)_第2张图片

# 在本地建立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

配置信息:
ESP32 OTA升级(一)_第3张图片
ESP32 OTA升级(一)_第4张图片

ESP32 OTA升级(一)_第5张图片

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

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

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

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

3.升级结果

版本相同:
ESP32 OTA升级(一)_第7张图片
版本不同:
ESP32 OTA升级(一)_第8张图片


参考资料

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

你可能感兴趣的:(ESP32笔记,嵌入式,ota,http)