ESP32入门基础之空中升级(OTA)

Posted while(1)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32入门基础之空中升级(OTA)相关的知识,希望对你有一定的参考价值。


参考资料:

  1. 空中升级 (OTA)编程指南
  2. OTA 例程说明

1 OTA简介

2 OTA操作流程

3 OTA操作实例

3.1 使用http实现简单的OTA升级

参考例程:examples\\system\\ota\\simple_ota_example

3.1.1 例程简介

3.1.2 在本地生成简单的HTTP服务器

  1. 选择要升级的程序(bin文件);在这里插入图片描述

  2. 打开命令行界面,并进入到包含要升级的程序的目录文件夹下;在这里插入图片描述

  3. 输入命令 python2 -m SimpleHTTPServer 8070(有些可能是python -m SimpleHTTPServer 8070),并执行;在这里插入图片描述

  4. 保持命令行模式软件不要关闭

  5. 在浏览器输入http://xxx.xxx.xxx.xxx:8070,验证http服务器是否成功;在这里插入图片描述
    命令行界面也有提示输出,执行的是GET操作;
    在这里插入图片描述

  6. 在接下来的实验中也要保持命令行模式不要关闭。

3.1.3 配置simple_ota_example例程

  1. 不要关闭http服务器的命令行界面;
  2. 重新打开一个命令行界面,进入simple_ota_example例程, 使用 idf.py menuconfig 指令进入菜单配置模式;
  3. 配置好串口、所连接的wif、确保分区表有两个OTA分区在这里插入图片描述
  4. 配置要升级的程序的URL在这里插入图片描述
  5. 最后编译程序并烧录到ESP32开发板在这里插入图片描述
  6. 到此说明程序升级完成

3.1.4 程序分析

  1. 芯片初始化及wifi连接
void app_main(void)
{
    /*省略了代码,主要作用是芯片初始化、wifi连接等*/
    xTaskCreate(&simple_ota_example_task, "ota_example_task", 8192, NULL, 5, NULL);
}
void simple_ota_example_task(void *pvParameter)
{
    ESP_LOGI(TAG, "Starting OTA example");

    esp_http_client_config_t config = {
        .url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL, //这里即升级程序的URL,在菜单中配置
        .cert_pem = (char *)server_cert_pem_start,  //https所需要的认证,但这里是http,所以并不需要用到
        .event_handler = _http_event_handler,       
    };
    esp_err_t ret = esp_https_ota(&config);  //连接http,并下载升级程序
    if (ret == ESP_OK) {
        esp_restart();      //下载程序成功,重启即执行升级程序
    } else {
        ESP_LOGE(TAG, "Firmware upgrade failed");
    }
    //一切正常的话不会执行到这里,如下升级程序下载失败则执行下列程序
    while (1) {
        vTaskDelay(1000 / portTICK_PERIOD_MS);
		ESP_LOGI(TAG, "while ---");
    }
}

感觉这个例程没有太大的实用性,只是帮助了解OTA的基本操作。

以上是关于ESP32入门基础之空中升级(OTA)的主要内容,如果未能解决你的问题,请参考以下文章

ESP32学习笔记(25)——OTA(空中升级)接口使用(简化API)

ESP32学习笔记(24)——OTA(空中升级)接口使用(原生API)

给你的 ESP32 进行空中升级

给你的 ESP32 进行空中升级

IoT如何实现 ESP32 固件的 OTA 在线升级更新

58 ESP32 OTA升级(双OTA分区无factory APP)