23 OTA·设备管理·Fleet 洞察
- 章节编号:23
- 所属层:D 部署与服务层(承接 22 打包、10 BSP、28 安全)
- 关联 ADR:ADR-079(OTA 架构:A/B + 签名 bundle)、ADR-080(Fleet 管理与设备画像)、ADR-081(灰度与回滚策略)、ADR-082(provisioning 与身份)
- 上游依赖:10(AB 分区/secure boot)、22(bundle)、24(云端)、28(签名/加密)
学习目标
- 前置知识:读过 22 章(bundle 打包/semver)、10 章(A/B 分区与 secure boot)、28 章(签名/加密链)的概览;知道「什么是 rootfs」「什么是差分升级(delta)」「什么是设备证书」;对「远程升级(OTA,Over-The-Air)一旦失败就可能变砖」有直观认识。无需车队运维或量产产线经验——本章从「更新原子性与车队风险控制」而非「具体云平台 API」切入。
- 学完产出:① 能说清一台机器人的 OTA 是分层的——VLA bundle(周级)、runtime/SDK(月级)、rootfs/BSP(季度)、NPU firmware(极少),并解释「模型 OTA 为什么必须独立于 OS OTA」;② 能把 A/B 双分区升级流程在时间轴上拆开算一遍,理解「为什么双份存储的代价换来的是升级永不砖机」;③ 能解释灰度发布(canary→staged→fleet) 如何把「一次坏更新炸掉整个车队」的风险收敛成「只炸 1%」,并说清触发自动回滚的判据;④ 能讲清签名 bundle 与供应链安全——为什么「设备只信任签名过的包」是 secure boot 到应用层的信任链闭环,以及签名缺失会带来怎样的攻击面;⑤ 能读懂本章 ADR 候选(ADR-079~082),把「怎么升级车队」翻译成「分区策略 + 签名链 + 灰度编排 + provisioning」的可执行输入。
- 阅读姿势:盯住一条主线——「OTA 工程的一切设计,都是在『把新版本推给成千上万台在野设备』这件天然高危的事上,层层加装安全网」。双分区是「升级失败能退回去」的网,灰度是「坏更新只影响一小撮」的网,签名是「设备只装可信包」的网。读表格时不要只看平台名,要问「它在哪一层加了哪张网、失败面被收敛到多大」。
1. 范围与目标
定义 海量机器人设备的远程更新、灰度、provisioning、设备画像。扩展阶段 聚焦 端侧 OTA 机制 + Fleet 最小闭环;大规模多租户 规模化阶段。
核心问题
- 更新 bundle / rootfs / firmware 哪几层?
- 对标 Jetson OTA、Qualcomm、Tesla Fleet、AWS IoT Greengrass?
- 灰度与 rollback 如何与 22 bundle semver 联动?
- secure boot(28) 如何衔接?
2. 需求洞察(具身驱动)
| 场景 | OTA 诉求 |
|---|---|
| VLA 模型热更新 | bundle delta;不影响 1kHz 岛 |
| JetPack 式 BSP 升级 | 全 rootfs A/B;少频次 |
| 工厂产线 provisioning | 设备证书 + 首包 |
| 1000+ 仓储机器人 | Fleet 分组灰度 |
硬性指标:bundle OTA ≤10min;失败 自动回滚;签名 100%。
为什么具身设备的 OTA 比手机/服务器更难:一台机器人是带电机、会移动、可能伤人的物理设备。手机升级失败大不了重刷,机器人升级到一半失联或行为异常,轻则产线停摆、重则安全事故。因此本章所有机制的隐含前提是:任何一次升级都必须满足「要么完全成功、要么完全回退到已知可用状态」的原子性,并且 1kHz 实时控制岛在整个升级过程中不能被打断——这是与通用 IoT OTA 最本质的区别。