固件写入工具设计

项目 内容
定位 给现场实施人员用的图形界面工具,跨平台(Windows/Linux/macOS),Rust + egui + probe-rs
使用地点 出发前准备区(不是客户现场),批量准备设备
依据 全流程:开发出原始固件 → 运营上传管理后台(后端签名+加密出共用包)→ 现场人员下载 → 现场人员写入;设备钥匙后台分发;写入必须联网,离线补录取消
实现状态 骨架 v0.1.0;界面、串口对话、烧写接线待接(固件侧 provisioning 协议已定,见 gateway 仓 docs/provisioning.md)

相关仓库:firmware-tool https://github.com/ffffxxxjjj/firmware-tool ;sign https://github.com/ffffxxxjjj/sign ;gateway https://github.com/ffffxxxjjj/gateway 。固件分发全流程见 sign 仓 docs/固件分发全流程.md;服务端端点见 sign 仓 docs/sign-server-api.md。

1. 定位与边界

2. 单台设备流程

  1. 准备:出发前从管理后台批量领号,工具里导入号段;准备包(在线从下载页下载,或选本地文件)。
  2. 联网检查:必须联网,无网拒绝开始。
  3. 操作员登录:工具用操作员账号(用户名密码)登录管理后台(POST /operator/login,操作员会话 Cookie,HttpOnly,12 小时)。
  4. 取密钥:工具向后台上报设备序列号、型号等,后台分发密钥对并绑定到该序列号(POST /devices/issue,只走操作员会话;公钥私钥都存后台,记操作时间、操作人等审计);重发须 reissue=true,返回存量密钥不轮换。
  5. 连接设备:DAPLink 一根线(SWD 烧写 + 虚拟串口对话)。
  6. 写固件:SWD 写初始固件,烧完校验。
  7. 写私钥与序列号:工具经串口发给固件,固件写进一次性可编程存储区,读回确认(PROV BEGIN → PROV SERIAL <序列号> → PROV KEY <64 位十六进制私钥> → PROV COMMIT → OK PROVISIONED;固件回复永不输出私钥)。
  8. 读出显示:工具读回序列号,界面显示,操作人员人工记录台账,点“已记录”继续(台账作核对用;系统记录以后的台分发记录为准)。
  9. 完成:一台完成,换下一台。任一步失败停下,不放行。

注:第 4 步(取密钥)与第 7 步(写私钥与序列号)顺序固定:先取到密钥,再写进设备;没有分发成功的台不写。

3. 界面

4. 服务端(管理后台,接口以实现为准)

5. 设备端配合(已定)

6. 约束与失败处理

7. 待接事项