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升级遇到的诸多问题以及解决方法。针对于此问题,给出的解决方法如下:

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

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

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

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

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

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

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

相关文章

Oracle创建用户/表空间/赋权常规操作

1. 登录oracle su - oracle sqlplus / as sysdba 2.查看库里存在的用户,防止冲突 SELECT username FROM all_users ORDER BY username; 3.查看库里存在的表空间,防止冲突 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space_MB f…

Windows 下 PostgreSQL 图形化界面安装、配置详解

相信大家对PostgreSQL都不陌生吧,自从MySQL被Oracle所控制后,PostgreSQL就成为了国内去O的首选数据库了,并且PostgreSQL目前不受任何商业公司控制,所以国内很多厂商都是基于PostgreSQL做二次开发来实现数据库自主可控的目标(国内很…

RH850F1KM——ADC模块

文章目录 前言一、Conversion time:转换时间二、参考电压三、分辨率scan group四、虚拟通道模数转换器-ADC基础 Autosar MCAL配置——ADC 前言 在RH850F1KM系列MCU中,ADCA模块即为ADC模块,如下是各个型号所具有的ADC物理单元。 时钟的频率决定ADC的触发频率,转换时间和采样…

单实例11.2.0.3迁移到RAC11.2.0.4_使用RMAN 异机恢复

保命法则:先备份再操作,磁盘空间紧张无法备份就让满足,给自己留退路。 场景说明: 1.本文档的环境为同平台、不同版本(操作系统版本可以不同,数据库小版本不同),源机器和目标机器部…

@Transactional事务注解内含乾坤?

文章目录 前置知识实战1、无事务操作2、事务操作 总结 前置知识 MyBatis中的工作原理 读取配置文件:数据库连接信息、事务管理信息以及映射文件的位置加载映射文件:加载Mapper.xml这些映射文件,解析其中的 SQL 语句和结果映射信息创建 SqlS…

SQL—DQL(数据查询语言)之小结

一、引言 在前面我们已经学习完了所有的关于DQL(数据查询语言)的基础语法块部分,现在对DQL语句所涉及的语法,以及需要注意的事项做一个简单的总结。 二、DQL语句 1、基础查询 注意: 基础查询的语法是:SELE…

【ai】livekit服务本地开发模式1:example app信令交互详细流程

文档要安装git lfs 下载当前最新版本1.6.1windows版本:启动dev模式 服务器启动 (.venv) PS D:\XTRANS\pythonProject\LIVEKIT> cd .

【Java数据结构】详解LinkedList与链表(一)

🔒文章目录: 1.❤️❤️前言~🥳🎉🎉🎉 2.ArrayList的缺陷 3.链表的概念及结构 4.无头单向非循环链表的实现 4.1成员属性 4.2成员方法 createList display——打印链表 addFirst——头插 addLast…

2024 年最新安装MAC-vue教学包括常见错误

花了一上午时间终于将 vue 的工程文件安装好了,本教材是傻瓜式操作,按着教程一步一步操作最后就可以看到页面了。 安装Node 1.在线地址: https://nodejs.org/en 2、点击 Download Node.js下载即可,下载完成后,傻瓜式的…

STL中stack的使用

目录 一、stack类介绍和使用 stack类介绍 stack类定义 stack类常见构造函数 stack数据操作 empty()函数 top() pop() 和 push() 函数 size()函数 swap()函数 一、stack类介绍和使用 stack类介绍 1.stack是一种容器适配器,专门用在具有后进先出操作的上下…

骨传导耳机防踩雷秘诀是什么?六大选购技巧独家揭秘!

相信大家都已经深有体会,拿那种常规的入耳式无线蓝牙耳机来做运动耳机,很难满足运动需要。如果选择前两年流行的颈挂式无线运动蓝牙耳机,虽然简单轻巧,但也是入耳式设计,长时间佩戴耳朵不舒服。这样看来,运…

【云原生】kubernetes中的认证、权限设置--RBAC授权原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

金属切削机床5G智能工厂工业物联数字孪生,推进制造业数字化转型

金属切削机床5G智能工厂工业物联数字孪生,推进制造业数字化转型。随着工业4.0时代的到来,制造业正面临着前所未有的变革与挑战。在这场变革中,金属切削机床智能工厂工业物联数字孪生平台正成为推动制造业数字化转型的重要力量。 数字孪生是指…

快手万合通脚本,磁力广告挂机变现项目,号称单窗口日收益10+(教程+软件)

在这个项目中,我们采用一种简便的方法来获取额外收入。比如: 1. 主账号准备:首先,确保拥有一个已开通磁力万合功能的快手主账号。账号需拥有至少一万粉丝,以确保广告收益。 2. 创建快手小号:无需粉丝基础…

RabbitMQ不完整的笔记

同步的不足 1、拓展性差,当要添加功能时,需要在原来的功能代码上做修改,高耦合。 2、性能下降,调用者需要等待服务提供者执行完返回结果后,才能继续向下执行 3、级联失败,由于我们是基于OpenFeign调用交易…

JDBC知识

JDBC是什么? 这工作中我们针对数据库的操作,实际上很少会用到SQL语句,通过命令行/图形化来操作数据库,更多的是通过主流的编程语言来对数据库进行操作,即使通过代码来操作数据,我们还是会使用到SQL语句,所以掌握SQL语句也是很重要的. 如何通过代码操作数据库? 通过代码操作…

电脑缺少运行库,无法启动程序

在我们使用一些软件的时候,由于电脑缺少一些运行库,导致无法启动应用软件,此时需要我们安装缺少的运行库。 比如当电脑提示: Cannot load library Qt5Xlsx.dll 我们就需要下载C得运行库,以满足软件运行需要。 下载链…

特别实用的8个机器学习算法总结!建议收藏,反复观看!

个人主页:.Boss.-CSDN博客 目录 1.线性回归(Linear Regression) 2.多项式回归(Polynomial Regression) 3.岭回归(Ridge Regression) 4.Lasso回归(Lasso Regression) …