一个面向 BLE 芯片的 FlashDB 持久化配置管理台

交付架构
Web 管理台
表格化管理配置项,显示串口和协议日志
Web Bluetooth
TinyFrame
提供统一帧格式和请求响应通道
KV 应用层
校验配置名、数据长度和操作类型
FlashDB
在芯片 Data-Flash 中保存配置数据

这个交付物给 BLE 芯片增加了一套持久化配置管理能力。设备端使用 FlashDB 保存配置数据;BLE 通道使用 TinyFrame 提供稳定的访问接口;浏览器端通过 Web Bluetooth 做成管理台,可以查看、添加、修改和删除配置项。

界面效果如下。上方是配置管理表格,下方是固定的串口与协议日志面板。

FlashDB 配置管理台

交付内容

这次交付包含三部分。

第一部分是设备端持久化存储。FlashDB 被移植到 CH58x 工程中,使用 CH583 Data-Flash 的前 16KB 作为业务配置区。WCH BLE 协议栈默认使用的 SNV 区域仍保留在 Data-Flash 尾部,避免应用配置和协议栈内部数据互相覆盖。

第二部分是 BLE 访问接口。配置读写通过一个独立的 KV 应用层统一处理,再由 TinyFrame 通过 BLE UART 传输。这样浏览器端看到的是稳定的配置访问接口,设备端仍保留清晰的存储边界。

第三部分是 Web 管理台。它通过 Web Bluetooth 连接设备,通过 Web Serial 观察串口日志,用表格管理设备里的配置项。

KV 是什么

KV 是 key-value 的缩写,也就是“键值对”。

可以把它理解成一个小型配置表。每一行都有一个名字和一份数据:

设备程序可以用 key 查到对应 value。比如一个设备可以把采样间隔、开关状态、校准参数、功能标志位都放进这个表里。断电后这些配置仍然保存在 Flash 中,下次启动时继续读取。

FlashDB 提供的就是这种嵌入式 KV 数据库能力。它把底层 Flash 的擦写限制封装起来,让业务代码按 key-value 的方式保存配置。

总体架构

这套管理能力分成五层。

Web 管理台运行在浏览器里。它负责展示配置表格,并把用户操作转成读、写、列出配置名、删除配置这几类请求。

Web Bluetooth 负责连接 BLE 设备。浏览器把 TinyFrame 字节流写入 BLE UART 特征值,也从 Notify 中接收设备返回的数据。

TinyFrame 负责帧格式。BLE UART 只是字节流,TinyFrame 提供帧头、长度、类型、校验和请求响应边界,避免上层直接处理分包和粘包。

KV 应用层负责业务校验。它检查 key 是否为空、长度是否超限、字符是否允许、value 是否超长,再把合法请求交给 FlashDB。

FlashDB 负责持久化。它最终把配置写入芯片 Data-Flash,并支持读取、写入、遍历和删除。

设备端能力

设备端提供一个统一的 FlashDB KV 命令。命令类型只有一个,具体动作放在 payload 内部区分。

当前支持四类动作:

key 的长度限制为 31 字节,只允许字母、数字、下划线、短横线、点和斜杠。value 单次最大 128 字节。这个限制让 BLE 传输、FlashDB 存储和前端显示都保持在比较容易控制的范围内。

当前 value 类型只用于前端显示。FlashDB 内部保存的是原始字节,同一个 key 只有一份 value。后续如果需要设备端记住字符串、字节数组等真实类型,可以把类型字段一起封装进 value 再保存。

Web 管理台

Web 管理台把设备里的配置项显示成表格。每一行对应一个 key,列包括类型、数值和操作按钮。

已经提供的操作包括:

底部固定的“串口与日志”面板用于观察运行过程。面板不会随着上方功能页滚动消失,并且可以拖拽调整高度。日志里同时显示 TinyFrame 的发送、接收、Notify 分片和设备串口输出,便于定位问题发生在前端、BLE 传输还是设备端。

适用范围

这套管理台适合固件开发和内部调试阶段使用。

它解决的是“BLE 芯片里有持久化配置后,开发者如何通过蓝牙直接管理这些配置”。它不替代正式产品 App。正式产品还需要权限控制、配置版本迁移、误删保护、用户交互和更完整的异常处理。

当前交付已经覆盖配置管理的基本闭环:设备能保存,浏览器能连接,前端能列出配置,单行能读取、写入和删除,日志能同步观察通信过程。

后续可以继续补两项能力:一是把 value 类型持久化,让设备端返回真实类型;二是给 key 列表增加分页,避免配置项很多时单次 BLE 响应装不下。

本文由 AI 辅助生成,可能存在错误或遗漏,请以实际资料和官方文档为准。