OTA(使用简单 OTA Orchestrator)
序言
虽然此演示使用 AWS IoT OTA 更新服务,但 FreeRTOS 是通用 MIT 授权的开源软件,
可用于任何适合您的 OTA 机制。但我们还是建议,
无论选择哪种 OTA 方法,最好对固件进行数字签名。这样一来,收到新的可执行映像的设备可以
验证该固件来自授权来源,并且未经修改。您可以使用
AWS IoT 代码签名
对固件进行签名,也可以使用您自己的代码签名工具进行签名。
演示简介
简单 OTA Orchestrator:此演示 Orchestrator 执行 OTA 更新的最小功能,即
在 IoT Core 中检查 OTA 作业、下载固件文件,并向 IoT Core 报告完成情况。简单 OTA Orchestrator
会在命令行打印 OTA 文件内容。此演示使用 FreeRTOS、coreMQTT、MQTT 文件流和 IoT 作业库
简单 OTA Orchestrator 代码分为 ota_demo.h 和 ota_demo.c 两个文件。点击
此处,即可找到这些文件。
此演示中有两项任务:OTA 任务和 MQTT 任务。
OTA 任务
- 该任务执行以下操作:
- 检查是否有挂起的 OTA 作业。
- 如果有挂起的 OTA 作业,则下载作业文档。该任务还会更新 AWS IoT Core 上的作业状态。
- 解析下载的作业文档并提取下载新固件所需的参数。
- 将提取的参数传递给 MQTT 流下载器进行初始化。
- MQTT 文件流下载器请求数据块后,即可开始下载新固件。
- 成功下载新固件后,它会将 AWS IoT Core 上的作业状态更新为 "SUCCESS"。
MQTT 任务
- 此任务负责运行 MQTT 进程循环,处理所有传入的 MQTT 消息。
演示设置
设置 AWS IoT Core
要设置 AWS IoT Core,请遵循 AWS
IoT Core 设置指南。该指南介绍了如何注册 AWS 账户、创建用户以及向 AWS IoT Core 注册设备。按照
AWS IoT Core 设置指南中的说明生成以下实体:
- 设备端点。
- AWS IoT 事物(以及关联的 ThingName)。
- PEM 编码的设备证书。
- PEM 编码的私钥。
- PEM 编码的根 CA 证书。
模拟器/设备需要实体才能与 AWS IoT Core 连接。
设置 OTA 云服务
简化 OTA 设置向导
我们创建了一个辅助向导以改善 AWS IoT 和 OTA 体验。此
脚本能够简化 IoT 事物和 OTA 作业的创建,还提供事物组管理功能。使用该向导时需要遵循的设置步骤
与其他并无不同,它只给出连接到 AWS IoT 和处理创建任何必要
OTA 相关工具所需的全部信息提示。我们强烈建议使用设置向导,因为它既能缩短连接到 AWS IoT 生态系统的时间,
又比手动设置更易于使用。
准备创建 OTA 更新作业
若要发送 OTA 作业,需要更新存储在 S3 存储桶中的固件映像。AWS IoT OTA Manager Service
将从该存储桶中读取映像并将其发送到设备。
生产工作流程示例:
- 编写 MCU 固件,集成 OTA 客户端库源代码。
- 使用初始固件对设备硬件 (MCU) 进行编程。
- 在本地更改和测试固件。
- 为新版本的固件生成二进制文件。
- 将新版本上传到 S3,并使用 OTA 作业将其发送至 MCU。
运行演示
构建并运行 OTA 演示项目
OTA 演示项目可在此处下载。点击
此处,查看项目构建说明。
在继续之前,请验证是否能够构建并运行该项目。
创建 OTA 更新作业
此时,您应该已经:
- 使用 AWS IoT Service 创建 AWS IoT 事物。
- 设置 S3 存储桶并管理各种服务的权限。
- 将“更新”的固件映像上传到 S3 存储桶。
- 完成代码签名所需的设置。
- 配置在设备上运行的 OTA 客户端。
运行 OTA 客户端并设置云服务之后,下一步是
创建 OTA 作业,向设备发送新的固件映像。首先转到
AWS IoT 控制台。