AWS IoT 空中 (OTA) 库 - 免费 RTOS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS IoT 空中 (OTA) 库

注意

此页面上的内容可能不是 up-to-date。有关最新更新,请参阅免费 RTOS .org 库页面

简介

AWS IoT Over-the-air (OTA) 更新库允许您使用HTTP或MQTT作为协议管理免费RTOS设备固件更新的通知、下载和验证。通过使用OTA代理库,可以在逻辑上将固件更新和设备上运行的应用程序分开。OTA代理可以与应用程序共享网络连接。通过共享网络连接,您有可能节省大量费用RAM。此外,OTA代理库还允许您定义特定于应用程序的逻辑,用于测试、提交或回滚固件更新。

物联网 (IoT) 将互联网连接扩展到传统上未连接的嵌入式设备。您可以对这些设备进行编程,使其通过互联网传输可用数据,并且可以进行远程监控和控制。随着技术的进步,这些传统嵌入式设备正在快速获得消费者、工业和企业领域的互联网功能。

IoT 设备的部署规模通常很大,并且通常部署在操作人员难以接近或根本无法接近的位置。想象一下发现可能暴露数据的安全漏洞的场景。在这种情况下,使用安全修复程序快速可靠地更新受影响的设备非常重要。如果无法执行OTA更新,那么更新地理位置分散的设备也可能很困难。让技术人员更新这些设备既昂贵又耗时,而且往往不切实际。更新这些设备所需的时间会使它们在更长的时间内面临安全漏洞。召回这些设备进行更新也需要付出高昂的代价,并可能因停机而对消费者造成严重干扰。

Over the Air (OTA) 更新使更新设备固件成为可能,而无需进行昂贵的召回或技术人员拜访。该方法增加了以下好处:

  • 安全 – 能够快速响应在现场部署设备后发现的安全漏洞和软件错误。

  • 创新 – 随着新功能的开发,产品可以经常更新,从而推动创新周期。与传统更新方法相比,这种更新不仅可以快速生效,而且停机时间最短。

  • 成本-与传统上用于OTA更新这些设备的方法相比,更新可以显著降低维护成本。

提供该OTA功能需要考虑以下设计注意事项:

  • 安全通信 – 更新必须使用加密的通信渠道,以防止下载内容在传输过程中被篡改。

  • 恢复 – 由于网络连接中断或收到无效更新等原因,更新可能会失败。在这些情况下,设备需要能够恢复到稳定状态和避免变砖。

  • 作者验证 – 必须验证更新是否来自可信来源,同时还要进行其他验证,例如检查版本和兼容性。

有关使用 Free 设置更OTA新的更多信息RTOS,请参阅免费RTOS Over-the-Air更新

AWS IoT 空中 (OTA) 库

该 AWS IoT OTA库使您能够管理有关新可用更新的通知、下载更新以及对固件更新进行加密验证。使用 over-the-air (OTA) 客户端库,可以在逻辑上将固件更新机制与设备上运行的应用程序分开。 over-the-air(OTA) 客户端库可以与应用程序共享网络连接,从而在资源受限的设备中节省内存。此外, over-the-air(OTA) 客户端库还允许您定义特定于应用程序的逻辑,用于测试、提交或回滚固件更新。该库支持不同的应用程序协议,例如消息队列遥测传输 (MQTT) 和超文本传输协议 (HTTP),并提供了各种配置选项,您可以根据自己的网络类型和条件进行微调。

该库APIs提供以下主要功能:

  • 注册接收通知或投票以获取可用的新更新请求。

  • 接收、解析和验证更新请求。

  • 根据更新请求中的信息下载并验证文件。

  • 在激活收到的更新之前进行自测,以确保更新的功能有效性。

  • 更新设备的状态。

该库使用 AWS 服务来管理各种与云相关的功能,例如发送固件更新、监控多个区域的大量设备、缩小错误部署的爆炸半径以及验证更新的安全性。此库可以与任何MQTT或HTTP库一起使用。

该库的演示演示了在免费RTOS设备上使用核心MQTT库和 AWS 服务的完整 over-the-air更新。

功能

以下是完整的OTA代理界面:

OTA_Init

通过在系统中启动OTA代理(“OTA任务”)来初始化OTA引擎。只能存在一个OTA代理。

OTA_Shutdown

向OTA代理发出关闭信号。OTA代理可以选择取消订阅所有MQTT工作通知主题,停止正在进行的OTA作业(如果有),并清除所有资源。

OTA_GetState

获取OTA代理的当前状态。

OTA_ActivateNewImage

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

OTA_SetImageState

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

OTA_GetImageState

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

OTA_CheckForUpdate

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

OTA_Suspend

暂停所有OTA代理操作。

OTA_Resume

恢复OTA代理操作。

OTA_SignalEvent

向OTA代理任务发出事件信号。

OTA_EventProcessingTask

OTA代理事件处理循环。

OTA_GetStatistics

获取OTA消息包的统计信息,包括接收、排队、处理和丢弃的数据包数量。

OTA_Err_strerror

将错误代码转换为字符串OTA时出现错误。

OTA_JobParse_strerror

将 OTA Job Parsing 错误代码转换为字符串。

OTA_PalStatus_strerror

状态码转换为字符串以获取OTAPAL状态。

OTA_OsStatus_strerror

OTA操作系统状态的状态码转换为字符串。

API参考

有关更多信息,请参阅AWS IoT Over-the-air 更新:函数

示例用法

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

  1. Connect 连接到 AWS IoT 核心MQTT代理。有关更多信息,请参阅 核心MQTT代理库

  2. 通过调用(包括缓冲区OTA_Init、所需的 ota 接口、事物名称和应用程序回调)来初始化OTA代理。该回调实现了特定于应用程序的逻辑,该逻辑在完成更新任务后执行。OTA

  3. OTA更新完成后,Fre RTOS e 会使用以下事件之一调用任务完成回调:acceptedrejected、或self test

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

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

移植

有关将OTA功能移植到您的平台的信息,请参阅《免费移植指南》中的RTOS移植OTA库

内存使用

代码大小为 AWS IoT OTA(使用为 ARM Cortex-M GCC 生成的示例)
文件 使用 -O1 优化 使用 -Os 优化
ota.c 8.3K 7.5K
ota_interface.c 0.1K 0.1K
ota_base64.c 0.6K 0.6K
ota_mqtt.c 2.4K 2.2K
ota_cbor.c 0.8K 0.6K
ota_http.c 0.3K 0.3K
估计总数 12.5K 11.3K