当前位置: 首页 > news >正文

ESP32 分区表

ESP32 分区表

1. 分区表概述

ESP32 针对 flash 进行划分,划分为不同的区域用作不同的功能,并在flash的 0x8000 位置处烧写了一张分区表用来描述分区信息。

分区表可以根据自己的需要进行配置,每一个分区都有其特定的作用,可根据自己的需求进行配置以及修改,下述以官方例程里面的分区表进行描述。

以以下分区表为例:

# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x4000,
otadata,  data, ota,     0xd000,  0x2000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000,  1M,
ota_0,    app,  ota_0,   0x110000, 1M,
ota_1,    app,  ota_1,   0x210000, 1M,

对应的 flash 布局如下:
在这里插入图片描述

  • partition_tables 分区:存储描述 flash 分区信息的分区表
  • nvs 分区:非易失性存储 (NVS) 库,主要用于在 flash 中存储键值格式的数据,使用方法参考:非易失性存储 (NVS) 库
  • otadata 分区:记录启动信息,描述启动具体哪一个OTA分区
  • phy_init 分区:用于存储芯片的PHY有关数据,芯片网络有关数据存放在此分区
  • factory 分区:工厂程序分区,通过串口烧录在芯片内的第一个出厂程序
  • ota_0 分区:OTA升级的程序分区
  • ota_1分区:OTA升级的程序分区

2. 分区表操作指南

2.1 查找默认分区表

其实每一个程序都有使用分区表,我们进入 hello_world 例程(路径:esp-idf/example/get-started/hello_world)执行idf.py build 在编译过程打印的信息中我们可以看到对应的工程分区表配置
在这里插入图片描述

那么工程的分区表在哪里呢?在hello_world 工程内似乎也没有看到有关分区表的描述文件。

其实,这是使用了 IDF 工具目录下的分区表配置了工程

输入idf.py menuconfig 打开menuconfig配置菜单,Partition Table 选项下是关于工程分区表的配置

在这里插入图片描述
分区表的使用方案总共有四种方案,分别是:

  • 单个工厂APP分区,无OTA分区
  • 单个工厂APP分区(更大的APP分区),无OTA分区
  • 工厂APP分区,两个OTA分区
  • 自定义分区表

在这里插入图片描述

关于配置描述可参考:CONFIG_PARTITION_TABLE_TYPE

对应的分区表存放在 IDF 目录下的 components/partition_table/目录下

在这里插入图片描述

2.2 配置自定义分区表

配置自定义的分区表,可以首先从 IDF 目录下的 components/partition_table/目录下拷贝一个示例分区表到对应工程目录下

在这里插入图片描述

之后配置menuconfig选择自定义分区表

指定自定义分区表名称

在这里插入图片描述

3. 参考文档

  1. ESP32 分区表描述:ESP32 分区表
  2. 分区表配置描述:CONFIG_PARTITION_TABLE_TYPE
http://www.lryc.cn/news/59562.html

相关文章:

  • JJJ-2 init_IRQ
  • 【NLP实战】基于Bert和双向LSTM的情感分类【下篇】
  • 程序设计方法学
  • Hadoop之Yarn篇
  • Spring Cloud Nacos使用总结
  • 目标检测框架yolov5环境搭建
  • Vulnhub:Digitalworld.local (JOY)靶机
  • STL源码剖析-六大部件, 部件的关系,复杂度, 区间表示
  • 总有一个可用的连接,metaIPC1.2进入智能连接新时代
  • 棋盘问题c
  • 华纳云:Linux系统下怎么创建普通用户并更改用户组
  • 「她时代」背后的欧拉力量
  • kubespray v2.21.0 在线部署 kubernetes v1.24.0 集群【2】
  • 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
  • [python刷题模板] 博弈入门-记忆化搜索/dp/打表
  • I2C通信
  • 【Linux】man什么都搜不了,No manual entry for xxx的解决方案
  • STM32 库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
  • 在 RISC-V Linux 内核中添加模块
  • 利用AOP实现统一功能处理
  • 会话技巧---英文单词
  • VS中解决方案和项目的区别
  • MyBatis的parameterType传入参数类型和resultType返回结果类型
  • 什么是Android FrameWork,请你介绍一下?
  • 【SQL 必知必会】- 第十六课 更新和删除数据
  • 常见哈希算法及其应用
  • PHP快速入门02-PHP语言基础
  • FSCapture - 长截图工具
  • [ 云计算 | Azure ] Chapter 05 | 核心体系结构之管理组、订阅、资源和资源组以及层次关系
  • 【算法LearnNO.1】算法介绍以及算法的时间复杂度和空间复杂度