当前位置:   article > 正文

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

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

软件:

硬件:


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

idf.py set-target esp32c3

idf.py build
  • 1
  • 2
  • 3

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
  • 1

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
  • 1

在这里插入图片描述

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
  • 1
  • 2
  • 3

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

idf.py build

idf.py -p COM* flash monitor
  • 1
  • 2
  • 3

9. 检查固件运行日志

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

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

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

  • OTA 完成,会再次软件重启,以运行 OTA 分区的固件,此时 OTA 分区的固件已经被 Flash 加密
    在这里插入图片描述
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/854285
推荐阅读
相关标签
  

闽ICP备14008679号