固件分发全流程

固件从开发到设备、再到后续空中升级的完整流程。角色分工与每步的约束以本文为准。

相关仓库:sign https://github.com/ffffxxxjjj/sign ;gateway https://github.com/ffffxxxjjj/gateway ;firmware-tool https://github.com/ffffxxxjjj/firmware-tool 。

包格式:GWPK v3(共用包,包头 312 字节、格式 3,格式 2 直接拒绝;版本块仍是格式 2,偏移 0x1000,228 字节)。权威定义见 sign 仓 docs/package-format.md;服务端端点见 sign 仓 docs/sign-server-api.md;固件 provisioning 见 gateway 仓 docs/provisioning.md;写入工具设计见 firmware-tool 仓 docs/固件写入工具设计.md。

总览

  1. 开发人员打包(出原始固件)
  2. 运营人员上传包到管理后台(后端签名+加密一次,出共用包)
  3. 现场实施人员从网站下载固件包与写入工具
  4. 现场实施人员写入固件到设备(出发前准备区,批量准备)
  5. 客户现场安装、上电、验在线
  6. 后续空中升级(云端推共用包+按设备包密钥包)

第 1 步:开发人员打包

第 2 步:运营人员上传包到管理后台

第 3 步:现场实施人员从网站下载固件包与写入工具

第 4 步:写入固件到设备(出发前准备区)

这一步不是到了客户现场才做:去客户现场前就准备好(领号、分发、下载包、写入固件都在出发前完成)。

前置:批量领号

工具

单台流程

  1. 联网检查(写入必须联网,无网不能写)。
  2. 操作员登录:写入工具用操作员账号(用户名密码)登录管理后台。
  3. 取密钥:工具向后台上报设备序列号、型号等,后台分发密钥对并绑定到该序列号(POST /devices/issue,只走操作员会话;公钥私钥都存后台,记操作时间、操作人等审计);重发须 reissue=true,返回存量密钥不轮换。
  4. DAPLink 连接。
  5. 串行线调试接口写初始固件并校验。
  6. 串口命令把私钥和序列号发给固件,固件写进一次性可编程存储区,读回确认(PROV BEGIN → PROV SERIAL → PROV KEY → PROV COMMIT → OK PROVISIONED;回复永不输出私钥)。
  7. 读回序列号显示,人工记录台账(纸面台账作核对用;系统记录以后的台分发记录为准,不靠人工登记)。
  8. 完成,换下一台。
  9. 任一步失败停下,不放行;分发没成功、写进没确认,不算完成。

约束

第 5 步:客户现场

第 6 步:后续空中升级

角色与工具

关键规则

遗留