最近在 ESP32 编译中遇到了以下问题:

esp_image: Image length 1057652 doesn't fit in partition length 1048576
boot: Factory app partition is not bootable
boot: No bootable app partitions in the partition table

这里应该是分区表分配给 APP 的空间不够。借此契机来了解一下 ESP32 的分区表 partitions.csv 吧。


1. ESP32 预定义分区表

make menuconfig 配置中可选择以下预定义分区表:

  • Single factory app, no OTA
  • Factory app, two OTA definitions

接下来可以分别查看其中的具体信息。

1.1 Single factory app, no OTA

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

我们可以看到:

  • 定义了两个用于存储 NVS 库分区和 PHY 初始化数据的数据区域
  • 在0x10000(64 KB) 偏移量处为 factory 应用程序,定义的长度是 1 M

故此时程序固件大于 1 M,即会出现文章开头的报错。

1.2 Factory app, two OTA definitions

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

我们可以看到:

  • 有 factory、ota_0 和 ota_1三个应用程序分区定义,这三种 Type 都设置为 app。长度大小都是 1M;
  • 有一个 ota data 区域,一般用于保存 OTA 更新的数据。 如果 ota data 为空,它将执行 factory 应用程序。

2. 解决方案:自定义 ESP32 分区表

Single factory app, no OTA 来举例,如果 程序固件 大于 1 M,即会出现文章开头的错误。此时我们可以做如下修改(flash 为 4 M 时):

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 2M,

修改后如果程序固件不大于 2 M,就不会报错了。

自定义 ESP32 分区表 partitions.csv相关推荐

  1. ESP32 快速入门(九):自定义 ESP32 分区表 partitions.csv

    最近在 ESP32 编译中遇到了以下问题: esp_image: Image length 1057652 doesn't fit in partition length 1048576 boot: ...

  2. ESP32分区表,flash大小修改

    分区表: 用Excel表格打开分区表文件partitions_singleapp.csv 例如我的路径E:\Espressif\frameworks\esp-idf-v4.3.2\components ...

  3. Arduino ESP8266自定义配置分区表

    ESP8266自定义分区表配置 随着项目的不断开发,项目文件也不断在增大,在没有考虑更换主硬件的条件下,最大开发利用有限资源势在必行,所以今天带来ESP8266自定义分区表的配置. 我这里以版本:2. ...

  4. 乐鑫Esp32学习之旅 22 讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等,附带Demo;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  5. 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  6. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  7. 乐鑫Esp32学习之旅11 入门 乐鑫esp-adf 音频框架开发,造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  8. 乐鑫Esp32学习之旅28 分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,扩大容量存储更多的资源。(开源源码工程)。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

  9. 乐鑫Esp32学习之旅27 带你在Windows10平台下用自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

最新文章

  1. 从0开始搭建坚不可摧的Web系统主流架构
  2. Gridview分页模板
  3. 性能翻倍 IBM借DS3500拓中低端存储市场
  4. VisualStudio C++内存泄漏的检测方法(二)
  5. mysql zip 安装
  6. 超全超详细AC-DC电源模块测试教程!
  7. IDEA打开父类的接口方法快捷键
  8. 虚拟机nfs服务器的安装,linux 安装nfs服务器
  9. Eclipse配置Tomcat并运行
  10. dedecms调用日期格式化形式大全
  11. 容灾服务器作用,存储容灾服务
  12. 笔记本风扇声音大怎么办
  13. 文献笔记:Contrast-Phys: Unsupervised Video-based Remote Physiological Measurement viaSpatiotemporal Con
  14. vmware虚拟机运行速度卡慢原因分析及解决办法大全(二)
  15. HCSC 2022cvpr 训练报错
  16. scala 中 foreach 的作用解释
  17. 2021年全球与中国农用拖拉机变速器行业市场规模及发展前景分析
  18. 分页的自由点击和一整页的翻越
  19. android日历窗口实现,基于Android日历及记事功能完整实现.doc
  20. 晨曦记账本怎么导出明细的详细步骤

热门文章

  1. python 是否可以一键修图_别再浪费时间修图了!一键出片它不香吗?
  2. jquery组件 bxslider 的使用介绍
  3. 如何选择适合自己的域名选购?域名怎么购买
  4. 三极管各参数如何选取问题(共射极放大电路)
  5. C语言结构体的大小 — — 内存对齐和位域
  6. vba,自定义公式,农历互转公历,excel ,wps
  7. 山东大学软件学院2022-2023第二学期移动互联网开发技术期末考试回忆版
  8. 基于Java毕业设计材料提交管理系统源码+系统+mysql+lw文档+部署软件
  9. 大数据项目实战——实时推荐系统算法原理
  10. 上市公司的工程师,水平怎么样?看看这个案例