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

2024-05-25 14:44
文章标签 升级 esp32 ota 模组 c3

本文主要是介绍ESP32-C3模组上跑通OTA升级(8),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

本文内容参考:

杂项系统 API - ESP32 - — ESP-IDF 编程指南 latest 文档

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

特此致谢!

七、固件版本

将不同功能的固件标记为不同版本是方便后期维护的一个重要手段。ESP-IDF提供了一些标记字段,可用于标记版本信息,这些字段与回滚/放回滚功能搭配使用,可满足大部分版本管控的需求。

1. 固件标记

可供读者进行编辑的字段有4个,分别为:secure_version(安全版本号)、project_version(工程版本号)、project_name(工程名称)、App version(应用版本);不可编辑的字段有2个,分别是idf_ver(ESP-IDF版本)、Compile time and date(编译时间与日期)。

(1)secure_version

安全版本号,用于设定芯片的安全版本。安全版本号存储在eFuse中,最多能标记16个版本。启用方式如下:

启动ESP-IDF命令行,切换到工程目录下。执行命令idf.py menuconfig,之后在图形界面中关注如下图所示各项:

(2)project_version

工程版本号,用于设定工程的版本。启用方式如下:

启动ESP-IDF命令行,切换到工程目录下。执行命令idf.py menuconfig,之后在图形界面中关注如下图所示各项:

menuconfig中的“Get the project version from Kconfig”及其子选项“Project version”选项对应到工程源码(工程根目录下的sdkconfig文件)中的变量为:

CONFIG_APP_PROJECT_VER_FROM_CONFIG=y
CONFIG_APP_PROJECT_VER="1"

修改“Project version”的值为2,将使得CONFIG_APP_PROJECT_VER的值变为2,即:

CONFIG_APP_PROJECT_VER_FROM_CONFIG=y
CONFIG_APP_PROJECT_VER="2"

如果menuconfig中的“Get the project version from Kconfig”项,则sdkconfig中的相应变量变为:

# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set

这一部分具体说明也参见:杂项系统 API - ESP32 - — ESP-IDF 编程指南 latest 文档

(3)project_name

工程名称,在工程目录下的CMakeList.txt文件中进行设置。以simple_ota工程为例,启用方式如下:

C:\Users\ns\esp32\simple_ota\CMakeLists.txt

# The following lines of boilerplate have to be in your project's CMakeLists
# in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16)include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(simple_ota)

project(X)为标记的工程名称。

(4)Compile time and date

编译时间和日期。与idf_ver(ESP-IDF版本)将在编译时自动赋值,读者从Log中可看到相关内容。

安全版本号(secure_version)与工程版本号(project_version)都可以用于标记固件版本信息,但它们的侧重点与实现方式不同。

  • 安全版本号

安全版本号写入芯片的eFuse中,一旦写入便不可被更改。该芯片之后只允许写入更高版本号的固件,这种特性可以安全有效地管控重要的更新。重要的更新一般与安全相关,所以称为安全版本号。

  • 工程版本号

工程版本号跟随固件存放在Flash中,可以在每次编译时随意更改,设备更新时不主动检查该信息,使用方式完全由开发者决定。

在实际的开发应用中,因为安全版本号有使用次数限制,一般将提升安全版本号定义为包含了重要功能更新、修复了安全漏洞,将提升工程版本号作为业务层功能更新使用。

更多内容请看下回。

这篇关于ESP32-C3模组上跑通OTA升级(8)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001802

相关文章

macOS升级后SVN升级

问题 svn: error: The subversion command line tools are no longer provided by Xcode. 解决 sudo chown -R $(whoami) /usr/local/Cellar brew install svn

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

欧拉系统 kernel 升级、降级

系统版本  cat  /etc/os-release  NAME="openEuler"VERSION="22.03 (LTS-SP1)"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 (LTS-SP1)"ANSI_COLOR="0;31" 系统初始 kernel 版本 5.10.0-136.12.0.

Zookeeper集群是如何升级到新版本的

方案1:复用老数据方案 这是经过实践的升级方案,该方案是复用旧版本的数据,zk集群拓扑,配置文件都不变,只是启动的程序为最新的版本。 参考文章: Zookeeper集群是如何升级到新版本的 方案2:重新建立数据方案 该方案的思路是:先停掉一台follower的机器上的服务,然后加入一个新版本的zk(zk的数据目录是空的),然后启动新zk,之后新zk会把旧集群中的数据同步过来。之后再操作另

摄像头模组介绍和技术指标

1 手机摄像头概述 1.1 手机摄像头概述  手机的数码相机功能指的是手机是否可以通过内置或是外接的数码相机进行拍摄静态图片或短片拍摄,作为手机的一项新的附加功能,手机的数码相机功能得到了迅速的发展。 手机摄像头分为内置与外置,内置摄像头是指摄像头在手机内部,更方便。外置手机通过数据线或者手机下部接口与数码相机相连,来完成数码相机的一切拍摄功能。 外置数码相机的优点在于可以减轻手机的重

mysql数据库8.0小版本原地升级

mysql数据库8.0小版本原地升级 准备工作升级工作停库使用新版本软件启动数据库更新环境变量重启数据库 升级日志 OS release: CentOS 7.9升级前DB version: MySQL 8.0.30数据库升级安装包:mysql-8.0.36-linux-glibc2.12-x86_64.tar.xzMySQL Shell安装包:mysql-shell-8.0.36

WIN11 ESP32 IDF + VSCODE 环境搭建[教程向]

前言 目录 前言 安装ESP32-IDF VSCODE插件安装 编译测试 很多时候我们想学习一门新的技能,需要使用全新的开发环境,很多时候我们会在安装环境这个环节卡住很久,这里简单介绍一下ESP32+VSCODE环境搭建。 安装ESP32-IDF https://dl.espressif.cn/dl/esp-idf/?idf=4.4 直接复制上面链接,进入idf下载界面。

面试官:synchronized的锁升级过程是怎样的?

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 回答 在 JDK 1.6之前,synchronized 是一个重量级、效率比较低下的锁,但是在JDK 1.6后,JVM 为了提高锁的获取与释放效,,对 synchronized 进行了优化,引入了偏向锁和轻量级锁,至此,锁的状态有四种,级别由低到高依次为:无锁、偏向锁、轻量级锁、重量级锁。 锁升级就是无锁 —>

自动升级系统OAUS续

一.缘起       自从 自动升级系统的设计与实现(源码) 发布以后,收到了很多使用者的反馈,其中最多的要求就是希望OAUS服务端增加自动检测文件变更的功能,这样每次部署版本升级时,可以节省很多时间,而且可以避免手动修改带来的错误。   现在,我就简单介绍一下最新版本的OAUS中关于这个功能的实现。在上一个版本中,我们是这样操作的:           每次有版本更新时,我们需