ESP 分区名称不同就不会重叠吗,边界怎样判断
分区是否重叠取决于地址区间,与名称不同无关。应按[start,end)比较,前一分区结束地址恰好等于后一分区起点是相邻,不算重叠。
本文由器赋开物编辑整理,AI 辅助撰写。下面输入是合成对照,用于复算公式或协议规则,没有连接真实设备完成现场验证。
本次具体要判断什么?
合法对照a为0x9000至0xB000不含末端,b从0xB000开始。若把b改0xA000,两区间交叠,工具拒绝;不同名称不会让同一Flash地址拥有两份独立空间。
先保存可复算的对照输入
打开ESP-IDF 分区 CSV 布局检查器,把默认值改为下表场景。文字或字节过长时这里只展示摘要,完整原始输入在附件中。
| 输入项目 | 对照值 | 单位或格式 |
|---|---|---|
| 简单分区CSV | a,data,nvs,0x9000,0x2000, b,data,nvs,0xB000,0x2000, |
见字段定义 |
| 实际Flash总容量 | 4 | MiB |
| 分区表偏移 | 0x8000 | HEX或十进制 |
模型或规则得到什么结果?
表后从Offset+0x1000起;空偏移按app 64KiB、data 4KiB对齐
| 结果项目 | 对照输出 | 单位 |
|---|---|---|
| 分区数量 | 2 | 个 |
| 最高分区结束地址,不含末字节 | 0x0000D000 | 按模型解释 |
| 分区占用合计 | 16384 | byte |
| 表后未分配空间总和,非连续保证 | 4141056 | byte |
| 自动偏移后的布局 | a data 0x00009000 8192 byte b data 0x0000B000 8192 byte |
按模型解释 |
仅检查此CSV的名称、基础类型、偏移、重叠与Flash边界;不验证全部子类型、启动兼容性、签名和存量设备迁移。
下载本例完整输入、输出与核验记录 JSON。64 位整数按字符串保留,未四舍五入的计算值保存在附件;设备、仪器和实际结论栏目留空,不把预测当测量。
怎样核对和排查?
对每个分区先求起点加大小的结束地址,统一使用不含末端约定。逐对检查交集,再核对Flash上界、表前保留区域和类型对齐。若CSV行顺序与物理地址顺序不同,保留两者,避免只比较相邻文本行。
哪些做法容易误判?
将“结束地址”既用于最后有效字节又用于下一字节边界,会引入一字节误差。工具显示结束地址不含末字节,Intel HEX摘要则明确最高数据字节包含,两页含义不能混用。
什么条件才足以接受结论?
相邻合法、交叠非法和越界非法三组测试符合约定,官方分区工具继续做完整验证。工具通过仅说明已列检查满足,不保证子类型、镜像和启动流程正确。
适用范围与相关资料
继续查阅相关原理或其他工具。使用不同工具时先核对输入单位、模型和协议版本,避免把一个场景的结论直接套到另一个场景。
只支持无引号的5或6列app/data表、K/M整数单位,名称最多15个UTF-8字节;不验证全部子类型、加密、安全启动和存量设备迁移,不生成烧录二进制。
依据:乐鑫:自定义分区表。实现检查覆盖了独立算例和拒绝路径;工具自身通过测试不能替代你对硬件、SDK版本和业务规则的核验。
继续处理相邻任务
本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。
- 乐鑫:自定义分区表 ↗
docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/partition-tables.html