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

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

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

前边各篇文章主要讲解了OTA的基础知识以及示例代码,但这其实是(远远)不够的,真正要在ESP32-C3芯片上跑通(即正确运行起来)才算可以。

笔者使用的是advanced_https_ota这个示例项目,如下所示:

项目的主文件为main\advanced_https_ota_example.c。在调试过程中,遇到了不少坑,用了大半天时间逐一把这些坑填平了。下边将这些坑即遇到的问题按照先后顺序记录下来,以供后来者参考,使你们不再花大量时间和精力重复踩坑填坑。

1. No option for server verification is enabled in esp_http_client config问题

详细的问题log如下:

wifi_updfile_md5 is: 0e864846aa6f6146602a809b498f8c74
I (16536) Wi-Fi Module: HTTP_EVENT_DISCONNECTED
I (16576) Wi-Fi Module: OTA started
E (16576) esp_https_ota: No option for server verification is enabled in esp_http_client config.
E (16576) Wi-Fi Module: ESP HTTPS OTA Begin failed

之所以会出现这个问题,是因为笔者放置升级文件的服务器是https(即url为“https://……”),但是又暂时没有证书(很矛盾)。对应到具体代码上,是这样:

        esp_http_client_config_t config = {//.url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL,//.cert_pem = (char *)server_cert_pem_start,.timeout_ms = CONFIG_EXAMPLE_OTA_RECV_TIMEOUT,.keep_alive_enable = true,
//#ifdef CONFIG_EXAMPLE_SKIP_COMMON_NAME_CHECK.skip_cert_common_name_check = true,
//#endif};config.url = updfile_url;

以上代码片段中,本来“.cert_pem = (char *)server_cert_pem_start,”一行是打开的,例程中也给了一个证书:

但由于是要用自己的服务器升级,所以肯定不能用官方提供的ca_cert.pem这个证书。正常情况下,应该是自己的服务器也给一个证书,但目前暂时还没有(本来是想先不带证书调能省点事,结果反倒费事了)。因此,笔者在代码中注释掉了“.cert_pem = (char *)server_cert_pem_start,”那一行(如上代码所示)。结果编译是能编译通过,运行的时候就出现上述问题了。

针对这个问题咨询了乐鑫的技术支持人员,他们给出的建议是:如果用的是https server,https使用的是ssl协议,这里(指的上边的配置代码)就需要有相应的证书;如果用的是http server进行OTA,则需要开启http OTA相关配置。

乐鑫技术支持人员同时也给了一个参考文章:

ESP32 HTTP OTA test_skip server certificate cn fieldcheck-CSDN博客

这篇文章写得非常好!里边罗列了OTA升级遇到的诸多问题以及解决方法。针对于此问题,给出的解决方法如下:

笔者按照以上指导修改了自己的项目配置:

修改此配置之后,再次编译运行,果然这个错误就不再出现了,即问题解决了。

但是紧接着又出现了新的问题,如下图所示:

这个问题是由于固件版本号相同,因此检查不通过,不允许升级。这真是一波方平、一波又起。

这个错误又该如何解决呢?请看下回。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【并发程序设计】13.信号机制

13.信号机制 概念: 信号机制是Unix、类Unix以及其他POSIX兼容的操作系统中的一种进程间通讯方式,它允许进程在发生特定事件时接收通知。 信号机制是操作系统中的一个重要概念,它提供了一种异步的通知机制,用于在进程之间传递消…

docker-compose 配置大全,持续更新

docker-compose 配置 安装docker-compose 1、执行脚本 由于github下载速度很慢,我将用到的程序放到了gitee仓库。 sudo curl -L https://gitee.com/brother_maolin/transfer/raw/master/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose2、执行,给予可执行…

6.s081通关小结

6.s081通关小结 终于是完成6.s081的所有lab了,感慨万千。已经忘了第一次听说这个lab是在什么时候了,只是模模糊糊地感觉是大三。那时的我第一次找到了刷题之外的新方向。但囿于小镇做题家对计算机认识的滞后性,什么Linux、Ubuntu之类的新系统…

【Python】解决Python报错:IndexError: queue index out of range

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

【Unity Shader入门精要 第12章】屏幕后处理效果(二)

1. 卷积 在图像处理中,卷积操作就是使用一个卷积核对一张图像中的每个像素做一系列的操作。 卷积核通常是一个四方形网格结构,如2x2、3x3的方形区域,该区域内每个方格都有一个权重值。 当对图像中的某个像素进行卷积操作时,将卷…

Linux域名解析不了/网络不可达/虚拟机连接不了的问题

记录域名解析不了/网络不可达/虚拟机连接不了的问题问题 目录 文章目录 记录域名解析不了/网络不可达/虚拟机连接不了的问题问题1.首先确定已经连接上路由器(我的就是在这嗝屁了....)1.1 查看路由表1.2查看当前的网络连接状态,包括网关1.3查看网络接口的状态&…

如何解决研发数据传输层面安全可控、可追溯的共性需求?

研发数据在企业内部跨网文件交换,是相对较为普遍而频繁的文件流转需求,基于国家法律法规要求及自身安全管理需要,许多企业进行内部网络隔离。不同企业隔离方案各不相同,比如银行内部将网络隔离为生产网、办公网、DMZ区&#xff0c…

十四天学会Vue——Vue核心下篇(理论+实战)(第三天)

一、Vue核心下篇 1.15 常用的内置指令 1. v-text <!--准备好一个容器 --><div id"root"><!-- 1.v-text中的字符替换掉div整个字符 --><div v-text"name">你好,{{name}}</div><!-- 2.将标签当做字符串解析 --><di…

Vue Router (创建 挂载)

创建路由模块 在src目录下创建router.js文件作为模块&#xff0c;该文件中按照如下步骤进行操作 1.导入路由相关函数&#xff0c;具体代码如下&#xff1a; import{ createRouter&#xff0c;createWebHashHistory } from Vue-router在上述代码中&#xff0c;从Vue-router中…

网络原理-TCP/IP --应用层

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 3.网络原理 -TCP/IP3.1 应用层 3.网络原理 -TCP/IP 3.1 应用层 应用层是程序员打交道最多的一层,与应用程序直接相关 而应用层的协议,实际上就规定了你写的程序,通过网络传输的时候,按…

2928. 给小朋友们分糖果 I

给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友&#xff0c;确保没有任何小朋友得到超过 limit 颗糖果&#xff0c;请你返回满足此条件下的 总方案数 。 示例 1&#xff1a; 输入&#xff1a;n 5, limit 2 输出&#xff1a;3 解释&#xff1a;总共有 3 种方…

FX2N用什么编程软件:深入解析与选择指南

FX2N用什么编程软件&#xff1a;深入解析与选择指南 在工业自动化领域&#xff0c;FX2N系列PLC因其卓越的性能和广泛的应用而备受瞩目。然而&#xff0c;对于许多初学者和工程师来说&#xff0c;如何选择合适的编程软件来开发FX2N系列PLC却是一个令人困惑的问题。本文将从四个…

【LINUX】LINUX基础(目录结构、基本权限、基本命令)

文章目录 LINUX的目录结构LINUX的基本权限LINUX基本命令 LINUX的目录结构 /&#xff1a;表示根目录bin&#xff1a;存放二进制可执行文件(命令ls、cat、mkdir等)boot&#xff1a;存放系统引导文件dev&#xff1a;存放设备文件etc&#xff1a;存放系统配置文件home&#xff1a;…

LeeCode热题100(爬楼梯)

爬楼梯这个题我断断续续看了不下5遍&#xff0c;哪次看都是懵逼的&#xff0c;就会说是满足动态规划&#xff0c;满足斐波那契数列&#xff0c;也不说为什么。 本文一定让你明白怎么分析这个题的规律&#xff08;利用数学的递推思想来分析&#xff09;&#xff0c;看不懂来打我…

Ubuntu 22.04 .NET8 程序 环境安装和运行

前言 我们需要将.NET8编写的console控制台程序&#xff0c;部署在Ubuntu服务器上运行。 安装.NET运行时 1.增加微软包安装源 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages…

JAVA学习-练习试用Java实现“Z字形变换”

问题&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你…

1114 全素日

你好哇&#xff0c;新的一天开始啦&#xff01; solution 取数值的不同部分&#xff0c;联想到借助string #include<iostream> #include<string> using namespace std; bool judge(string s){int n atoi(s.c_str());if(n 1 || n 0) return false;for(int i 2…

FT编程语言:探索其深度、广度与未来潜力

FT编程语言&#xff1a;探索其深度、广度与未来潜力 FT编程语言&#xff0c;作为一个新兴且充满潜力的编程领域&#xff0c;正逐渐引起开发者和研究者的广泛关注。其独特的设计理念和强大的功能使得它在多个方面展现出独特的魅力。本文将从四个方面、五个方面、六个方面和七个…

“浔川AI翻译”正式上线!——浔川AI社

1前言&#xff1a; 浔川AI翻译机是一种基于人工智能技术开发的翻译设备。它能够实时将一种语言的文本或口语翻译成另一种语言&#xff0c;使得不同语言之间的交流更加便捷。浔川AI翻译机利用深度学习算法和大数据训练模型&#xff0c;能够自动识别和理解输入的语言&#xff0c…

618大促买什么数码最划算?数码好物清单整理,买到就是赚到!

618年中大促数码产品爱好者们纷纷摩拳擦掌&#xff0c;准备在这个购物狂欢节里抢购心仪已久的数码好物&#xff0c;在繁多的品牌和型号中挑选出最划算的产品&#xff0c;并不是一件容易的事情&#xff0c;为了帮助大家更好地把握这次购物机会&#xff0c;我们精心整理了一份数码…