ESP32 C3开发实战 -5(内存空间存储分配) 📅 发布时间:2026/9/15 13:40:39 👁 浏览次数: 一、下载过程提示内存空间分配内容目前使用的型号是ESP32-C3-WROOM-N4是一颗外挂4MB flash的低成本模块编译后以后终端会跳出来当前的flash内存空间分配二、空间换算先统一换算1.nvs,data,nvs,0x9000,24K,类型数据分区NVS非易失性存储作用芯片内置小型键值数据库用来存配置、WiFi 账号密码、蓝牙配对信息、设备参数、用户自定义参数断电不丢失。大小24K常规配置完全够用参数多可适当扩容。起始地址0x90002.otadata,data,ota,0xf000,8K,类型数据分区OTA 专用标记区作用A/B 双固件切换的 “切换标记位”双 OTA 模式下有ota_0、ota_1两个固件区这个分区专门记录当前运行哪个固件分区升级是否成功、是否需要回滚大小8K固定尺寸即可不用改。没有这个分区双 OTA 升级逻辑会失效。3.phy_init,data,phy,0x11000,4K,类型数据分区射频校准区作用存储WiFi / 蓝牙射频校准参数PHY 物理层参数出厂校准数据、射频补偿参数都存在这里。大小4KESP32 系列标准固定分区禁止删除、改大小。4.ota_0,app,ota_0,0x20000,1700K,类型应用固件分区可运行程序OTA 分区 0主分区 A作用存放当前运行的主固件上电默认从这个分区启动。大小1700K5.ota_1,app,ota_1,0x1d0000,1700K,类型应用固件分区OTA 分区 1备用分区 B作用固件在线升级目标分区升级流程新固件下载 → 写入ota_1→otadata标记切换分区 → 重启从ota_1启动下次升级再反向切换实现无缝 OTA 升级、故障回滚。大小1700K三、整体空间核算 Flash 占用数据区总和\(24\mathrm{K} 8\mathrm{K} 4\mathrm{K} \boldsymbol{36\mathrm{K}}\)双固件区总和\(1700\mathrm{K} 1700\mathrm{K} \boldsymbol{3400\mathrm{K}}\)已分配总空间\(36\mathrm{K} 3400\mathrm{K} \boldsymbol{3436\mathrm{K}}\)ESP32-C3 常见 4MB Flash\(4 \times 1024 \boldsymbol{4096\mathrm{K}}\)剩余空闲 Flash\(4096\mathrm{K} - 3436\mathrm{K} \boldsymbol{660\mathrm{K}}\)四、关键特性 使用注意事项1. 架构定位这是标准双 OTA (A/B) 分区表典型用于设备需要远程固件升级物联网设备主流方案升级失败自动回滚保证设备不砖2. 重点约束phy_init严禁修改 / 删除改动会导致 WiFi / 蓝牙射频异常、信号差、无法联网。ota_0/ota_1尺寸必须相等你这里都是 1700K符合规范大小不一致会导致 OTA 升级失败。固件编译后大小不能超过 1700K代码 组件加多、开日志、加蓝牙 / WiFi 功能后固件容易超限会直接编译报错或烧录失败。剩余 660K 空闲 Flash 可以额外新增分区spiffs/fatfs存放网页、配置文件、静态资源自定义data分区存大量日志、离线数据3. 升级流程极简梳理设备当前跑ota_0拉取新版固件 → 写入ota_1改写otadata标记 “下次启动走 ota_1”设备重启 → 运行新固件ota_1下次升级则反向写入ota_0循环切换