OTA 概述

OTA (Over-the-Air,空中下载技术),是指通过网络连接向远程设备传输新固件并完成更新的过程。 尽管其名称中包含 "空中"(暗示无线连接),但在实际应用中,通过有线连接(例如以太网)接收的更新,通常也被称为 OTA 更新。

Zephyr 支持多种 OTA 升级方案,具体如下表所示:

示例

路径

Golioth

外部仓库

Eclipse hawkBit

zephyr/samples/subsys/mgmt/hawkbit/

UpdateHub

zephyr/samples/subsys/mgmt/updatehub/

SMP Server

zephyr/samples/subsys/mgmt/mcumgr/smp_svr/

Lightweight M2M (LWM2M)

zephyr/samples/net/lwm2m_client/

其中,SMP Server 示例提供了一套完整的 OTA 升级方案,它结合 MCUboot 安全引导程序与 MCUmgr 设备管理框架,可实现安全可靠的固件升级。下文将基于该示例介绍 OTA 升级流程。

关键组件

实现一次安全可靠的 OTA 更新,主要依赖以下三个组件协同工作:

  • MCUboot :一个开源的、安全的引导加载程序。它在设备启动时负责验证应用固件的完整性与合法性,并管理 Flash 中固件分区的切换与升级流程。

  • SMP Server:内置于您应用程序中的 Simple Management Protocol 服务。它负责接收并处理来自外部管理工具 MCUmgr 的各种命令,包括固件上传、状态查询等。

  • MCUmgr :运行在您的开发主机上的客户端管理工具。它可以通过 UART/BT/UDP 等多种方式,向设备端的 SMP Server 发送指令,从而触发和控制整个 OTA 流程。

模块层级图

实现安全 OTA 会涉及以下 Zephyr 子模块,层级关系如下图所示:

../../_images/zephyr_ota_subsystem.svg

升级流程

基于上述 关键组件,典型的 OTA 升级流程如下图所示:

../../_images/zephyr_ota_upgrade_flow_zh.svg

备注