资讯详情

ESP32-S31 分区表的访问流程图

📅 2026/10/26 1:57:13 | 华诺云谱 👁 阅读
ESP32-S31 分区表的访问流程图
下面是一个比较符合 ESP32-S31/ESP-IDF 架构的启动与分区表关系图。ESP32-S31 启动流程图┌──────────────────────┐ │ Power On │ │ 上电复位 │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ ROM Boot │ │ 芯片内部固化代码 │ └──────────┬───────────┘ │ │ 通过 SPI0/1(MSPI) ▼ ┌──────────────────────┐ │ Flash 0x0000 │ │ Bootloader │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ Flash 0x8000 │ │ Partition Table │ │ (分区表) │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ 解析所有分区信息 │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ OTA Data 分区 │ │ 当前激活镜像? │ └───────┬───────┬──────┘ │ │ Factory OTA_0/1 │ │ └───┬───┘ ▼ ┌──────────────────────┐ │ 选择应用分区 │ │ Factory/OTA0/OTA1 │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ MMU建立Flash映射 │ │ 0x42000000(IROM) │ │ 0x3C000000(DROM) │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ Jump To App │ │ app_main() │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ 应用运行阶段 │ │ │ │ NVS │ │ SPIFFS/LittleFS │ │ User Data │ │ OTA Upgrade │ └──────────────────────┘Flash分区布局示意图以 16MB Flash 为例Flash 0x000000 │ ├─────────────────────────────┐ │ Bootloader │ │ 约32KB │ └─────────────────────────────┘ 0x008000 ├─────────────────────────────┐ │ Partition Table │ │ 4KB │ └─────────────────────────────┘ 0x009000 ├─────────────────────────────┐ │ NVS │ │ WiFi配置 │ │ SN │ │ Calibration │ └─────────────────────────────┘ 0x00F000 ├─────────────────────────────┐ │ OTA Data │ │ 当前启动镜像信息 │ └─────────────────────────────┘ 0x010000 ├─────────────────────────────┐ │ Factory App │ │ 出厂固件 │ └─────────────────────────────┘ 0x210000 ├─────────────────────────────┐ │ OTA_0 │ │ 当前运行版本 │ └─────────────────────────────┘ 0x410000 ├─────────────────────────────┐ │ OTA_1 │ │ 新下载版本 │ └─────────────────────────────┘ 0x610000 ├─────────────────────────────┐ │ SPIFFS / FATFS │ │ 配置文件 │ │ 图片资源 │ │ 字库资源 │ └─────────────────────────────┘ 0xF00000 ├─────────────────────────────┐ │ User Data │ │ 日志 │ │ 产品信息 │ └─────────────────────────────┘OTA升级切换流程当前运行 OTA_0 │ ▼ 下载新固件 到 OTA_1 │ ▼ 校验镜像 │ ▼ 更新 OTA Data │ ▼ 重启 │ ▼ Bootloader 读取分区表 │ ▼ 发现 OTA_1 有效 │ ▼ 启动 OTA_1 │ ▼ 运行成功 ? ┌──┴──┐ │ │ YES NO │ │ ▼ ▼ 保持 回滚 OTA_1 OTA_0软件访问分区关系app_main() │ ├── nvs_open() │ │ │ ▼ │ NVS分区 │ ├── esp_ota_begin() │ │ │ ▼ │ OTA_1分区 │ ├── esp_partition_read() │ │ │ ▼ │ User Data分区 │ └── esp_vfs_spiffs_register() │ ▼ SPIFFS分区一句话理解ROM ↓ Bootloader ↓ Partition Table ↓ 选择APP ↓ MMU映射Flash ↓ 运行APP ↓ APP再根据Partition Table访问 NVS / OTA / 文件系统 / 用户数据所以在 ESP32-S31 中分区表既是 Bootloader 的“启动导航表”也是应用软件管理整个 Flash 资源的“目录索引表”。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑