ESP32开发阶段启用 Secure Boot 与 Flash encryption

news2024/9/22 17:25:10

Secure Boot 与 Flash encryption详情
请参考:https://blog.csdn.net/espressif/article/details/79362094

1、开发环境

  • AT版本:2.4.0.0 发布
  • IDF 与 python: idf4.3_py3.10_env
  • 系统:虚拟机 + ubuntu 20

2、使能 secure boot 和 flash encrypt

./build.py menuconfig

在这里插入图片描述

3、单独编译bootloader生成 secure boot key

./build.py bootloader

4、使用 key 和 bootloader 计算 带 digest 的 bootloader

python $IDF_PATH/components/esptool_py/esptool/espsecure.py digest_secure_bootloader --keyfile ./build/bootloader/secure-bootloader-key-256.bin -o ./build/bootloader/bootloader_with_digest.bin ./build/bootloader/bootloader.bin

在这里插入图片描述

5、编译 partition_table 与 app

./build.py partition_table

在这里插入图片描述

./build.py app

在这里插入图片描述

6、加密三个 bin 文件

build/bootloader/bootloader_with_digest.bin
build/partition_table/partition-table.bin
build/esp-at.bin

export IDF_PATH=/home/henry/esp/esp-at/esp-idf

//不同版本不一样我的这个版本是flash_encryption_key.bin,有的版本是flash_encrypt_key.bin
python $IDF_PATH/components/esptool_py/esptool/espsecure.py encrypt_flash_data --keyfile flash_encryption_key.bin --address 0x0 -o build/bootloader/bootloader_with_digest_encrypt.bin build/bootloader/bootloader_with_digest.bin


python $IDF_PATH/components/esptool_py/esptool/espsecure.py encrypt_flash_data --keyfile flash_encryption_key.bin --address 0x8000 -o build/partition-table_encrypt.bin build/partition_table/partition-table.bin

python $IDF_PATH/components/esptool_py/esptool/espsecure.py encrypt_flash_data --keyfile flash_encryption_key.bin --address 0x10000 -o build/esp-at_encrypt.bin build/esp-at.bin


得到三个加密后的bin文件
build/bootloader/bootloader_with_digest_encrypt.bin
build/partition-table_encrypt.bin
build/esp-at_encrypt.bin

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7、烧写加密后的bin文件

build/bootloader/bootloader_with_digest_encrypt.bin 地址: 0x0
build/partition-table_encrypt.bin 地址: 0x8000
build/esp-at_encrypt.bin 地址:0x10000

python $IDF_PATH/components/esptool_py/esptool/esptool.py --baud 1152000 write_flash 0x0 build/bootloader/bootloader_with_digest_encrypt.bin

显示没有权限

开放权限

sudo chmod 777 /dev/ttyUSB2

再次烧录

python $IDF_PATH/components/esptool_py/esptool/esptool.py --baud 1152000 write_flash 0x0 build/bootloader/bootloader_with_digest_encrypt.bin
python $IDF_PATH/components/esptool_py/esptool/esptool.py --baud 1152000 write_flash 0x8000 build/partition-table_encrypt.bin
python $IDF_PATH/components/esptool_py/esptool/esptool.py --baud 1152000 write_flash 0x10000 build/esp-at_encrypt.bin

在这里插入图片描述

8、将 flash_encryption_key 烧入 efuse (仅在第一次boot前烧写)

python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_key flash_encryption flash_encryption_key.bin

9、将 secure boot key 烧入efuse(仅在第一次boot前烧写)

python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_key secure_boot ./build/bootloader/secure-bootloader-key-256.bin

10、烧写 efuse 中的控制标志(仅在第一次boot前烧写)

python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_efuse ABS_DONE_0
python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_efuse FLASH_CRYPT_CNT
python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_efuse FLASH_CRYPT_CONFIG 0xf
python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_efuse DISABLE_DL_ENCRYPT
python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_efuse DISABLE_DL_DECRYPT
python $IDF_PATH/components/esptool_py/esptool/espefuse.py burn_efuse DISABLE_DL_CACHE

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手搓 自然语言模型 LLM 拆分em结构设计 网络参数对比

数据 数据集 新的em编码参数表 voc_sizehidden_sizetotaltotal Bmax_lensecondsdays65536512374865920.03749B10242560.2655361024828375040.08284B20485120.5655362048<

yo!这里是STL::list类简单模拟实现

目录 前言 重要接口实现 框架 默认成员函数 迭代器&#xff08;重点&#xff09; 1.引言 2.list迭代器类实现 3.list类中调用实现 增删查改 后记 前言 我们知道&#xff0c;stl中的vector对应数据结构中的顺序表&#xff0c;string类对应字符串&#xff0c;而今天要…

Spring Data学习笔记Day01-SpringData入门

Spring Data基本介绍 目录 Spring Data Redis 官方API参考手册&#xff01;★ Spring Data的价值★ Spring Data及其子项目★ 强大的Spring Data★ Repository接口★ 具体Repository接口★ Spring Data JPA开发★ Spring Boot如何选择DataSource★ 数据源相关配置★ 配置第三方…

spring源码高级-图灵周瑜

实现factorybean可以产生代理对象

文件数字水印,附一种纯文本隐写术数字水印方法

数字水印&#xff08;Digital Watermark&#xff09;是一种在数字媒体文件中嵌入隐藏信息的技术。这些数字媒体可以是图片、音频、视频或文本等。数字水印不会对原始文件造成明显的视觉或听觉变化&#xff0c;但可以在一定程度上保护知识产权&#xff0c;追踪数据来源&#xff…

4个不是镜像但生成质量不输ChatGPT的其他AI聊天机器人

最近又发现其他几个类似ChatGPT的好用且质量还不错的AI聊天机器人&#xff0c;特意分享给大家。 Bing AI Bing AI工作原理与OpenAI的ChatGPT非常相似。Bing AI聊天机器人是利用ChatGPT的大语言模型&#xff0c;能够生成不同形式的内容&#xff0c;例如博客、文章、描述、诗歌等…

尚硅谷大数据项目《在线教育之采集系统》笔记004

视频地址&#xff1a;尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P047 P048 P049 P050 P051 P052 P053 P054 P055 P056 P047 /opt/module/datax/job/base_province.json [atguigunode001 ~]$ hadoop fs -mkdir /base_province/2022-02-22 [atgu…

动手学深度学习Pytorch 4.4练习

1.这个多项式回归问题可以准确地解出吗&#xff1f;提⽰&#xff1a;使⽤线性代数。 可以,把多项式问题&#xff0c;用matlab的str2sym表示出来&#xff0c;再用solve求解。 2.考虑多项式的模型选择。 1. 绘制训练损失与模型复杂度&#xff08;多项式的阶数&#xff09;的关系…

以太网收发及TSN概述

一、概述 TSN&#xff08;Time-Sensitive Networking&#xff09;时间敏感网络&#xff0c;即在非确定性的以太网中实现确定性的最小时间延时的协议族&#xff0c;是IEEE 802.1工作组中的TSN工作组开发的一套协议标准&#xff0c;定义了以太网数据传输的时间敏感机制&#xff…

探析青少年口才训练在个人发展中的重要性与影响

论文题目&#xff1a;探析青少年口才训练在个人发展中的重要性与影响 摘要&#xff1a; 本论文旨在探讨青少年口才训练对个人发展的重要性和影响。通过对相关文献的综述和实证研究的分析&#xff0c;论文将阐述口才训练对青少年自信心、表达能力和思维能力的提升&#xff0c;以…

常见分布式ID解决方案总结:数据库、算法、开源组件

常见分布式ID解决方案总结 分布式ID分布式ID方案之数据库数据库主键自增数据库号段模式Redis自增MongoDB 分布式ID方案之算法UUIDSnowflake(雪花算法) 雪花算法的使用IdWorker工具类配置分布式ID生成器 分布式ID方案之开源组件uid- generator(百度)Tinyid&#xff08;滴滴&…

Leetcode.1559 二维网格图中探测环

题目链接 Leetcode.1559 二维网格图中探测环 rating : 1838 题目描述 给你一个二维字符网格数组 g r i d grid grid &#xff0c;大小为 m x n &#xff0c;你需要检查 g r i d grid grid 中是否存在 相同值 形成的环。 一个环是一条开始和结束于同一个格子的长度 大于等于…

Java基础(四)

循环结构 1. while循环 循环变量初始化 while (循环条件){循环体; }循环条件是一个布尔类型的表达式&#xff0c;他的值为 true 时执行循环体&#xff0c;如果为 false 时终止循环体。while 循环是先判断条件是否成立&#xff0c;再决定是否执行循环体。如果第一次循环时&…

【APITable】教程:创建并运行一个自建小程序

1.进入APITable&#xff0c;在想要创建小程序的看板页面点击右上角的【小程序】&#xff0c;进入小程序编辑页面。 2.创建一个新的小程序区。 点击【 添加小程序】 点击创建小程序&#xff0c;选择模板&#xff0c;输入名字。 3.确定后进入小程序部署引导页面。 4.打开Xshell 7…

06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)

文章目录 1. 主要的窗体类及其用途2. 窗体类重要特性的设置2.1 setAttribute()函数2.2 setWindowFlags()函数2.3 setWindowState()函数2.4 setWindowModality()函数2.5 setWindowOpacity()函数 3. 多窗口应用程序设计3.1 主窗口设计3.2 QFormDoc类的设计3.3 QFormDoc类的使用3.…

Win10语言设置 - 显示语言和应用语言

前言 Win10的语言设置可以设置显示语言和应用语言。其中&#xff0c;显示语言用于显示系统文字&#xff1b;应用语言用于应用程序显示文字。下文介绍如何设置。 显示语言 打开系统设置&#xff0c;选择时间和语言&#xff0c;如下图&#xff1a; 修改Windows显示语言即可更…

开源数据库Mysql_DBA运维实战 (名词解释)

SQL&#xff08;Structured Query Language 即结构化查询语言&#xff09; SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统&#xff0c;SQL语言由IBM开发。 SQL语言分类&#xff1a; DDL语句 数据库定义语言&#xff1a;数据库、表、视图、索引、存储过程…

CentOS7安装JDK8(实操版 | 源码安装和yum安装)

&#x1f60a; 作者&#xff1a; Eric &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_47316183?typeblog &#x1f389; 主题&#xff1a;CentOS7安装JDK8&#xff08;实操版 | 源码安装和yum安装&#xff09; ⏱️ 创作时间&#xff1a; 2023年08月04日 …

Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

目录 一、SpringBootApplication 二、SpringBootConfiguration 三、EnableAutoConfiguration 四、ComponentScan 一、SpringBootApplication SpringBootApplication是Spring Boot框架的核心注解之一&#xff0c;它用于标识一个主配置类&#xff0c;通常是项目的入口类。该…

Titanic细节记录一

目录 chunker header index_col names Series与DataFrame的区别 df.columns del和drop的区别 reset_index loc与iloc的区别 不同的排序方式 sort_values sort_index DataFrame相加 describe函数查看数据基本信息 查看多个列的数据时使用列表 处理缺失值的几种思路 …