15-partition table (分区表)

ESP32-S3的分区表

什么是分区表?🤔

ESP32-S3的分区表是用来确定在ESP32-S3的闪存中数据和应用程序的布局。每个ESP32-S3的闪存可以包含多个应用程序,以及多种不同类型的数据(例如校准数据、文件系统数据、参数存储数据等)。因此,我们在闪存的默认偏移地址0x8000处烧写一张分区表。

分区表的结构

分区表的长度为0xC00字节,最多可以保存95条分区表条目。分区表数据后还保存着该表的MD5校验和,用于验证分区表的完整性。因此,分区表占据了一个整个的闪存扇区,大小为0x1000(4KB)。结果是,任何在其后的分区必须至少位于(默认偏移量)+0x1000的位置

分区表中的每个条目都有一个名称(标签)、类型(应用、数据或其他内容)、子类型和加载分区的闪存中的偏移量。
在这里插入图片描述

如何使用分区表?

在使用分区表时,最简单的方法就是打开项目配置菜单(idf.py menuconfig),搜索partition在partition Table 选择栏下选择一个预定义的分区表。
在这里插入图片描述

这些预定义的分区表在我们idf安装的以下👇路径上可以找到

D:\Espressif\frameworks\esp-idf-v5.2.1\components\partition_table

在这里插入图片描述

例如,以下是“Single factory app, no OTA”选项的分区表信息摘要:

# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 1M,

在flash的0x10000 (64 KB)偏移地址处存放一个标记为“factory”的二进制应用程序,且启动加载器将默认加载这个应用程序。分区表中还定义了两个数据区域,分别用于存储NVS库专用分区和PHY初始化数据。

创建自定义表

如果在 menuconfig 中选择“自定义分区表 CSV”,我们一般选用这个👇CSV文件作为我们的自定义分区表,复制将这个文件粘贴到项目的根目录下。
在这里插入图片描述
在这里插入图片描述

✨我们来详细看一下当前分区表中的内容都有什么
在这里插入图片描述

分区名称类型子类型偏移量大小描述
nvsdatanvs留空(具体地址值未指定)0x6000非易失性存储区,用于保存设备重启后仍需保留的配置数据,如Wi-Fi凭据等
phy_initdataphy留空(具体地址值未指定)0x1000物理层初始化数据区,通常存放与硬件初始化相关的固件或配置信息
factoryappfactory留空(具体地址值未指定)1M (1MiB)出厂固件或用户可升级的应用程序固件存储区,用于存储设备的主要应用程序代码

可见我还有很多的Flash没有使用(毕竟我的核心板有16MB的Flash😙)

✨接下来我们对分区进行修改

1️⃣添加一个分区,起名myapp 2️⃣修改分区表文件名为我们自定义的名称
在这里插入图片描述

3️⃣在 menuconfig 中修改为“自定义分区表 CSV”
在这里插入图片描述
之后我们在上传程序会按照分区表的内容对ESP32进行分区

✨在编写程序时只需要稍微修改nvs_flash_init()nvs_open()这两个函数即可如下👇,其他操作和操作nvs相同

    char* partition_name="myapp";   //我们添加的分区名nvs_flash_init_partition(partition_name);   //初始化分区char* name_space="学习资料";nvs_handle_t learning_handle;   nvs_open_from_partition(partition_name,name_space,NVS_READWRITE,&learning_handle); //打开

结论

参考资料:
ESP-IDF Partition Tables

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

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

相关文章

Scala 第一篇 基础篇

Scala 第一篇 基础篇 一、变量与常量 1、变量2、常量 二、数据类型 1、数据基本类型概览2、元组的声明与使用3、Range介绍和使用4、Option 类型的使用和设计5、类型别名 三、运算符四、程序逻辑 1、一切都是表达式2、分支语句3、循环语句 五、集合 1、List2、Set3、Map4、Arra…

MySQL高级(索引-性能分析-explain执行计划)

explain 或者 desc 命令获取 MySQL 如何执行 select 语句的信息,包括在 select 语句执行过程中表如何连接和连接的顺序。 -- 直接在 select 语句之前加上关键字 explain / desc explain select 字段列表 from 表名 where 条件 ; explain select * …

电机控制专题(一)——最大转矩电流比MTPA控制

文章目录 电机控制专题(一)——最大转矩电流比MTPA控制前言理论推导仿真验证轻载1Nm重载30Nm 总结 电机控制专题(一)——最大转矩电流比MTPA控制 前言 MTPA全称为Max Torque Per Ampere,从字面意思就可以知道MTPA算法的目的是一个寻优最值问题,可以从以…

SQL Server 2022 安装及使用

SQL Server 2022 前言一、安装SQL Server 2022下载SQL Server 2022安装SQL Server 2022配置SQL Server 2022 二、安装SQL Server Management Studio下载SQL Server Management Studio安装SSMS-Setup-CHS 三、使用SQL Server 2022四、解决连接到服务器报错问题 前言 SQL Serve…

git 快问快答

我在实习的时候,是用本地开发,然后 push 到 GitHub 上,之后再从 Linux 服务器上拉 GitHub 代码,然后就可以了。一般程序是在 Linux 服务器上执行的,我当时使用过用 Linux 提供的命令来进行简单的性能排查。 在面试的时…

应用编程之进程(三-通信篇)

所谓进程间通信指的是系统中两个进程之间的通信,不同的进程都在各自的地址空间中、相互独立、隔离,所以它们是处在于不同的地址空间中,因此相互通信比较难,Linux 内核提供了多种进程间通信的机制。 大部分的程序是不要考虑进程间…

Microchip逆市扩张,接连收购2家公司

尽管年初传来降薪停工的消息,全球领先的半导体解决方案供应商Microchip并未因此停下扩张的脚步。相反,该公司在短短的一个月内,接连宣布收购两家公司,展现了其坚定的市场布局和前瞻的战略眼光。 4月11日,Microchip成功…

二进制OpenStack

二进制搭建OpenStack 1.环境准备 1.1机器的准备 主机名服务器配置操作系统IP地址controller-node4C8Gcentos7.9172.17.1.117computer-node4C8Gcentos7.9172.17.1.118 1.2网络架构 [rootcotroller-node ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noque…

Java JNI调用本地方法1(调用C++方法)

一、基础概念 1、JNI&#xff08;Java Native interface&#xff09;:sun公司提供的JNI是Java平台的一个功能强大的接口&#xff0c;实现java和操作系统本地代码的相互调用功能&#xff0c;系统本地代码通常是由其他语言编写的&#xff0c;如C。 二、JNI使用步骤 1、定义一个J…

选定进行压缩的卷可能已损坏。请使用chkdsk来修复损坏问题,然后尝试再次压缩该卷

Windows Server 2008R2环境下&#xff0c;进行磁盘重新分区时&#xff0c;想要对系统盘进行“压缩卷”&#xff0c;结果报错提示“选定进行压缩的卷可能已损坏。请使用Chkdsk来修复损坏问题&#xff0c;然后尝试再次压缩该卷。”这是硬盘出现了坏道导致的&#xff0c;硬盘出错无…

中仕公考:教师编制和事业单位d类一样吗?

教师编制和事业单位D类在考试内容、专业要求、晋升途径等方面有很大的不同中仕为大家介绍一下&#xff1a; 考试内容&#xff1a;教师编的考试包括教育综合知识和学科专业知识&#xff0c;有的地区会额外考公共基础知识。事业单位D类的考试更侧重于职业能力倾向测验和综合应用…

Linux的学习之路:14、文件(1)

摘要 有一说一文件一天学不完&#xff0c;细节太多了&#xff0c;所以这里也没更新完&#xff0c;这里部分文件知识&#xff0c;然后C语言和os两种的文件操作 目录 摘要 一、文件预备 二、c文件操作 三、OS文件操作 1、系统文件I/O 2、接口介绍 四、思维导图 一、文件…

uniapp全局监听分享朋友圈或朋友

把大象装进冰箱需要几步&#xff1a; 1、创建shart.js文件 export default{data(){return {//设置默认的分享参数//如果页面不设置share&#xff0c;就触发这个默认的分享share:{title:标题,path:/pages/index/index,imageUrl:图片,desc:描述,content:内容}}},onLoad(){let ro…

若依前后端部署到一起

引用&#xff1a;https://blog.csdn.net/qq_42341853/article/details/129127553 前端改造&#xff1a; 配置打包前缀 修改router.js 编程hash模式&#xff1a; 前端打包&#xff1a;npm run build:prod 后端修改&#xff1a; 添加thymeleaf包&#xff0c;和配置文件 spri…

JAVA 项目<果园之窗>_1

这几天有空看能不能把水果店管理系统整出来&#xff0c;目标是整个网页版本的&#xff0c;以我的电脑做服务器&#xff0c;数据存在mysql中 以我目前的理解整个项目大致可分为前端部分、后端部分、数据库部分&#xff0c;也就这三个部分 目前打开并运行了一个别人的项目&#…

leetcode(474.最大连续1的个数)(python)

看数据范围知&#xff0c;复杂度不超过&#xff08;nlogn&#xff09;&#xff0c;不过感觉LeetCode很少卡算法时间。 题目要求数组的*****的个数&#xff0c;想到dp动态规划 dp[i][0]表示前i个数字&#xff0c;以第i个元素结尾&#xff0c;全为1的个数 dp[i][1]表示前i个数…

React间接实现一个动态组件逻辑

在开发一个浏览器插件的时候&#xff0c;用的plasmo框架和react支持的&#xff0c;里面使用react开发一个菜单功能&#xff0c;但是又不想使用react-router&#xff0c;所以就想着能不能使用一个很简单的方式做一个替代方案&#xff1f;那肯定是可以。 我在引入一个组件后&…

vue2响应式 VS vue3响应式

Vue2响应式 存在问题&#xff1a; 新增属性&#xff0c;删除属性&#xff0c;界面不会更新。 直接通过下标修改数组界面不会自动更新。 Vue2使用object.defineProperty来劫持数据是否发生改变&#xff0c;如下&#xff1a; 能监测到获取和修改属性&#xff1a; 新增的属性…

C++笔记:类和对象(一)

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量&#xff0c;类型就像是定义了数据的规则&#xff0c;而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型&#xff0c;而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

line 1:20 no viable alternative at input ‘point,‘

背景 遇到一个蛋疼的问题&#xff0c;搞得老夫难受的一&#xff0c;解决了索性记录下 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession61b0005f] was not registered for synchronization because synchronization is not activ…