概述
OTA(Over-The-Air)升级系统使物联网设备能够远程接收并安装新固件,无需人工到场。对于分布广泛、数量众多的物联网设备(如智能表计、车载终端、工业网关),OTA是修复漏洞、增加功能、优化性能的唯一可行手段。OTA系统需支持固件版本管理、升级任务编排、灰度发布、分批推送、进度追踪、失败回滚等全流程能力。差分升级可仅传输新旧版本差异包,节省带宽,对使用物联网卡的设备尤为重要——流量成本直接关系到升级成本。智能家居、车联网、工业设备、智能表计等场景均广泛采用OTA。
OTA与达希物联的关联:设备通过物联网卡联网,OTA下载消耗流量。达希物联的物联网卡支持流量池、定向流量等,可优化OTA场景的流量成本。同时,物联网卡状态(激活、停用、欠费)影响设备联网,OTA任务需考虑设备在线率与网络状况。
核心功能
固件管理
版本上传、MD5/SHA256校验、存储(对象存储或CDN)、分发URL生成。支持多产品、多版本、多硬件型号。固件包可加密、签名,防止篡改。支持全量包与差分包并存。
升级任务
按设备、分组、产品、灰度比例创建任务。支持立即执行、定时执行、条件触发(如设备上线时检查)。任务状态:待执行、执行中、成功、失败、已取消。支持任务暂停、重试、回滚。
差分升级
基于BSDiff、HDiff等算法生成差分包,仅传输变化部分。可节省50%-90%流量,对NB-IoT、2G等窄带场景尤为重要。设备端需支持差分还原,需考虑断电、存储不足等异常。
进度追踪与回滚
设备上报下载进度、校验结果、安装状态。平台展示任务进度、成功/失败统计。失败时支持自动回滚到上一版本,或人工介入。需与设备端OTA Agent配合,支持断点续传、断电恢复、双分区切换。
物联网典型应用
智能锁、智能表计、车载T-Box、工业网关、农业传感器等。设备端需实现OTA Agent:版本检查、固件下载、校验、安装、重启、上报结果。弱网场景需断点续传;嵌入式设备需考虑存储、电量约束。
版本切换前必须先核对的条件
设备侧重启之后怎样确认版本生效
一次升级要被当成事务来跟踪:平台持有目标版本和适用的硬件清单,设备侧代理负责下载、校验、写入和重启,重启后再把实际运行的版本报回来。事务在新版本已经运行并完成自检时才结束。只收到下载完成,或只看到设备离线又上线,都不能记成已经生效。双分区设备要等新分区通过启动确认,才把启动标志从旧分区切走。单分区设备则要保证引导程序还能找到上一份可用镜像。
任务按产品、硬件修订号和当前版本圈定设备,再决定立即下发、上线时检查,或按比例分批。硬件修订号应来自设备管理系统里的型号档案,不能靠发货表格口头对照。第一批的观察窗口里若出现无法启动、关键业务中断,或上报版本与目标不符,后续批次应停在队列里。进度要分开记录下载、校验、写入、重启、确认五步。失败停在哪一步,决定下次是续传还是整包重下。
差分包依赖精确的基线版本
差分包只描述从某一个基线版本到目标版本的字节差异。设备当前版本、分区里的实际镜像、差分包头部写下的基线,三者一致,还原才有定义。现场只要存在维修替换过的板卡,或曾经手工刷过中间版本,差分就会解出错误镜像。差分任务的准入条件因此是:设备上报的版本号可信,并且该版本在平台侧仍保留原始整包,以便差分失败时改下整包。
基线混乱、差异很小、或引导程序还不能做还原的型号,应下整包。整包和差分在写入前都要核验签名与摘要,摘要算法要和生成任务时使用的一致。下载中断时只重传未完成的分片,已经校验通过的分片不必重下。镜像若放在分布式存储中,下载地址应限时有效,避免把长期可访问的对象地址写进设备固件或日志。
断电、闪存空间和签名校验
把“文件已经传到设备”记成“设备已经跑在新版本上”,是升级记录里最常见的错账。断电若发生在擦除和写入之间,单分区设备会停在无法引导的状态,引导程序必须能识别不完整镜像并留在旧版本。闪存剩余空间小于解压后的镜像加运行日志时,写入会在中途返回空间不足,原样重试只会重复失败。创建任务前应按型号记下最小空闲空间和允许升级的最低电量,不满足的设备留在待条件队列。
签名用错密钥、设备时钟导致证书校验失败、硬件修订号相同但外设不同,都会出现摘要通过而业务不可用。灰度名单若按随机设备抽取,却抽中同一条产线的全部关键节点,观察窗口就失去代表性。名单应按硬件修订、地域和业务重要性分层。设备正处在不可中断的动作里时,代理应拒绝切换并上报原因。版本上报若沿用缓存的旧字符串,平台会把已经成功的设备判成失败并再次推送,造成反复重启。上报必须读取启动之后真实运行的版本。