ESP32 OTA APP版本号设置

本文介绍ESP32通过设置APP版本号实现OTA版本对比,防止无限固件更新。详细讲解了版本号来源:PROJECT_VER变量、version.txt文件或git describe输出,并提供了具体操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文讲述ESP32设置APP的版本号用于OTA版本对比。

在ESP-idf的native_ota_example中, 有一段代码演示如何检查应用程序的版本并防止无限的固件更新。只有新版本的应用程序才会进行OTA。版本检查是在收到第一个固件映像包之后执行的,其中包含有关固件版本的数据。申请版本可从以下三个地方选取:

  1. 如果在项目 PROJECT_VER 文件中设置PROJECT_VER变量,则使用它的值。
  2. 否则,如果 $PROJECT_PATH/version.txt 存在,它的内容将用作 PROJECT_VER
  3. 否则,如果项目位于Git存储库中,则使用 git describe的输出.
    否则, PROJECT_VER 将为 1.
    native_ota_example中, $PROJECT_PATH/version.txt 用于定义应用程序的版本. 更改文件中的版本以编译新固件。

这里我们采用第二种方法,即使用$PROJECT_PATH/version.txt文件来定义版本号。

Note: native_ota_example中没有版本号大小检查,它看到不同的版本就会下载。当本地设备是比OTA服务器版本号更高的时候,也会下载OTA服务器的旧版进行更新。这个需要自行添加版本号大小检查。

我们需要首先在make menuconfigApplication Manager菜单中,取消Exclude PROJECT_VER from firmware imageExclude PROJECT_NAME from firmware image的选项。
在这里插入图片描述
然后在项目文件夹根目录下新建一个version.txt,内容为1.1.0

编译之后用二进制模式打开bin文件,就可以在文件头里面看到项目名称和版本号了。
在这里插入图片描述
当然,千万别忘了在make menuconfigPartition Table中,选择Factory app, two OTA definition
在这里插入图片描述

### ESP32 更新版本下载与升级指南 ESP32 的更新可以通过多种方式进行,其中最常见的是通过 Arduino IDE 或者 Espressif 提供的官方工具链完成。以下是关于如何获取最新版本以及进行 OTA(Over-The-Air)升级的相关信息。 #### 获取最新的 ESP32 版本 为了确保能够获得最新的 ESP32 支持库版本,可以按照以下方法操作: 1. **配置 Arduino IDE 来源** 如果希望使用 Arduino IDE 进行开发,则需要先设置自定义板管理器 URL。打开 Arduino IDE,在 `File -> Preferences` 中找到 “Additional Boards Manager URLs”,将其更改为支持最新版本的地址[^2]。推荐使用的 URL 是: ``` https://dl.espressif.com/dl/package_esp32_index.json ``` 2. **安装或更新 ESP32 开发环境** 安装完成后进入 `Tools -> Board -> Boards Manager...`,搜索关键词 `esp32` 并选择由 Espressif Systems 提供的核心包。点击安装即可获取当前可用的最大版本号[^2]。 #### 使用 HTTPS 实现安全 OTA 升级 对于希望通过网络远程更新设备固件的情况,Espressif 推出了基于 HTTPS 的 OTA 功能作为解决方案之一。此功能允许开发者利用加密传输协议保护数据交换过程中的安全性[^1]。 - 配置服务器端证书验证机制可进一步增强系统的健壮性和抗攻击能力。然而如果遇到某些特殊场景下无法提供有效 CA 文件时也可以暂时禁用该选项以便顺利完成初始化部署阶段的工作[^3]: ```c++ /* if (!config->cert_pem) { ESP_LOGE(TAG, "Server certificate not found in esp_http_client config"); return ESP_FAIL; }*/ ``` - 在实际应用过程中还需要注意合理规划存储空间分配策略以适应不同规模的应用程序需求。通常情况下会采用双分区交替写入的方式来规避单一分区损坏风险同时保留原始出厂镜像副本用于恢复用途[^4]。 ```python import esptool esptool.main([ "--chip", "esp32", "write_flash", "--flash_mode", "dio", "--flash_freq", "80m", "--flash_size", "detect", "0x1000", "bootloader.bin", "0x8000", "partitions_singleapp.csv", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin" ]) ``` 以上脚本展示了如何借助 Python 脚本调用 esptool.py 工具将完整的二进制映像刷入硬件之中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值