浅谈智能硬件 OTA

写在前面

OTA 全称 Over-the-Air,空中升级;硬件 OTA 广义有两层含义:

1)固件 OTA(最常用):给 MCU、SOC、单片机、模组刷写固件(底层程序),大家日常说的硬件 OTA 基本都是这个;

2)硬件参数 OTA:不换固件,只远程下发配置参数(阈值、通信地址、校准系数),很多项目里也归到硬件 OTA 体系。

区分:APP 升级叫软件 OTA;单片机 / 设备固件升级 叫 硬件 OTA。

名词区分:

FOTA升级:Firmware Over The Air,中文:固件空中升级 ,是针对直连云设备。

FUOTA升级:LoRaWAN Firmware Update Over The Air ,中文 LoRaWAN固件空中升级,针对携带LoRa 通信模组的子设备。

硬件OTA分类

1. 无线 OTA

  1. WiFi OTA: 设备连路由器,HTTP/HTTPS 从服务器拉取固件包。常见于智能家居, 优点:带宽大、包传输快;缺点:依赖局域网 WiFi,无 WiFi 不能升级。

  2. 4G/5G 蜂窝 OTA :设备内置 4G/5G 模组,公网下载固件,工业设备、车载、野外传感器。 优点:不受局域网限制;缺点:流量成本高,一般固件做差分包减小体积。

  3. NB-IoT / Cat.1 OTA :低功耗物联网设备(水表、气表、烟感),带宽很小,只适合小固件或者分片差分升级,大固件基本不直接全量升级。

  4. 蓝牙 BLE OTA :手机蓝牙直连设备,手机作为中转,把固件传给硬件。典型:手环、蓝牙耳机、传感器模块。 特点是不需要网络,手机本地传包;缺点传输慢,适合小包。

  5. LoRa OTA :远距离低功耗物联网,带宽极低,只能极小固件,一般只做参数 OTA,很少完整固件升级。

2. 有线 OTA

也属于硬件 OTA,很多场景叫本地 OTA。

  • USB OTA:USB 连接电脑,上位机下发固件(如 STM32 DFU)

  • UART/RS485 OTA:串口有线升级,工厂产线、现场调试

  • CAN 总线 OTA:车载 ECU,CAN FD 传输固件包,汽车行业标准

  • Ethernet 有线网口 OTA:工业交换机、PLC

说明:通道只是传输介质,OTA 升级逻辑是独立的,不管蓝牙、4G、串口,底层升级框架原理一致。

硬件OTA流程

1、如何判断设备是否携带 IP协议栈?

这是TCP/IP 第一层 网络接口层的知识,也就是在第一层就能区分出对应设备是自己拉包完成升级,还是依靠网关给自己发包完成升级。

设备是否携带 IP协议栈,也就是有没有完整TCP/IP 协议栈。这主要取决于设备本身的通信模组,其可以查阅模组规格书/模组SDK获取。通用的设备都有哪些通信协议?它们哪些有完整TCP/IP 协议栈?请看下表:

通信模组类型 是否内置 TCP/IP 栈 是否有 IP OTA 方式 覆盖范围 适合场景
WiFi 模组 (ESP32) ✅完整 ✅内网 IP 设备主动拉包 FOTA 覆盖 50~100 米室内 智能家居、工业采集器、WiFi 网关
Cat.1 4G 模组(广域覆盖、插SIM卡) ✅完整 ✅运营商 IP 设备主动拉包 FOTA 全国只要有 4G 信号就能联网 野外设备直接上云,上报数据、图片、日志,远程下发指令
NB-IoT 模组 (带宽极低、强穿透、插SIM卡) ✅精简 IP 栈 ✅IP 设备可 FOTA,只适合小固件 密集地0.3~1.5km;郊区1~5km;开阔10~15m.城市几百米~几公里 智能水表、燃气表、地下井盖、烟雾探测器、低频小数据野外传感器
LoRa 子设备模组(休眠功耗极低) ❌无 ❌无 IP 网关代理 FUOTA 分片下发 通信距离 2~15km 野外农业传感器、水库监测、远程抄表、园区大量低功耗传感器
BLE 蓝牙子模组(超低功耗) ❌无 ❌无 IP 网关 / 手机本地推送固件 距离 10~30 米 手环、温感标签、蓝牙门锁、近距离配置调试
ZigBee 子模组(低功耗、可穿墙、Mesh 组网) ❌无 ❌无 IP 网关推送固件分片 室内10~30 米;室外开阔50~100 米 全屋智能家居传感器、厂房大量采集节点
5G 工业模组(超高带宽、低时延) ✅完整 ✅公网 IP 设备主动拉包 FOTA 全国只要有 5G 信号就能联网 工业网关、高清视频监控、边缘计算终端

备注:一个设备可以携带多种通信模组,如LoRa网关,既有LoRa 射频模组与LoRa子设备通信,又带4G模组,把设备的数据上云。

  1. 单协议设备:升级流程只需考虑这一种链路的特性(比如NB-IoT必须用LwM2M做分片传输)。

  2. 多协议设备/网关 :OTA策略会更复杂,但也是优势。比如,网关可以用4G/以太网这种高带宽链路下载自己的固件 ,同时通过LoRa/Zigbee把子设备的固件分包转发下去。这样,网关就变成了子设备OTA的"代理下载器"。

升级时长

通信协议 固件大小 下载/总升级时长 关键条件
蓝牙 (BLE) ~60 KB 约 1 秒 (传输) 优化连接参数、内部对测环境
BLE (低功耗设计) ~180 KB 2.8 秒 (传输) / 5.4 秒 (总计) 含加载,2M PHY,无压缩加密
CoAP (IEEE 802.15.4) 未注明 17.26 秒 (无线) 512 字节块大小,无线 Mesh 环境
MQTT-SN (IEEE 802.15.4) 未注明 30.15 秒 (无线) 512 字节块大小,受超时重传机制拖累
LoRa (自定义方案) 1 KB 约 118 秒 单邻居,极低带宽,时长随固件增大激增
LoRa (自定义方案) 100 KB 约 449 秒 (~7.5分钟) 单邻居,100KB 固件
LoRa (分块方案) 0.641 KB 1.61 分钟 极小差分/分块固件
NB 模组 (BC26) + TCP 透传 110 KB 约 3 分钟多 (下载) 每包 256 字节、间隔 500ms,440 包计算得出
NB-IoT 模组固件升级 未注明 最长 15 分钟 厂商工具升级模组本身的固件,含擦写流程
华为云 LwM2M FOTA 未注明 下载超时 60 分钟 ,上报超时 30 分钟 平台侧的超时阈值,非实际耗时,但反映了工程预期的上限
多设备 LAN 场景 OTA 未注明 全流程 1-2 分钟 含下载、重启、确认,20 台设备并发时增量很小

QA

什么时候升级

根据实际情况来设置,1)上传完单个升级固件包,就开始升级;2)上传完多个升级固件包,再统一时间升级,这种情况一般是跟软件版本迭代放一起,方便一起通知到用户。

什么情况下会升级失败

分三种情况:

1)下载升级固件包阶段

  1. 网络通信问题
    • 4G/NB 信号弱、丢包高、基站波动;NB PSM/eDRX 唤醒超时,分片拉取不到
    • MQTT/CoAP/HTTPS 连接断开、服务器断连、证书过期、DTLS/TLS 握手失败
    • 分片丢失,重传次数耗尽;CoAP Block2 / HTTP Range 请求失败
  2. 固件包本身问题
    • 固件包损坏、包不完整;平台下发错误版本、固件和硬件型号不匹配
    • 固件大小超出 Flash 可用空间,存储空间不足
  3. 设备资源不足 RAM 内存不够,分片缓存溢出;Flash 读写异常(Flash 磨损、坏块)
  4. 权限 / 校验不通过 固件签名校验失败、CRC/SHA 校验不通过,设备直接拒绝写入。

2)激活/重启失败阶段

固件已经写入备用分区,标记准备升级,重启环节出问题。

  1. Bootloader 读取 B 分区固件失败:Flash 坏块、写入时断电,固件损坏
  2. 固件镜像校验失败(签名、哈希不对),Bootloader 放弃启动新固件,触发回滚到老版本(A/B 分区保护)
  3. 新固件启动崩溃:
    • 新固件 Bug:初始化硬件(球阀执行器、阀位采集、4G/NB 模组)直接 HardFault、看门狗复位
    • 硬件兼容性 Bug,例如:新版本驱动和当前 PCB / 外围器件不兼容

A/B 分区作用:启动自检失败,Bootloader 自动回滚旧固件,设备还能正常工作。

3)运行自检阶段

新固件成功启动,但是业务自检不通过,判定升级失败,触发回滚:

  1. 外设自检失败:阀位采集异常、球阀执行器通讯异常、传感器读取失败
  2. 通信自检失败:无法连上 IoT 平台,MQTT 无法建立连接
  3. 看门狗频繁复位,设备反复重启;业务心跳超时

4)硬件本身原因导致升级失败(底层硬件问题)

  1. Flash 芯片老化、坏块,写入固件分片失败;擦写次数耗尽
  2. 电源不稳:升级擦写 Flash 瞬间电压跌落,写 Flash 出错(工业现场很常见)
  3. 硬件电路故障:MCU、射频模组硬件损坏,无法联网或者无法读写 Flash

5)边界场景:单分区升级(无 A/B,高危,新项目不用)

固件直接覆盖运行区。一旦写入中途断电,固件彻底损坏,设备变砖,无法自恢复。

升级后设备是否要重启

设备升级前,一般可以做到保持当前运行状态,比如球阀开着浇水,可以不做不做任何调整做无感升级。但升级后,如果是主程序升级就需要重启(这是系统强制重启)、补丁类升级就不用重启。正在

相关推荐
HZZD_HZZD11 小时前
大口径摄像水表白皮书拆解:DN40加装改造与字轮识别实测
运维·物联网·腾讯云
SL_staff11 小时前
设备离线时业务不中断:JVS-IOT高可用架构解析
java·物联网·产品
byte轻骑兵16 小时前
【LMP】规范精讲[11]: 暗房里的协议——产线射频测试是怎么指挥芯片的
物联网·通信协议·蓝牙协议·lmp·蓝牙链路管理
芯片人00717 小时前
GEK100系列芯片进入上市公司上海移远通信供应链
人工智能·单片机·嵌入式硬件·物联网·芯片
热文新讯1 天前
迎进博·话疗愈:2026酒店“疗愈睡眠”闭门研讨会在沪举行
大数据·人工智能·物联网
数字新视界1 天前
机房动环监控系统助力数据中心高效能管理与安全保障
物联网·数据可视化·数据中心基础设施管理·dcim管理系统·数据中心dcim
数字新视界2 天前
数字孪生技术赋能智能化转型与创新实践
嵌入式硬件·物联网·系统架构·机房管理·动力与环境监控系统
注塑机数据采集联网2 天前
数据采集网关入门:ZK-D1/D3从零开始构建你的数据运用
大数据·数据仓库·人工智能·物联网·数据库架构·注塑机网关
智购科技智能售货柜2 天前
顾客已经关门,视觉售货柜还在处理旧画面:延迟积压怎么查?~YH
python·单片机·嵌入式硬件·物联网·eclipse
microrain2 天前
跟着一条属性报文走一遍 SagooIoT 的接入链路
物联网·架构·golang·sagooiot