板卡能力与验证边界
本页说明平台改进候选的接口与使用边界。2026-10-01 首批源码与定向主机测试已完成部分验证,完整构建、设备部署、物理行为和长期运行仍以对应候选发布报告为准,不表示现有在线设备已经升级。
芯片支持不等于整板兼容
板卡资料来自认证接口 /api/boards/profiles,资源占用来自 /api/peripherals/resources,新增/修改外设前通过 /api/peripherals/preflight 检查。预检需要授权与开发者模式,不能用离线比较另一板型来改变当前芯片的真实能力。
- scope 为 chip-policy:通用芯片能力与保守资源策略,不能代表某块载板的继电器、供电、屏幕或接线已经验证。
- scope 为 board-policy:已有特定板卡策略;仍须核对板本和接线,不能自动获得实物通过结论。
- scope 为 module-policy:包含芯片限制与模组内部 Flash/PSRAM 接线的保守策略;不代表某块载板已经验证。
- hardwareVerified 保持 false,requiresBoardWiringVerification 为 true;真正的实物验收绑定设备、板本、接线、固件哈希和测试记录。
- 同为 ESP32-S3,Octal PSRAM 与其他内存接线的可用 GPIO 不同;比较时使用完整 profile key,不只比较芯片名称。
ESP32-C3 候选策略
2026-10-03 后继源码还增加经典 ESP32 的 esp32-wroom(编号4)和 esp32-wrover(编号5);尚待集中验证及部署。带 PSRAM 的经典构建禁止把 GPIO16/17 用作普通外设,即使 PSRAM 初始化失败也不释放这些脚。PZ/WROOM 板型不再自动用于所有经典构建,须显式选择;与 PSRAM 冲突时编译拒绝。默认 GPIO 和模组名称不能代替实际载板接线核对。依据:WROOM-32 数据手册、WROVER-E/IE 数据手册。
新增 esp32-c3 策略,保留既有板型编号,新编号为 3。该策略用于当前 C3 构建的实际预检,不再借用经典 ESP32 的引脚表。
| 项目 | 策略与限制 |
|---|---|
| GPIO11~17 | 保护常见模组的 Flash 供电与总线,禁止分配给普通外设 |
| GPIO2、8、9 | 启动绑带脚,显示风险并要求确认,不能只因保存成功就认为上电安全 |
| GPIO18/19 | 保护 USB Serial/JTAG;默认预检视为占用 |
| GPIO20/21 | UART0 控制台脚,按控制台占用策略处理 |
| ADC | 本策略只公开 GPIO0~4 的 ADC1;不以 GPIO5 的 ADC2 做通用可靠采集承诺 |
| PWM / RMT | 六个 PWM 通道;NeoPixel 的 RMT TX 预算为两个,不把 RX 通道当作额外 TX 使用 |
| UART / 总线 | 一个通用 UART、一个共享 I2C 和一个应用 SPI 的软件资源预算;不是全部芯片硬件单元的数量宣传 |
| PCNT / SDMMC | 不声明 PCNT 或 SDMMC 支持;编码器中断路径与 SPI SD 路径应分别配置、验证 |
参考依据:Espressif C3 GPIO 说明、ADC 单次采样限制、RMT 说明。外设配置仍以实际接线为准,默认引脚不是自动接线承诺。
驱动注册容量与内存
传感器驱动注册表使用静态有界数组,默认容纳 12 个注册名;编译参数 FASTBEE_SENSOR_DRIVER_CAPACITY 可设置 1~64。别名也占一个条目,缩小容量前必须确保容纳该固件实际编译的注册名。
外设类型描述增加 registeredDriverCount、driverCapacity、availableDriverSlots、registrationFailures,便于发现不足或重复注册,不应把注册失败的驱动显示成可用。注册条目只是名称、工厂和描述符引用,并不是传感器实例;编译数量、启用数量和实际初始化数量须分别理解。
默认新增四个条目在 ESP32 上约增加 48 字节静态存储,实例依然按需创建。运行时关闭功能不等于固件变小,也不自动证明实例占用全部释放;真实 RAM 收益与碎片/峰值以对应资源报告为准。
板卡列表接口使用 1536 字节固定片段缓冲逐段读取不可变策略,不再一次构造所有板型/引脚的 JSON 树和完整响应副本。响应对象、网络发送队列仍有额外成本;这不是整个 HTTP 请求仅占 1536 字节的承诺。发送前核验总长度,分配失败或未来策略描述超出缓冲边界时返回 503,不截断为成功结果。接口仍需登录且不缓存,原字段保持兼容。
本地主机已测试五种策略的激活标记、不同分片长度、字符转义、超长拒绝和 1000 次重读/提前断开模拟;无 PSRAM 设备上的实际峰值、慢连接与并发仍须实机验证。
验收与升级
功能状态和内存数值的正确解读
| 字段/现象 | 可以说明什么 | 不能据此证明什么 |
|---|---|---|
| compiled | 功能代码包含在当前固件中 | 该功能已有硬件实例,或外接模块已接好 |
| userEnabled | 用户保存的启用意图 | 依赖、预算、驱动初始化均已成功 |
| active | 当前初始化/执行准入门控允许使用 | 所有实例已运行、数据有效,或关闭后对象已释放 |
| bootEnabled / pendingRestart | 提供该字段的功能可比较启动选择与当前选择 | 未提供字段的功能支持安全热切换;缺字段不应当作 false |
| ramB / flashKB / activeRamB | 元数据中的资源估算及其汇总 | 实时内存分配、操作峰值或精确可回收字节 |
| dram8Free / dram8Largest | 状态接口的内部 8-bit DRAM 空闲量和最大连续块(字节) | 单次快照足以排除泄漏或覆盖所有操作峰值 |
功能停用后的资源收益必须按实际生效方式测量,保存失败应保持原配置。预算拒绝、初始化失败、运行期降级和未配置实例需要分别诊断;不通过清空用户选择来掩盖不足。
共享 SPI 的兼容与退出边界
通用 SPI 表示按配置进行字节传输,不等于任意 SPI 芯片已有完整驱动。通用 SPI、SDSPI、MFRC522 和 spi_tft 当前使用全局 SPI 对象;每个模块需要独立 CS,并通过实际板型的引脚/资源预检。不同引脚声明不是另一条独立硬件总线,旧配置绕过预检可能产生冲突。SDMMC 和 RGB 面板不能按 SDSPI/TFT 的规则类推。
后续候选新增通用 SPI 删除时的保守保护:只要其它启用配置仍使用全局 SPI,就不结束总线;旧配置 CS 重叠时不释放其它模块的 CS。该保护只消除提前关闭的部分风险,不表示固定运行租约、并发退出、初始化失败清理或 W5500 的 host 协调已完成;功能是否已在某台设备生效以其固件哈希对应的发布报告为准。
当前规划器仍严格比较 SPI 的引脚组。只写 TFT 没有 MISO,不能因此宣称能与任意全双工 SD/RFID 配置混用;不得为绕过提示而关闭预检或省略物理接线。共享总线的完整支持还需要初始化顺序、传输期间停用、失联恢复、无 PSRAM 与 S3 实机组合验收。
候选发布证据
依次核对源码实现、主机测试、目标编译、部署写入/回读、实物行为和长稳。任一环节待验证,不将其替换为“已支持全部硬件”或“长期稳定”。
部署复用项目现有脚本,保留每台设备自己的身份、认证、网络、MQTT、用户配置和历史数据;不得把公开模板覆盖现场配置,也不能将触屏专用固件用于相同容量的非触屏板。

