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

软件:

  • esp-idf v5.1.2

硬件:

  • ESP32-C3 board

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

  • 基于 esp-idf-v5.1.2\examples\get-started\hello_world 例程,使用如下指令,直接编译,获取明文固件 hello-world.bin
idf.py set-target esp32c3idf.py build

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

  • 将明文固件 hello-world.bin 放到 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

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 bootloaderidf.py -p COM* boorloader-flash

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

idf.py buildidf.py -p COM* flash monitor

9. 检查固件运行日志

  • 固件首次运行启动后,会先检查 secure boot 签名验证,然后执行 Flash 加密
    在这里插入图片描述

  • Flash 加密完成后,会进行软件重启,然后开始运行用户固件
    在这里插入图片描述

  • 运行 factory 分区的固件,开启 OTA
    在这里插入图片描述

  • OTA 完成,会再次软件重启,运行 OTA 分区的固件
    在这里插入图片描述
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哨兵1号回波数据(L0级)FDBAQ压缩算法详解

本专栏目录: 全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 1. 全球SAR卫星回波数据压缩算法统计 各国的SAR卫星的压缩算法按照时间轴排列如下: 可以看出传统的分块BAQ压缩算法(上图粉色)仍然是主流,哨兵1号其实也有传统的BAQ压缩模式。 本文介绍哨兵1号用的FDBAQ算…

安卓Android Studio读写FM1208CPU卡源码

本示例使用的发卡器:https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.6c46789elLwMzv&id615391857885 package com.usbreadertest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.M…

Spring Boot 2.7.11 集成 GraphQL

GraphQL介绍 GraphQL(Graph Query Language)是一种用于API的查询语言和运行时环境,由Facebook于2012年创建并在2015年公开发布。与传统的RESTful API相比,GraphQL提供了更灵活、高效和强大的数据查询和操作方式。 以下是GraphQL…

关于时间格式yyyy-M-d或yyyy-MM-d到yyyy-MM-dd的转换

工作时遇到前端传的时间格式是"2023-12-3 17:41:52",和"2023-1-1 17:41:52"但是我想要的是"2023-12-03 17:41:52"和"2023-01-01 17:41:52"。下面给大家分享几个解决方法 方法一: 找前端!让他改&…

ES6 class详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

频谱论文:空间频率插值的无线电地图 Space-Frequency-Interpolated Radio Map

#频谱# K. Sato, K. Suto, K. Inage, K. Adachi and T. Fujii, "Space-Frequency-Interpolated Radio Map," in IEEE Transactions on Vehicular Technology, vol. 70, no. 1, pp. 714-725, Jan. 2021, doi: 10.1109/TVT.2021.3049894. 东京理科大学&#xff0…

GZ075 云计算应用赛题第4套

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷4 某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenSt…

代码随想录-刷题第四十五天

完全背包理论基础 完全背包和0-1背包问题唯一不同的地方就是,完全背包中每种物品有无限个。 完全背包和0-1背包在代码上唯一的不同体现在遍历顺序上,直接对两个问题的遍历顺序进行分析。 0-1背包在使用一维dp数组时,是先遍历物品&#xff…

HTML----JavaScript操作对象BOM对象

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 本章要求 了解BOM模型掌握BOM模型实际应用 一.BOM模型概述 BOM(浏览器对象模型)是JavaScript中的一个重要概念,它提供了一组用于控制浏览器窗口和页面内容的…

云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…

STM32MP157D-DK1 Qt程序交叉编译与运行测试

上篇文章介绍了STM32MP157D-DK1开发板Qt镜像的构建,通过在Ubuntu中重新编译带有Qt功能的系统来实现。 本篇在上篇的基础上,继续搭建Qt的交叉编译环境,实现Qt程序在Ubuntu中编译,在STM32MP157板子中运行。 1 编译安装SDK 在上篇…

对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的行为是否正常、运维中服务器状态是否异常…