基于 ESP32-C3 开启 Flash 加密和安全启动并进行 OTA 测试

本文详细指导如何使用ESP-IDFv5.1.2在ESP32-C3板上实现明文固件的签名、加密和通过OTA更新,包括生成签名密钥、加密固件、配置HTTPServer以及启用Flash加密和安全启动模式。
摘要由CSDN通过智能技术生成

软件:

硬件:


1. 首先,准备一个明文固件 hello-world.bin

idf.py set-target esp32c3

idf.py build

2. 接下来,基于 esp-idf-v5.1.2\examples\system\ota\simple_ota_example 例程进行测试

在这里插入图片描述

3. 使用如下指令获取 secure boot V2 key

espsecure.py generate_signing_key secure_boot_signing_key.pem --version 2

4. 使用如下指令,通过生成的 secure_boot_signing_key.pem 文件对 明文的 hello-world.bin 进行签名,生成被签名的 SIGNED_hello_world.bin

待 OTA 的固件必须被相同 Secure Boot Key 进行签名

espsecure.py sign_data --version 2 --keyfile secure_boot_signing_key.pem --output SIGNED_hello_world.bin hello_world.bin

在这里插入图片描述

5. 为了方便 OTA 测试,我们在本地开启一个 HTTP Server 服务器,将签名的 SIGNED_hello_world.bin 上传到 HTTP Server

在这里插入图片描述

6. 基于 esp-idf-v5.1.2\examples\system\ota\simple_ota_example 例程,开启如下软件配置

  • 开启 Flash 加密 和 安全启动模式
    → Security features
    在这里插入图片描述

  • 增大 partition-table 偏移地址
    → Partition Table
    在这里插入图片描述

  • 设置待 OTA 的 SIGNED_hello_world.bin 文件路径
    → Example Configuration
    在这里插入图片描述

  • 与 PC 连接相同的路由器
    → Example Connection Configuration
    在这里插入图片描述

  • 开启 HTTP Server OTA 的支持
    → Component config → ESP HTTPS OTA
    在这里插入图片描述

  • 关闭 NVS 加密
    由于 开启 Flash 加密后,默认也会使能 NVS 加密,但我们这里没有进行 NVS 加密的相关设置,因此需要关闭 NVS 加密的配置
    → Component config → NVS
    在这里插入图片描述

7. 使用如下指令编译 bootloader ,并下载被签名的 bootloader.bin

idf.py bootloader

idf.py -p COM* boorloader-flash

8. 使用如下指令,对工程进行编译,并下载编译后的固件

idf.py build

idf.py -p COM* flash monitor

9. 检查固件运行日志

注意:确保稳定的供电环境

  • 固件首次运行启动后,会先检查 secure boot 签名验证,然后执行 Flash 加密
    在这里插入图片描述
  • Flash 加密完成后,会进行软件重启,然后开始运行用户固件
    在这里插入图片描述
  • 运行 factory 分区的固件,开启 OTA
    在这里插入图片描述

OTA 过程会对签名的 OTA 的固件进行加密,并写入 OTA 分区。

  • OTA 完成,会再次软件重启,以运行 OTA 分区的固件,此时 OTA 分区的固件已经被 Flash 加密
    在这里插入图片描述
    在这里插入图片描述
  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于stm32和esp8266的ota在线升级是指通过互联网实现对stm32和esp8266设备固件的远程在线升级。这种方式相比传统的离线升级,具有更高的灵活性和便利性。 OTA(Over The Air)在线升级是一种可以无需物理连线的远程设备固件升级的技术,通过云平台或服务器,将新版本的固件通过无线网络传输到目标设备,实现远程升级操作。对于基于stm32和esp8266的设备,实现OTA升级的过程如下: 首先,需要在stm32和esp8266设备上搭建OTA升级功能的框架。可以利用相应的开发工具或库,编写OTA升级模块代码,以实现设备的OTA功能。 然后,在云平台或服务器端搭建OTA服务器,并将新版本固件上传至服务器。将固件进行版本标识,并提供下载链接。 设备连接到云平台或服务器,检测到有新版本固件时,可以从OTA服务器下载新版本固件。可以通过http或https协议进行下载,也可以使用mqtt等通讯协议。 下载完毕后,设备会对下载的固件进行校验,以确保固件的完整性和正确性。 之后,设备会将自身重启进入升级模式,加载新版本固件,并开始固件升级。 在固件升级过程中,设备会自动备份旧版本固件,以便在升级失败时进行回滚。 固件升级完成后,设备会重新启动,并加载新版本固件。设备便成功完成了OTA在线升级。 总之,基于stm32和esp8266的OTA在线升级,通过云平台或服务器,实现了设备的远程固件升级,提高了固件更新的灵活性和便利性。这为设备终端和应用提供了更好的升级管理和维护方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值