ESP32-简单OTA升级

发布者:breakthrough3最新更新时间:2025-09-10 来源: cnblogs关键字:ESP32  OTA升级 手机看文章 扫描二维码
随时随地手机看文章

基于ESP-IDF4.1


  1 #include 'freertos/FreeRTOS.h'

  2 #include 'freertos/task.h'

  3 #include 'esp_system.h'

  4 #include 'esp_event.h'

  5 #include 'esp_log.h'

  6 #include 'esp_ota_ops.h'

  7 #include 'esp_http_client.h'

  8 #include 'esp_https_ota.h'

  9 #include 'protocol_examples_common.h'

 10 #include 'string.h'

 11 

 12 #include 'nvs.h'

 13 #include 'nvs_flash.h'

 14 #include 'protocol_examples_common.h'

 15 

 16 #if CONFIG_EXAMPLE_CONNECT_WIFI

 17 #include 'esp_wifi.h'

 18 #endif

 19 

 20 static const char *TAG = 'simple_ota_example';

 21 extern const uint8_t server_cert_pem_start[] asm('_binary_ca_cert_pem_start');

 22 extern const uint8_t server_cert_pem_end[] asm('_binary_ca_cert_pem_end');

 23 

 24 #define OTA_URL_SIZE 256 

 25 

 26 //http事件处理程序

 27 esp_err_t _http_event_handler(esp_http_client_event_t *evt)

 28 {

 29     switch (evt->event_id) {

 30     case HTTP_EVENT_ERROR:

 31         ESP_LOGD(TAG, 'HTTP_EVENT_ERROR');

 32         break;

 33     case HTTP_EVENT_ON_CONNECTED:

 34         ESP_LOGD(TAG, 'HTTP_EVENT_ON_CONNECTED');

 35         break;

 36     case HTTP_EVENT_HEADER_SENT:

 37         ESP_LOGD(TAG, 'HTTP_EVENT_HEADER_SENT');

 38         break;

 39     case HTTP_EVENT_ON_HEADER:

 40         ESP_LOGD(TAG, 'HTTP_EVENT_ON_HEADER, key=%s, value=%s', evt->header_key, evt->header_value);

 41         break;

 42     case HTTP_EVENT_ON_DATA:

 43         ESP_LOGD(TAG, 'HTTP_EVENT_ON_DATA, len=%d', evt->data_len);

 44         break;

 45     case HTTP_EVENT_ON_FINISH:

 46         ESP_LOGD(TAG, 'HTTP_EVENT_ON_FINISH');

 47         break;

 48     case HTTP_EVENT_DISCONNECTED:

 49         ESP_LOGD(TAG, 'HTTP_EVENT_DISCONNECTED');

 50         break;

 51     }

 52     return ESP_OK;

 53 }

 54 

 55 //OTA任务

 56 void simple_ota_example_task(void *pvParameter)

 57 {

 58     ESP_LOGI(TAG, 'Starting OTA example');

 59 

 60     esp_http_client_config_t config = {

 61         .url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL,

 62         .cert_pem = (char *)server_cert_pem_start,

 63         .event_handler = _http_event_handler,

 64     };

 65 

 66 #ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL_FROM_STDIN

 67     char url_buf[OTA_URL_SIZE];

 68     if (strcmp(config.url, 'FROM_STDIN') == 0) {

 69         example_configure_stdin_stdout();

 70         fgets(url_buf, OTA_URL_SIZE, stdin);

 71         int len = strlen(url_buf);

 72         url_buf[len - 1] = '';

 73         config.url = url_buf;

 74     } else {

 75         ESP_LOGE(TAG, 'Configuration mismatch: wrong firmware upgrade image url');

 76         abort();

 77     }

 78 #endif

 79 

 80 #ifdef CONFIG_EXAMPLE_SKIP_COMMON_NAME_CHECK

 81     config.skip_cert_common_name_check = true;

 82 #endif

 83 

 84     esp_err_t ret = esp_https_ota(&config);

 85     if (ret == ESP_OK) {

 86         esp_restart();

 87     } else {

 88         ESP_LOGE(TAG, 'Firmware upgrade failed');

 89     }

 90     while (1) {

 91         vTaskDelay(1000 / portTICK_PERIOD_MS);

 92     }

 93 }

 94 

 95 void app_main(void)

 96 {

 97     // 初始化非易失性存储

 98     esp_err_t err = nvs_flash_init();

 99     if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {

100         //1.OTA应用程序分区表的NVS分区大小比非OTA分区表小。这种大小不匹配可能导致NVS初始化失败.

101         //2.NVS分区包含新格式的数据,此版本的代码无法识别。如果发生这种情况,我们将擦除NVS分区并再次初始化NVS.

102         ESP_ERROR_CHECK(nvs_flash_erase());

103         err = nvs_flash_init();

104     }

105     ESP_ERROR_CHECK(err);

106 

107     ESP_ERROR_CHECK(esp_netif_init());

108     ESP_ERROR_CHECK(esp_event_loop_create_default());

109 

110     //连接网络

111     ESP_ERROR_CHECK(example_connect());

112 

113 #if CONFIG_EXAMPLE_CONNECT_WIFI

114     //确保禁用低功耗模式,这样可以提供最佳的吞吐量,从而为整个OTA操作节省时间

115     esp_wifi_set_ps(WIFI_PS_NONE);

116 #endif

117 

118     xTaskCreate(&simple_ota_example_task, 'ota_example_task', 8192, NULL, 5, NULL);

119 }


关键字:ESP32  OTA升级 引用地址:ESP32-简单OTA升级

上一篇:ESP32-OTA升级
下一篇:ESP32-默认事件循环

推荐阅读最新更新时间:2026-03-25 11:10

ESP32-简单OTA升级
基于ESP-IDF4.1 1 #include freertos/FreeRTOS.h 2 #include freertos/task.h 3 #include esp_system.h 4 #include esp_event.h 5 #include esp_log.h 6 #include esp_ota_ops.h 7 #include esp_http_client.h 8 #include esp_https_ota.h 9 #include protocol_examples_common.h 10 #include string.h 11 12 #include nvs
[单片机]
ESP32-OTA升级
基于ESP-IDF4.1 1 #include string.h 2 #include freertos/FreeRTOS.h 3 #include freertos/task.h 4 #include esp_system.h 5 #include esp_event.h 6 #include esp_log.h 7 #include esp_ota_ops.h 8 #include esp_http_client.h 9 #include esp_flash_partitions.h 10 #include esp_partition.h 11 #include nvs.h 12 #
[单片机]
一文详解OTA无感升级技术
OTA正在成为智能汽车不可或缺的关键能力,其具备的减少召回成本、快速响应安全需求、提升用户体验等优势,可以通过远程实现功能的持续迭代,在发现软件故障或漏洞的时候,及时快速地实现线上召回,极大地减少车企线下服务压力和运营成本。 然而“OTA升级”这件事情本身,也不是那么容易的事情,部分新势力造车因升级在路上“趴窝”的事情也不在少数。随着汽车智能化的发展,主机厂以及消费者对OTA的期待不断上升,为了给车主更好的升级体验,很多主机厂宣布实现“无感化”OTA升级。2021广州车展上,小鹏汽车发布了最新一代的 X-EEA3.0 电子电气架构。该电子电气架构的域控制器均作内存分区,一个区用于升级,一个区用于车辆正常运行,从而在升级期间不影
[嵌入式]
华为乾崑智驾ADS 3.0来了 阿维塔11/12迎来OTA 智驾/智能座舱升级
9月23日,我们从官方获悉,阿维塔11(参数|询价)、12车型将迎来AVATR.OS 4.0.0版本OTA升级,并将陆续全量推送,华为乾��智驾升级ADS 3.0,全面升级智能驾驶和智能座舱体验。具体信息如下: 车辆将升级全新ADS 3.0的城区智驾领航辅助(City NCA)。新增城区智驾领航辅助路边启动功能、ADS App地图页面智驾服务面板、临时变道应急车道或非机动车道避让成排锥桶功能、道路施工场景文言提示、ADS APP行程总结页面支持智驾数据显示、路面颠簸场景自动降速、离车泊入功能、泊车姿势调整功能、泊车辅助机械车位泊车功能、循迹倒车功能、园区代客泊车功能、对向车辆和骑行人/同向斜穿目
[汽车电子]
华为乾崑智驾ADS 3.0来了 阿维塔11/12迎来<font color='red'>OTA</font> 智驾/智能座舱<font color='red'>升级</font>
新增连续语音识别/悬架记忆调节等功能 星途瑶光推送OTA升级
日前,我们从星途汽车官方获悉,旗下中型SUV 星途瑶光 ( 参数 | 询价 ) 开启了最新的OTA升级推送,此次升级包括新增连续语音识别、悬架记忆调节以及手机遗忘提醒等功能。不过本次OTA升级仅限瑶光燃油版车型,不包括瑶光C-DM(插电混动版)车型。具体OTA升级详情如下: 新增语音流式识别功能,即发出语音连续指令时无需停顿,系统能够边识别边执行; 新增悬架记忆调节,该功能可以记忆你的驾驶习惯,自动调节悬架设定; 新增手机遗忘提醒功能; 新增氛围灯联动碰撞预警,在紧急情况下,氛围灯瞬间变为红色,以提醒驾驶者注意安全。 此外,在本次OTA升级中,瑶光车型还优化了部分功能的使用体验,具体优化详情如下:
[汽车电子]
新增连续语音识别/悬架记忆调节等功能 星途瑶光推送<font color='red'>OTA</font><font color='red'>升级</font>
理想汽车发布OTA 5.0 智能驾驶 智能空间全面升级
12月10日,理想汽车正式发布OTA 5.0,并宣布计划于12月19日开启全量用户推送。通过智能驾驶(AD Max 3.0)、智能空间(SS 3.0)和智能增程(REV 3.0)三大软件升级,OTA 5.0为理想L系列车型带来产品力全面进化,成为理想汽车史上最强OTA。 智能驾驶平台,理想L系列的Max车型升级为AD Max 3.0,全场景智能驾驶(NOA)、全场景辅助驾驶(LCC)、智能泊车和主动安全能力全面升级。智能空间平台,Mind GPT大模型在SS 3.0中开启内测,让理想同学成为全家人的用车助手、出行助手、娱乐助手和“百科老师”。同时,智能增程平台的感知和控制算法迎来关键优化,REV 3.0帮助理想L系列冬季纯电续
[汽车电子]
理想汽车发布<font color='red'>OTA</font> 5.0 智能驾驶 智能空间全面<font color='red'>升级</font>
CarPlay 上线 深蓝 S7 迎来新一轮 OTA 升级
10 月 10 日,根据官方宣布,深蓝 S7 迎来新一轮 OTA 升级,版本升至 Deepal OS 1.3.5。 此次升级主要优化了交互手绘功能、后备箱蓝牙感应功能、自动下电功能体验以及 NVH;在生态应用上也上线了手机互联(包括 CarPlay、HiCar、ICCOA CarLink)、荔枝播客、冰与火之舞应用。 此前,长安深蓝也公布了 9 月销量成绩,9 月总交付新车 17,370 辆,其中深蓝 S7 上市两月连续月交付破万。
[汽车电子]
CarPlay 上线 深蓝 S7 迎来新一轮 <font color='red'>OTA</font> <font color='red'>升级</font>
百度地图5.0上线,福特电马今年第二波OTA升级来袭
日前, 福特电马 ( 参数 | 询价 ) 将对中国用户推送新一轮OTA升级包,用户高频使用的地图功能也持续进化,百度地图5.0在架构、引擎、界面、功能四大核心方面全面升级,有效提升路径规划计算速度,实现地图定位更精准、操作流程更精简、功能层级更优化。 此次OTA空中升级将于4月6日起陆续分批次推送,除百度地图5.0外,360°全景影像、智能旋钮、模拟声浪等功能也将同步优化,为中国的福特电马用户带来更多实用功能升级,持续提升智能化水平与用户体验。 出行体验自在无忧,百度地图5.0满足多场景需求 百度地图5.0将全面优化导航体验,满足更多驾驶场景需求。其中包括新增熟路模式,这一模式专为熟悉路段导航设计,和日常导航模式相比,
[汽车电子]
百度地图5.0上线,福特电马今年第二波<font color='red'>OTA</font><font color='red'>升级</font>来袭
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved