最近在 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 快速入门(九):自定义 ESP32 分区表 partitions.csv相关推荐

  1. 自定义 ESP32 分区表 partitions.csv

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

  2. java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

    第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...

  3. esp32开发快速入门 8 : MQTT 的快速入门,基于esp32实现MQTT通信

    MQTT 介绍 简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的&quo ...

  4. 第二章 Vue快速入门-- 28 自定义按键修饰符

    事件处理-按键修饰符 js 里面的键盘事件对应的键码 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head&g ...

  5. 权限操作-springSecurity快速入门-使用自定义页面

    使用自定义页面 spring-security.xml配置 <?xml version="1.0" encoding="UTF-8"?> <b ...

  6. 乐鑫Esp32学习之旅14 esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录html界面。(附带Demo)

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

  7. Python+ESP32 快速上手(九、控制1602LCD屏幕显示内容

    Python+ESP32 快速上手(九.控制1602LCD屏幕显示内容) 一.九.控制1602LCD屏幕显示内容 二,代码 来自 一.九.控制1602LCD屏幕显示内容 二,代码 import tim ...

  8. VSCODE+Arduino生态快速入门ESP32(一)——点个呼吸灯、开个定时器

    VSCODE+Arduino生态快速入门ESP32(一)--点个呼吸灯.开个定时器 我手里这块是ESP32WROOM开发板,20多块钱,性价比非常高. 1.环境搭建 环境搭建就不在此赘述,CSDN上的 ...

  9. ESP32学习入门:WiFi连接网络

    目录 一.ESP32简单介绍 二.ESP32 Wi-Fi模块介绍 三.ESP32 Wi-Fi 编程模型 四.ESP32 Wi-Fi 事件处理流程 五.ESP32 Wi-Fi开发环境 六.ESP32 W ...

最新文章

  1. 九度OJ 1339:ACM (排序)
  2. 鼠标控制方向java代码_java鼠标操控小程序
  3. Java黑皮书课后题第2章:*2.23(驾驶费用)编写一个程序,提示用户输入驾驶的距离、每加仑多少英里的汽车燃油性能值,以及每加仑的价格,然后显示旅程的费用
  4. case when then的用法
  5. jupyter notebook代码导出_Jupyter Notebook导出包含中文的pdf_亲测有效
  6. 前端-面试题(答案仅限于自己的理解,非正确答案)
  7. 845B - Luba And The Ticket
  8. 416亿元公有云市场:阿里173亿、腾讯50亿、华为35亿
  9. Windows下 tuxedo 安装及测试
  10. 【笔试/面试】—— 计算一个数二进制形式中 0 的个数
  11. 服务器硬盘检测工具有哪些,最常用的10大服务器管理工具
  12. 推荐一款神仙颜值的 Redis 客户端工具
  13. GridView中DataFormatString属性的取值
  14. html 如何在按钮中加字,html button标签 语法
  15. 老毛子(Padavan)路由器解锁网易云灰色音乐
  16. 【翻译服务(1)】有道智云使用入门及文本、图片和语音翻译服务
  17. 华为手机使用应用沙盒动态修改imsi参数
  18. 神州优车上云之路:如何在效率、质量和成本三方面达到平衡?
  19. CWND和HWND之间的关系和转换 和获取方法
  20. 现在很多人都想做抖音短视频,那我们应该怎样去做呢?一起来看一吧

热门文章

  1. SOC课程——②——Verilog程序(明德杨代码规范)
  2. Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)
  3. android 优秀的开源框架整理
  4. Matlab安装bav-io插件时报错:Either you are offline, a firewall is blocking EEGLAB from accessing itsplugin s
  5. CTO 写低级 Bug,致公司 70 GB 数据泄露!
  6. Python玩耍:一个小小的爬虫,在一堆公司列表里筛选出总部位于中国的公司
  7. Android 开源框架精选
  8. Python集合(附练习题)
  9. 〖Python 数据库开发实战 - Python与Redis交互篇⑪〗- 综合案例 - 新闻管理系统 - 缓存新闻数据至redis
  10. 计算机网络(期末复习5、6章)