ESP32-C3模组上跑通OTA升级(11)

接前一篇文章:ESP32-C3模组上跑通OTA升级(10)

本文内容参考:

《ESP3-C3 物联网工程开发实战》 乐鑫科技

特此致谢!

上一回说到解决了证书验证的问题,但紧接着又出现了一个新的问题:版本相同无法升级。本回就来讲解一下这个问题如何解决,并也给出正常OTA的显示。

八、程序调试过程中遇到的问题及解决

2. Current running version is the same as a new. We will not continue the update.问题

详细的问题log如下:

I (22596) esp_https_ota: Starting OTA...
I (22596) esp_https_ota: Writing to partition subtype 17 at offset 0x190000
I (22596) Wi-Fi Module: Reading Image Description
I (22606) Wi-Fi Module: Running firmware version: 1
W (22616) Wi-Fi Module: Current running version is the same as a new. We will not continue the update.
E (22626) Wi-Fi Module: image header verification failed
I (22626) Wi-Fi Module: OTA abort
E (22636) Wi-Fi Module: ESP_HTTPS_OTA upgrade failed

之所以会出现这个问题,是因为笔者之前在之前研究固件版本管理的时候(参见ESP32-C3模组上跑通OTA升级(8)-CSDN博客),在menuconfig中进行了设置,如下图所示:

制作升级文件的时候,也忘记把它去掉了。

笔者尝试了以下解决方法:

(1)在menuconfig中去掉以上选项

如下图所示:

保存退出,编译并运行。结果发现问题依旧,这个方法行不通。

(2)配置menuconfig,OTA时不进行版本检查

经过代码定位,发现以上提示信息出自于main\advanced_https_ota_example.c的validate_image_header函数中,代码片段如下:

#ifndef CONFIG_EXAMPLE_SKIP_VERSION_CHECK
    if (memcmp(new_app_info->version, running_app_info.version, sizeof(new_app_info->version)) == 0) {
        ESP_LOGW(TAG, "Current running version is the same as a new. We will not continue the update.");
        return ESP_FAIL;
    }
#endif

可以看到,版本检查时通过宏CONFIG_EXAMPLE_SKIP_VERSION_CHECK控制的。这个宏对应到menuconfig中是如下配置项:

将“Skip firmware version check”项设置为“*”即选中:

保存退出,编译并运行。结果发现是可以正常升级的,此方法行得通。

(3)将固件版本修改为不同值

本方法既无须选中“Skip fireware version check”项,也无须不勾选“Get the project version from Kconfig”项,而是将固件版本修改为不同值。如下所示:

或者

保存退出,编译并运行。结果发现是可以正常升级的,此方法也行得通。

接下来,看一下最终成功进行OTA的完整过程。完整的log如下:

……
I (10776) Wi-Fi Module: OTA started
W (10776) esp_https_ota: Continuing with insecure option because CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is set.       
I (11676) Wi-Fi Module: Connected to server
I (11676) esp_https_ota: Starting OTA...
I (11676) esp_https_ota: Writing to partition subtype 17 at offset 0x190000
I (11686) Wi-Fi Module: Reading Image Description
I (11876) Wi-Fi Module: Running firmware version: 0
I (11876) Wi-Fi Module: Verifying chip id of new image: 5
I (19926) esp_image: segment 0: paddr=00190020 vaddr=3c020020 size=0b580h ( 46464) map
I (19936) esp_image: segment 1: paddr=0019b5a8 vaddr=3fc8c800 size=0128ch (  4748)
I (19936) esp_image: segment 2: paddr=0019c83c vaddr=40380000 size=037dch ( 14300)
I (19946) esp_image: segment 3: paddr=001a0020 vaddr=42000020 size=1ec5ch (126044) map
I (19966) esp_image: segment 4: paddr=001bec84 vaddr=403837dc size=08f20h ( 36640) 
I (19976) esp_image: segment 0: paddr=00190020 vaddr=3c020020 size=0b580h ( 46464) map
I (19986) esp_image: segment 1: paddr=0019b5a8 vaddr=3fc8c800 size=0128ch (  4748)
I (19986) esp_image: segment 2: paddr=0019c83c vaddr=40380000 size=037dch ( 14300) 
I (19996) esp_image: segment 3: paddr=001a0020 vaddr=42000020 size=1ec5ch (126044) map
I (20016) esp_image: segment 4: paddr=001bec84 vaddr=403837dc size=08f20h ( 36640) 
I (20096) Wi-Fi Module: Boot partition updated. Next Partition: 17
I (20096) Wi-Fi Module: OTA finish
I (20096) Wi-Fi Module: ESP_HTTPS_OTA upgrade successful. Rebooting ...
I (21096) wifi:state: run -> init (0)
I (21096) wifi:pm stop, total sleep time: 940136 us / 17407619 us

I (21096) wifi:<ba-del>idx:0, tid:0
I (21096) wifi:new:<1,0>, old:<1,1>, ap:<255,255>, sta:<1,1>, prof:1
E (21106) transport_base: poll_read select error 113, errno = Software caused connection abort, fd = 54        
E (21106) mqtt_client: Poll read error: 119, aborting connection
I (21116) wifi:flush txq
I (21116) wifi:stop sw txq
I (21116) wifi:lmac stop hw txq
I (21126) Wi-Fi Module: MQTT_EVENT_DISCONNECTED
I (21126) wifi:Deinit lldesc rx mblock:10
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0xc (RTC_SW_CPU_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
Saved PC:0x403806bc
0x403806bc: esp_restart_noos at C:/Espressif/frameworks/esp-idf-v5.2.1/components/esp_system/port/soc/esp32c3/system_internal.c:111

SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5820,len:0x1738
load:0x403cc710,len:0xb9c
load:0x403ce710,len:0x2e40
entry 0x403cc71a
I (35) boot: ESP-IDF v5.2.1-dirty 2nd stage bootloader
I (35) boot: compile time Jun  1 2024 13:49:40
I (35) boot: chip revision: v0.4
I (39) boot.esp32c3: SPI Speed      : 80MHz
I (43) boot.esp32c3: SPI Mode       : DIO
I (48) boot.esp32c3: SPI Flash Size : 4MB
I (53) boot: Enabling RNG early entropy source...
I (58) boot: Partition Table:
I (62) boot: ## Label            Usage          Type ST Offset   Length
I (69) boot:  0 nvs              WiFi data        01 02 00009000 00004000
I (77) boot:  1 otadata          OTA data         01 00 0000d000 00002000
I (84) boot:  2 phy_init         RF data          01 01 0000f000 00001000
I (91) boot:  3 ota_0            OTA app          00 10 00010000 00180000
I (99) boot:  4 ota_1            OTA app          00 11 00190000 00180000
I (106) boot:  5 nvs_2            WiFi data        01 02 00310000 0004b000
I (114) boot: End of partition table
I (118) esp_image: segment 0: paddr=00190020 vaddr=3c020020 size=0b580h ( 46464) map
I (134) esp_image: segment 1: paddr=0019b5a8 vaddr=3fc8c800 size=0128ch (  4748) load
I (136) esp_image: segment 2: paddr=0019c83c vaddr=40380000 size=037dch ( 14300) load
I (146) esp_image: segment 3: paddr=001a0020 vaddr=42000020 size=1ec5ch (126044) map
I (172) esp_image: segment 4: paddr=001bec84 vaddr=403837dc size=08f20h ( 36640) load
I (183) boot: Loaded app from partition at offset 0x190000
I (183) boot: Disabling RNG early entropy source...
I (194) cpu_start: Unicore app
I (203) cpu_start: Pro cpu start user code
I (203) cpu_start: cpu freq: 160000000 Hz
I (203) cpu_start: Application information:
I (206) cpu_start: Project name:     Wi-Fi_InterMediator
I (212) cpu_start: App version:      1
I (216) cpu_start: Compile time:     May 31 2024 09:08:42
I (222) cpu_start: ELF file SHA256:  19a43d3f1...
Warning: checksum mismatch between flashed and built applications. Checksum of built application is 5613e903b84aab210bbe7593a85bec2bcddb198640f2b72ae57a5d604852e29e
I (228) cpu_start: ESP-IDF:          v5.2.1-dirty
I (233) cpu_start: Min chip rev:     v0.3
I (238) cpu_start: Max chip rev:     v1.99
I (243) cpu_start: Chip rev:         v0.4
I (248) heap_init: Initializing. RAM available for dynamic allocation:
I (255) heap_init: At 3FC8EA40 len 000315C0 (197 KiB): RAM
I (261) heap_init: At 3FCC0000 len 0001C710 (113 KiB): Retention RAM
I (268) heap_init: At 3FCDC710 len 00002950 (10 KiB): Retention RAM
I (275) heap_init: At 50000010 len 00001FD8 (7 KiB): RTCRAM
I (282) spi_flash: detected chip: generic
I (286) spi_flash: flash io: dio
I (290) sleep: Configure to isolate all GPIO pins in sleep state
I (296) sleep: Enable automatic switching of GPIO sleep configuration
I (304) main_task: Started on CPU0
I (304) main_task: Calling app_main()
I (304) Wi-Fi Module: OTA example app_main start
uart_resp_data is: report event 0

这里要特别说明一下。网上也有很多博客给出了OTA的log,但是都没有动态地即描述。在这里笔者更为深入地描述一下过程。

从收到升级命令开始(打印输出“OTA Started”)到“Verify chip id of new image”这一段很快。 

但是“Verify chip id of new image”这一个动作停顿时间较长,在笔者这里是20秒左右,之后再往下进行(从上边log中的时间戳上也能看出来)。接下来就是:

准备重启了。重启的同时MQTT任务也会出现中止的提示,链接也会断开。

接下来就差不多该启动的log输出了:

这就是完整且正常的OTA过程。

至此,本系列(ESP32-C3模组上跑通OTA升级)的内容就全部讲完了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674292.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分享一款开源可自行托管的 Heroku / Netlify / Vercel 替代方案工具,高达16.9K Star

之前分享了一篇文章【AI云部署】盘点开源项目免费云部署的几种技术方案 &#xff0c; 你可能会有这样的一个想法&#xff0c;要不我自建一个云平台自行托管。你看大公司都是自建的服务&#xff0c;托管在外面有隐私安全顾虑。 Coolify 是 Heroku / Netlify / Vercel 等的开源…

零基础入门学习Python第二阶04SQL详解03

MySQL 新特性 JSON类型 很多开发者在使用关系型数据库做数据持久化的时候&#xff0c;常常感到结构化的存储缺乏灵活性&#xff0c;因为必须事先设计好所有的列以及对应的数据类型。在业务发展和变化的过程中&#xff0c;如果需要修改表结构&#xff0c;这绝对是比较麻烦和难…

PLM系统与PDM系统、ERP系统、CRM系统有哪些关系?

在当今快速发展的信息技术时代&#xff0c;企业信息化已成为提升管理水平和增强竞争力的关键。其中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;作为企业信息化的基石&#xff0c;与其他信息系统如产品数据管理&#xff08;PDM&#xff09;、企业资源规划&#xf…

流量卡,你买的是长期套餐的还是短期套餐?

大家可能都知知道&#xff0c;网上的流量卡有两种不同的套餐&#xff0c;长期和短期&#xff0c;那么如果是你的话&#xff0c;你是会选择长期套餐还是短期套餐 在介绍这个问题之前&#xff0c;我们先了解一下什么是长期套餐&#xff1f;什么是短期套餐&#xff1f; 1、长期套…

PS系统教程08

色彩模式 色彩模式我们可能每天都有使用。Photoshop提供了多种颜色模式&#xff0c;每种模式都有其特定的用途和特点。以下是几种常见的颜色模式及其区别。 HSB模式-人眼 点击前景色滑动色相带&#xff08;0-360度&#xff09; 颜色色相&#xff1a;颜色相貌&#xff08;H&a…

【护网急训】应急响应靶场集,24年想参加hvv的同学抓紧练习吧。

应急响应靶场集 网络安全资源分享&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 护网中最重要的就是通过各类安全设备…

如何自建yum源仓库

文章目录 1&#xff0c;创建可用的yum源文件夹&#xff0c;把你自己的软件包&#xff0c;并放在这个目录文件夹中2&#xff0c;将yum源文件夹目录复制到/var/www/html/中3&#xff0c;客户端修改配置文件4&#xff0c;创建一个 RPM 软件包存储库5&#xff0c;查验是否成功6&…

基于springboot+vue的医院信息管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

软件设计详细需求分析报告-word(直接套用实际文档)

第3章 技术要求 3.1 软件开发要求 第4章 项目建设内容 第5章 系统安全需求 5.1 物理设计安全 5.2 系统安全设计 5.3 网络安全设计 5.4 应用安全设计 5.5 对用户安全管理 5.6 其他信息安全措施 第6章 其他非功能需求 6.1 性能设计 6.2 稳定性设计 6.3 安全性设计 6.4 兼容性设计…

1638. 统计只差一个字符的子串数目

题目 给你两个字符串 s 和 t&#xff0c;请找出 s 中的非空子串的数目&#xff0c;这些子串满足替换一个不同字符以后&#xff0c;是 t 串的子串。换言之&#xff0c;请你找到 s 和 t 串中恰好只有一个字符不同的子字符串对的数目。 一个子字符串是一个字符串中连续的字符。 …

全域外卖加盟是真的还是割韭菜?

近日&#xff0c;被业内公认为是2024年创业风口的全域外卖赛道迎来了第一场危机——多位想做全域外卖服务商的创业者在购买某公司的全域外卖系统后&#xff0c;发现其存在实物与描述严重不符的情况&#xff0c;并在退款阶段遇到诸多阻挠。在此背景下&#xff0c;外界对于全域外…

EPIC Fantasy Village - Low Poly 3D Art(梦幻村庄乡村小镇模型)

这个包提供了一个以幻想为主题的多边形风格游戏,适合TopDown、RPG、冒险、社交和RTS。它允许你创建自己的美丽幻想村庄和角色。 EPIC 幻想村庄包 EPIC幻想村庄包提供了一个以幻想为主题的多边形风格游戏,适用于TopDown、RPG、冒险、社交和RTS游戏。这个包允许你创建自己的美丽…

【Spring Cloud Alibaba】初识Spring Cloud Alibaba

目录 回顾主流的微服务框架Spring Cloud 版本简介Spring Cloud以往的版本发布顺序排列如下&#xff1a; 由停更引发的"升级惨案"哪些Netflix组件被移除了&#xff1f; 替换方案服务注册中心&#xff1a;服务调用&#xff1a;负载均衡&#xff1a;服务降级&#xff1a…

PCB 走线注意事项

PCB 走线注意事项 引言正文 引言 PCB 英文全称 Printed circuit board&#xff0c;中文翻译为印刷电路板。 正文 PCB 板不能直角走线。 直角走线会使传输线的线宽发生变化&#xff0c;造成阻抗的不连续&#xff0c;会引起待高频信号本身的反射&#xff0c;信号在 PCB 中传输…

HarmonyOS NEXT星河版之自定义List下拉刷新与加载更多

文章目录 一、加载更多二、下拉刷新三、小结 一、加载更多 借助List的onReachEnd方法&#xff0c;实现加载更多功能&#xff0c;效果如下&#xff1a; Component export struct HPList {// 数据源Prop dataSource: object[] []// 加载更多是否ingState isLoadingMore: bool…

旋转编码器、DS1302 实时时钟、红外遥控模块、雨滴探测传感器 | 配合Arduino使用案例

旋转编码器 旋转编码器是一种用作检测自动化领域中的角度、速度、长度、位置和加速度的传感器。 有绝对式和增量式&#xff0c;这里使用增量式&#xff08;相对&#xff09;。 绝对输出只是周的当前位置&#xff0c;是他们成为角度传感器。增量输出关于轴的运动信息&#xff0…

干货分享 | 详解TSMaster CAN 与 CANFD 的 CRCE2E 校验方法

面对切换工具链的用户来说&#xff0c;在 TSMaster 上完成总线通讯中的 CRC/E2E 校验处理不是特别熟悉&#xff0c;该文章可以协助客户快速使用 TSMaster 完成 CAN/CAN FD 总线通讯的 CRC/E2E 校验。 本文关键字&#xff1a;TSMaster&#xff0c;CAN/CANFD&#xff0c;CRC 校验…

【漏洞复现】SpringBlade tenant/list SQL 注入漏洞

0x01 产品简介 SpringBlade ,是一个由商业级项目升级优化而来的 SpringCloud 分布式微服务架构、SpingBoot 单体式微服务架构并存的综合型项目。 0x02 漏洞概述 SpringBlade 后台框架 /api/blade-system/tenantist路径存在SQL注入漏洞&#xff0c;攻击者除了可以利用 SQL 注…

参数介绍 安捷伦Agilent4155C、4156C 半导体测试仪

Agilent / HP 4155C 半导体参数分析仪是一款经济高效、精确的实验室台式解决方案&#xff0c;可用于高级设备特性分析。Agilent / HP 4155C 分析仪的功能和规格包括&#xff1a;一般功能&#xff1a; 经济高效、精确的实验室台式参数分析仪4 个中等功率 SMU、2 个 VSU 和 2 个 …

iOS 通过PacketLogger 抓包蓝牙数据包

当使用iOS平台调试蓝牙外设时&#xff0c;需要抓取蓝牙数据包&#xff0c;那么如何获取iOS端设备与蓝牙设备之间通信的蓝牙数据包呢&#xff1f; 一、资料准备 1、苹果手机 2、Xcode开发工具 3、Apple开发者账户 二、环境搭建 2.1、手机环境搭建 手机浏览器访问地址&…