OTA 概述
OTA (Over-the-Air,空中下载技术),是指通过网络连接向远程设备传输新固件并完成更新的过程。 尽管其名称中包含 "空中"(暗示无线连接),但在实际应用中,通过有线连接(例如以太网)接收的更新,通常也被称为 OTA 更新。
Zephyr 支持多种 OTA 升级方案,具体如下表所示:
示例 |
路径 |
|---|---|
|
|
|
|
|
|
|
其中,SMP Server 示例提供了一套完整的 OTA 升级方案,它结合 MCUboot 安全引导程序与 MCUmgr 设备管理框架,可实现安全可靠的固件升级。下文将基于该示例介绍 OTA 升级流程。
关键组件
实现一次安全可靠的 OTA 更新,主要依赖以下三个组件协同工作:
MCUboot :一个开源的、安全的引导加载程序。它在设备启动时负责验证应用固件的完整性与合法性,并管理 Flash 中固件分区的切换与升级流程。
SMP Server:内置于您应用程序中的 Simple Management Protocol 服务。它负责接收并处理来自外部管理工具 MCUmgr 的各种命令,包括固件上传、状态查询等。
MCUmgr :运行在您的开发主机上的客户端管理工具。它可以通过 UART/BT/UDP 等多种方式,向设备端的 SMP Server 发送指令,从而触发和控制整个 OTA 流程。
模块层级图
实现安全 OTA 会涉及以下 Zephyr 子模块,层级关系如下图所示:
升级流程
基于上述 关键组件,典型的 OTA 升级流程如下图所示:
备注
示意图以 Swap_using_offset 和 Swap_using_move 升级方式举例。
具体命令使用详见 升级流程,固件格式详见 MCUboot app 固件。