OTA 代理库 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

OTA 代理库

概述

利用无线 (OTA) 代理,您可以使用 HTTP 或 MQTT 作为协议来管理 FreeRTOS 设备固件更新的通知、下载和验证。通过使用 OTA 代理库,可以从逻辑上将固件更新与设备上运行的应用程序进行隔离。OTA 代理可以与应用程序共享网络连接。通过共享网络连接,有可能节省大量的 RAM。此外,可使用 OTA 代理库来定义特定于应用程序的逻辑,以测试、提交或回滚固件更新。

有关使用 FreeRTOS 设置 OTA 更新的更多信息,请参阅FreeRTOS 无线更新

功能

下面是完整的 OTA 代理接口:

OTA_AgentInit

初始化 OTA 代理。发起人提供消息收发协议上下文、可选的回调和超时。

OTA_AgentShutdown

完成使用 OTA 代理后清理资源。

OTA_GetAgentState

获取 OTA 代理的当前状态。

OTA_ActivateNewImage

激活通过 OTA 收到的最新的微控制器固件映像。(详细的作业状态现在应当为“自检”。)

OTA_SetImageState

设置当前运行的微控制器固件映像的验证状态(正在测试、已接受或已拒绝)。

OTA_GetImageState

获取当前运行的微控制器固件映像的状态(正在测试、已接受或已拒绝)。

OTA_CheckForUpdate

从 OTA 更新服务请求下一个可用的 OTA 更新。

API 参考

有关更多信息,请参阅 OTA 代理 API 参考

示例用法

使用 MQTT 协议的典型的支持 OTA 的设备应用程序采用以下 API 调用顺序来驱动 OTA 代理。

  1. 连接到 AWS IoT MQTT 代理。有关更多信息,请参阅 MQTT 库,版本 1.0.0

  2. 调用 OTA_AgentInit 初始化 OTA 代理。应用程序可以定义一个自定义 OTA 回调函数,或通过指定 NULL 回调函数指针来使用默认回调。还必须提供初始化超时。

    回调实施特定于应用程序的逻辑,于 OTA 更新作业完成后执行。超时定义了等待初始化完成所花费的时间。

  3. 如果在代理准备就绪之前 OTA_AgentInit 超时,则可以调用 OTA_GetAgentState 以确认代理已初始化并按预期运行。

  4. OTA 更新完成后,FreeRTOS 调用具有以下事件之一的作业完成回调:acceptedrejectedself test

  5. 如果新的固件映像已遭拒绝(例如,由于验证错误),应用程序通常可以忽略通知并等待下一次更新。

  6. 如果更新有效且标记为“已接受”,可调用 OTA_ActivateNewImage 重置设备并启动新的固件映像。

移植

有关将 OTA 功能移植到您的平台的信息,请参阅 FreeRTOS 移植指南中的移植 OTA 库