分区布局
分区表决定应用大小、LittleFS 容量和是否能 OTA。源码当前使用 partitions/4MB.csv、8MB.csv、16MB.csv,名称以 platformio.ini 为准。
布局总览
| 文件 | Flash | app0 | app1 | LittleFS | OTA |
|---|---|---|---|---|---|
4MB.csv | 4MB | 0x10000 / 3.1875MiB | 无 | 0x340000 / 768KiB | 否 |
8MB.csv | 8MB | 0x10000 / 3.5MiB | 0x390000 / 3.5MiB | 0x710000 / 960KiB | 是 |
16MB.csv | 16MB | 0x10000 / 7MiB | 0x710000 / 7MiB | 0xE10000 / 1.9375MiB | 是 |
4MB/8MB 布局使用 20KB NVS,16MB 布局使用 16KB NVS 并增加 4KB phy_init;三套布局都包含 8KB otadata。CSV 中 LittleFS 分区标签为 spiffs,这是 Arduino-ESP32 的兼容命名,不代表实际文件系统变成 SPIFFS。
环境对应关系
| 环境 | 分区表 | OTA |
|---|---|---|
esp32-F4R0 | 4MB.csv | 否 |
esp32c3-F4R0 | 4MB.csv | 否 |
esp32c6-F4R0 | 4MB.csv | 否 |
esp32-F8R0 | 8MB.csv | 是 |
esp32-F8R8 | 8MB.csv | 是 |
esp32c6-F8R0 | 8MB.csv | 是 |
esp32s3-F8R0 | 8MB.csv | 是 |
esp32s3-F8R8 | 8MB.csv | 是 |
esp32s3-F16R8 | 16MB.csv | 是 |
OTA 约束
- 只有存在
app1且编译启用FASTBEE_ENABLE_OTA=1的环境才注册/api/ota/*。 - 4MB 环境调用 OTA 接口路由不注册,通常得到
404;501仅适用于已编入OTA但无升级槽的路径。需要写入时按配置保全流程处理。 - 8MB/16MB 环境的固件必须小于 app 分区;开始升级还要满足设备内存门控。
- OTA 完成后设备延迟几秒重启,客户端应先轮询免认证的
/api/health,再重新登录验证版本。
LittleFS 约束
- Web 资源、
/config配置和日志共用 LittleFS 分区。 - 发布时由
deploy.ps1或gzip-www.js生成 staging 目录并上传,不要直接把源码data/www当镜像。 - 分区表、固件和 LittleFS 必须来自同一次构建;只更新其中一项可能导致页面与 API 版本不匹配。
切换分区或固件
- 保全设备身份、网络、认证、协议、外设、规则及非Web文件;通用配置包不是完整备份。
- 确认 Flash 容量和目标环境匹配。
- 核对实际布局、活动槽与恢复路径;若确定需要整片擦除,单独确认其破坏配置的范围,不能默认擦除。
- 一次性烧录 bootloader、分区表、应用和 LittleFS(合并固件地址保持
0x0)。 - 首次启动重新配网,并检查
/api/system/info、/api/health和/api/system/capabilities。

