本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
OTA 代理库
Overview
利用无线 (OTA) 代理,您可以使用 HTTP 或 MQTT 作为协议来管理 FreeRTOS 设备的固件更新的通知、下载和验证。通过使用 OTA 代理库,可以从逻辑上将固件更新与设备上运行的应用程序进行隔离。OTA 代理可以与应用程序共享网络连接。通过共享网络连接,有可能节省大量的 RAM。此外,可使用 OTA 代理库来定义特定于应用程序的逻辑,以测试、提交或回滚固件更新。
有关使用 FreeRTOS 设置 OTA 更新的更多信息,请参阅FreeRTOS 无线更新.
Features
下面是完整的 OTA 代理接口:
OTA_AgentInit
-
初始化 OTA 代理。发起人提供消息收发协议上下文、可选的回调和超时。
OTA_AgentShutdown
-
完成使用 OTA 代理后清理资源。
OTA_GetAgentState
-
获取 OTA 代理的当前状态。
OTA_ActivateNewImage
-
激活通过 OTA 收到的最新的微控制器固件映像。(详细的作业状态现在应当为“自检”。)
OTA_SetImageState
-
设置当前运行的微控制器固件映像的验证状态(正在测试、已接受或已拒绝)。
OTA_GetImageState
-
获取当前运行的微控制器固件映像的状态(正在测试、已接受或已拒绝)。
OTA_CheckForUpdate
-
从 OTA 更新服务请求下一个可用的 OTA 更新。
OTA_Suspend
-
暂停所有 OTA 代理操作。
OTA_Resume
-
恢复 OTA 代理操作。
API 参考
有关更多信息,请参阅 OTA 代理 API 参考。
示例用法
使用 MQTT 协议的典型的支持 OTA 的设备应用程序采用以下 API 调用顺序来驱动 OTA 代理。
-
连接到 AWS IoT MQTT 代理。有关更多信息,请参阅 coreMQTT 库.
-
通过调用
OTA_AgentInit
初始化 OTA 代理。 您的应用程序可以定义自定义 OTA 回调函数,也可以通过指定 NULL 回调函数指针来使用默认回调。还必须提供初始化超时。回调实施特定于应用程序的逻辑,于 OTA 更新作业完成后执行。超时定义了等待初始化完成所花费的时间。
-
如果在代理准备就绪之前
OTA_AgentInit
超时,则可以调用OTA_GetAgentState
以确认代理已初始化并按预期运行。 -
OTA 更新完成后,FreeRTOS 调用具有以下事件之一的作业完成回调:
accepted
、rejected
或self test
. -
如果新的固件映像已遭拒绝(例如,由于验证错误),应用程序通常可以忽略通知并等待下一次更新。
-
如果更新有效且标记为“已接受”,可调用
OTA_ActivateNewImage
重置设备并启动新的固件映像。
Porting
有关将 OTA 功能移植到您的平台的信息,请参阅 移植指南中的移植 OTA 库FreeRTOS。