Skip to content

构建配置 ​

源码构建入口是 platformio.ini。系统只维护一个固件产品;发布环境共享 [esp32_base] 和 [unified_flags],按芯片覆盖分区、PSRAM、OTA 和运行时参数。上述配置段只复用编译参数,不是产品版本,不需要为配置按需启停另建固件档位。

环境矩阵 ​

环境芯片FlashPSRAM分区表OTA
esp32-F4R0ESP324MB无partitions/4MB.csv否
esp32-F8R0ESP328MB无partitions/8MB.csv是
esp32-F8R8ESP328MB8MBpartitions/8MB.csv是
esp32c3-F4R0ESP32-C34MB无partitions/4MB.csv否
esp32c6-F4R0ESP32-C64MB无partitions/4MB.csv否
esp32c6-F8R0ESP32-C68MB无partitions/8MB.csv是
esp32s3-F8R0ESP32-S38MB无partitions/8MB.csv是
esp32s3-F8R8ESP32-S38MB8MBpartitions/8MB.csv是
esp32s3-F16R8ESP32-S316MB8MBpartitions/16MB.csv是
native主机----

9 个 ESP32 环境均属于发布矩阵;发布清单见设备文档 fim/manifest.json。标准命名不再使用 F8R4,R0 表示无 PSRAM,R8 表示 8MB PSRAM。

配置层次 ​

text
[esp32_base]       平台、Arduino、LittleFS、公共库和基础宏
      |
[unified_flags]    统一功能编译开关
      |
[芯片 runtime]     TCP 连接数、队列和任务栈
      |
[env:<name>]       board、分区、PSRAM、OTA 和库覆盖

基础配置使用 partitions/4MB.csv、8MB.csv、16MB.csv 三套分区表;文件系统类型为 LittleFS(CSV 中的 spiffs 标签是 Arduino-ESP32 的兼容命名)。

统一功能开关 ​

unified_flags 提供公共编译开关基线,目标硬件覆盖后的最终能力才决定哪些功能代码进入镜像;不能表述为所有芯片全量编入所有功能。设备屏幕只面向 ESP32-S3。RuntimeFeatureManager 从 /config/features.json 加载用户覆盖,FeatureBudget 再按 DRAM 水位决定是否允许初始化;已编译不代表默认启用,未编译也不能仅修改配置就启用。

类别代表宏运行时默认
核心 WebWEB_SERVER、WEB_STATIC、WEB_API、AUTH、SESSION开启
基础能力MQTT、GPIO、PERIPH_EXEC、HEALTH_MONITOR、LOGGER编译启用,按页面/配置使用
外设SENSOR_DRIVER、DS18B20、LCD、NEOPIXEL、I2C_SENSORS、RFID 等关闭,按需开启
自动化RULE_SCRIPT、COMMAND_SCRIPT关闭;命令脚本与规则脚本强制组合
运维LOG_VIEWER、FILE_LOGGING、CONFIG_TRANSFER、USER_ADMIN关闭或按构建宏决定
网络扩展ETHERNET、CELLULAR、BLE关闭;需外部硬件

环境级覆盖 ​

覆盖环境原因
FASTBEE_ENABLE_OTA=0、OTA_FS=04MB 环境单 app 分区,没有 ota_1
FASTBEE_ENABLE_SCREEN_PANEL=0、SCREEN_UI=0非 ESP32-S3 目标设备屏幕当前仅面向 S3
FASTBEE_ENABLE_IR_REMOTE=0、RF_LEARN=0esp32s3-F8R8与 S3 RMT/库组合存在冲突
FASTBEE_ENABLE_IR_REMOTE=1、RF_LEARN=1esp32-F8R8、esp32s3-F16R8具备对应依赖和资源

修改开关时必须同时考虑库依赖、分区大小、Web 页面资源和内存预算;不要仅修改前端菜单隐藏功能。

运行时资源参数 ​

宏ESP32 F8x / F4R0C3C6S3
CONFIG_ASYNC_TCP_MAX_CONNECTIONS6 / 4468
CONFIG_ASYNC_TCP_QUEUE_SIZE32 / 84824
ARDUINO_LOOP_STACK_SIZE16384 / 12288122881228816384
SCRIPT_TASK_STACK8192 / 6144614461448192
SIMPLE_TASK_STACK6144 / 4096409640966144
ARDUINO_USB_CDC_ON_BOOT-101

上表是PlatformIO配置宏,不是最终任务实例测量。当前 src/main.cpp 强覆盖loopTask栈为24KiB;Worker最低栈无PSRAM8192字节、有PSRAM12288字节,并与 SIMPLE_TASK_STACK 取较大值。Worker数量和实际初始化还受芯片、需求及预算控制。

提高连接数与队列会增加内部DRAM成本,不能据此保证吞吐提升。遇到 503 或内存预算拒绝时,先减少并发和重型功能,再调整这些参数。

OTA 策略 ​

  • 4MB:FASTBEE_ENABLE_OTA=0,OTA 路由不注册,使用串口/在线工具重新烧录合并固件。
  • 8MB/16MB:有 app0/app1,FASTBEE_ENABLE_OTA=1;固件必须小于 app 分区,开始升级前还要通过内存门控。
  • 构建/发布可生成固件、LittleFS和合并镜像,但当前没有独立文件系统OTA writer。旧FASTBEE_ENABLE_OTA_FS宏和配置键保留兼容,不能据其值承诺在线更新Web文件系统;开发候选对otaFs返回未实现。LittleFS写入应使用明确保全现场配置的部署流程,不能用普通应用OTA成功推断文件系统也已更新。

常用命令 ​

powershell
# 仅构建(不操作设备)
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/deploy.ps1 -Env esp32s3-F8R8 -BuildOnly

# 固件及LittleFS定向构建
npm run test:firmware -- esp32s3-F8R8

# Native测试
npm run test:native

# 校验环境、分区和 OTA 矩阵
node scripts/validate-build-matrix.js

同一工作区构建、Host/Native测试和Web资源生成须用 scripts/firmware-build-lock.ps1 串行协调;直接Host测试或Web构建需在外层获取锁。不建议直接把 data/www 当发布源。发布 Web 资源应由 deploy.ps1/gzip-www.js 生成 staging 目录,避免旧的 .gz 文件和页面残留。

自定义环境检查 ​

  1. 明确芯片、Flash、PSRAM 和外部模块。
  2. 选择匹配的 partitions/*.csv;需要 OTA 时必须存在 app1。
  3. 设置对应 FASTBEE_USE_PSRAM、OTA 和网络适配器宏。
  4. 运行 validate-build-matrix.js,再进行固件、LittleFS、登录和 /api/health 冒烟测试。
  5. 记录实际构建环境和镜像 SHA-256,避免把开发环境误当发布固件。

蜂信物联 | fastbee.cn