下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

Over the Air 更新 (OTA)

简介

Over the Air 更新或 OTA 是指通过无线方式向设备提供新软件/固件的过程。OTA 更新提供了一种灵活、 经济、高效的机制,使 IoT 设备在整个生命周期内保持更新、安全和最佳性能。

Over the Air (OTA) 更新的主要优势包括:

  1. 安全性高——能够快速响应现场部署设备后发现的安全漏洞和软件故障 。
  2. 加快创新——随着新功能的开发,可以经常更新产品,进而缩短创新周期。应用程序 与传统的更新方法相比,更新在极短的停机时间内便可以生效。
  3. 节约成本 ——与传统的设备更新方法相比,OTA 更新可以显著降低维护成本 。

OTA 工作流程

下图描述了 OTA 的一般流程:

通知——这是 OTA 流程的第一步。设备会收到待定 Over The Air 更新的通知。该 通知将启动决定如何处理更新的流程。设备可以选择忽略更新或接受更新 触发下载。设备会将其选择通知 OTA 更新提供商。

下载——设备开始通过其支持的协议下载 OTA 更新。设备会将 更新下载到预先选择的存储区域。该更新可能是全新的固件镜像, 也可能是现有固件的补丁。

验证——设备开始通过其支持的协议下载 OTA 更新。设备会将 更新下载到预先选择的存储区域,该区域一般在开始下载前选定。该更新可能是全新的固件映像, 也可能是现有固件的补丁。

安装——现在,设备会自行更新(通常是通过引导加载程序)到最新固件。安装后可能会进行检查, 以验证功能。设备将向 OTA 更新提供商报告固件更新成功。

模块化 OTA 方法

模块化 OTA 由多个小型库和一个 orchestrator 组成。每个库负责一个特定的子任务, 如通知挂起的 OTA 更新或通过 MQTT 下载文件。Orchestrator 负责同步所有小型库 以及引导加载程序和内存池,以执行 OTA 更新。

可定制性

模块化 OTA 方法允许您在需求发生变化时交换或更改 OTA 的不同部分。例如:

  1. 如果您想从 AWS IoT 触发 OTA,那么您可以使用 IoT 作业库来检查新的 OTA 更新或 发送有关 OTA 作业状态的通知。或者,您也可以用任何其他可以通知设备 挂起 OTA 更新的库来代替它。
  2. 您可以使用 OTA 作业库中的 IoT 作业解析器来解析收到的 OTA 作业文档。或者,您也可以根据 OTA 作业文档使用自己定制的作业文档解析器。
  3. 您可以分别使用 MQTT 流或 CoreHTTP 库,通过 MQTT 或 HTTP 下载新软件/固件。 如果您想使用其他协议或库,也可以使用它们。

可扩展性

这种设计可以轻松添加和改进 OTA,而无需大修。例如,您可以添加自己的 签名验证步骤或使用自己的引导加载程序。

可配置性

您可以轻松调整设置以控制不同的参数,例如更改数据块的大小、 每次请求下载的数据块数量或数据块使用的编码方案。

模块化 OTA 数据流程图


Orchestrator

Orchestrator 是指定如何协调 OTA 更新的中心组件。Orchestrator 由用户提供, 包含实现所需 OTA 更新方法所需的自定义组件。典型的更新将包含“通知”、“下载”、“验证” 和“安装”阶段。Orchestrator 将通过拼接组件库和其他外部库来提供这些阶段。每个组件库的说明如下, 请参考使用简单 Orchestrator 的 OTA 演示,以便更好地了解 Orchestrator 的外观 。

IoT 作业库

IoT 作业处理程序是整个 OTA 流程中使用的第一个组件。该库提供启动挂起 IoT 任务(上面第一张图中显示为“通知”) 和更新作业状态的功能。当作业处理程序通过 IoT 作业了解到新的 OTA 更新时, 处理程序将启动作业,并将作业及其元数据传递给一连串的解析器。如果设置了一个解析器来处理任务, 它将向任务处理程序反馈任务已成功启动的信息。成功启动通知会被转发给 OTA 更新提供商 (即 IoT 作业),以标记更新已启动。如果没有解析器能理解作业,则会将 OTA、 更新启动失败的信息转发给 提供商。

OTA 作业解析器

该解析器将验证 IoT 作业是否为 OTA 更新,并在调用下载器之前将字段解析为可用格式。

MQTT 文件流库

文件下载器提供下载 OTA 文件的功能。文件下载器处理通过 CBOR 或 JSON 格式 的 MQTT 流下载更新。下载本身是以“块”的形式进行的,可以将其简单地理解为整个 OTA 更新文件的一部分。 这样做是为了提高下载的可靠性,并允许进行比单个下载“块”更大的固件更新。

引导加载程序和签名验证器

引导加载程序用于验证新固件并将其安装到设备上。模块化 OTA 特意避免实施引导加载程序, 因为业界已有多个引导加载程序可用于大量受支持的微控制器。模块化 OTA 由用户自行选择 引导加载程序和签名验证机制。

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.