Amazon FreeRTOS 可以帮助开发人员简化将物联网(IoT)设备连接到云的过程。然而,即使有更简单的云连接,许多开发人员面临的一个主要障碍仍然是如何现场升级其设备的固件。利用引导程序完成固件升级,这个过程可能有多种不同形式,取决于设备架构和可用的通信外设。引导程序非常普遍,几乎所有嵌入式系统中都有,因此开发人员需要利用现有解决方案,而不是从头开始开发。这样,他们可以将更多时间投入到产品的差异化和特性上。
本文将探讨如何利用内置于 Amazon FreeRTOS 中的引导程序功能(通常被称为空中升级 OTA)来快速实现在 IoT 设备上运行引导程序解决方案。
Amazon FreeRTOS 的 OTA 升级概述
Amazon FreeRTOS 是一种实时操作系统,其中包含了轻松连接 Amazon Web Services (AWS) 所需的一切库。它本质上是 FreeRTOS 内核,但已经包含了与 AWS 进行安全通信所需的库。在单独配置后,OTA 特性必须单独包含才能添加到 a:FreeRTOS 下载中。
a:FreeRTOS OTA 升级服务包括必要软件,以便开发人员能够执行以下操作:
对固件进行数字签名和加密。
安全地部署新固件映像到单一设备、设备组或整个设备集群。
当设备加入组、重新启动或重新配置时,将固件部署到设备中。
在新固件部署后验证其真实性和完整性。
监视部署进度。
调试失败的部署。
这些特性通过运行各种 AWS 服务提供,如:OTA 管理器服务、AWSIoT 作业服务、串流服务以及代码签名服务。此外,还包括 OTA 库和代理对开发人员而言,让所有这些部分协同工作所需步骤相当复杂,本文将重点介绍如何入门,以及在实验室中成功设置 a:FreeRTOS 的一些经验教训和诀窍。
选择 OTA 测试硬件
a:FreeRTOS 目前支持多种开发板,它支持的开发套件包括 Texas Instruments 的 SimpleLink Wi-Fi CC3220SF-Wireless LaunchPad 开发套件、Microchip Technology 的 PIC32MZ EF Curiosity 开发套价等等。图 1 展示了 Texas Instruments 的 CC3220SF-LaunchXL,是一个可以启动 Amazon FreeRTOS OTA 的全集成解决方案,该微集成一个 Wi-Fi 模块,可以最大限度地减小物理尺寸并降低能耗。本文将重点介绍 SimpleLink Wi-Fi CC3220SF,因为它是目前唯一集成了 Wi-Fi 模块的大型处理器之一,其安全特性很有意义且更为复杂。如果读者能够在 CC3220SF 上成功设置 OTA,那么在其他平台上将不会有任何问题。此外,由于 SimpleLink 是第一款处理器,所以设计人员可以放心,该处理器已被全面审查过。
除了选择合适硬件之外,还需要放弃板载编程器,而使用专业编程器,如 Segger Microcontroller Systems 的 J-Link Ultra+。专业编程器会降低程序速度并提供额外调试功能,如应用跟踪及 RTOS 感知调试,对理解黑盒应用非常重要。此外,可使用 Tag-ConnectTC201510 引脚钉式插头轻松连接目标板,并可能需要 TC2050-ARM201020 引脚适配器转接 TC2050 以连接板侧电缆(如图 3)。
配置 Amazon FreeRT OS 以实现OTA 升级
默认情况下,OTA 库未包含在预配置 a:FreeRT OS 包中,因此必须手动配置它们。在 AWSIoT 控制台登录后进入 Amazon FreeRT OS 菜单,然后点击“Createnew”按钮开始创建自定义配置(如图 4)。然后,在进行几项设置后,可以选择硬盘驱动选项,这些选项会自动引入特定文件。但是,不会自动引入OTA 特性的选项。在库部分,要添加OTA 库(如图 6),这就能让你拥有所有必要工具去参考或者采用演示项目中的例子。
完成此操作之后,可以下载该配置,并把 aws_demos 工具包导入代码调试环境里继续工作。这意味着要按照指南上的步骤完成终端、证书及安全密钥相关任务。一旦确认已链接至 AWS,就可以执行其他操作,比如修改演示模块来启用或禁用不同的演示任务以检查是否一切正常运作(见图7)。
最后,如果想进一步了解如何实现空中更新,请查看《实施无线协议栈》,这里详细解释了这个过程,并给出了具体指导信息。