利用 Amazon FreeRTOS 升级边缘固件

作者:Jacob Beningo

投稿人:DigiKey 北美编辑

Amazon FreeRTOS 可帮助开发人员简化将物联网 (IoT) 设备连接到云的过程。然而,即使有更简单的云连接,许多开发人员面临的一个主要障碍仍然是如何现场升级其设备的固件。

固件升级常常利用引导程序完成;基于设备架构和可用的通信外设,引导程序可能有多种不同形式。引导程序很普遍,几乎所有嵌入式系统中都有包括,因此开发人员需要利用现有解决方案,而不是从头开始开发。这样,他们可以将更多时间投入到产品的差异化和特性上。

本文将探讨开发人员如何利用内置于 Amazon FreeRTOS (a:FreeRTOS) 中的引导程序功能(常被称为空中升级 (OTA)),来快速实现在其物联网设备上运行引导程序解决方案。

Amazon FreeRTOS 的 OTA 升级概述

Amazon FreeRTOS 是一种实时操作系统,其中包含了轻松连接 Amazon Web Services (AWS) 所需的全部库。Amazon FreeRTOS 本质上是 FreeRTOS 内核,现已包含连接和安全库,以方便与 AWS 进行安全通信。OTA 特性包含在单独的 OTA 库中,必须单独配置才能包含在 a:FreeRTOS 下载中。

a:FreeRTOS OTA 升级服务包含必要的软件以便开发人员可以执行如下操作:

  • 部署前对固件进行数字签名和加密
  • 将新固件映像安全地部署到单一设备、设备组或整个设备集群
  • 当设备加入组中、重新启动或重新配置时,将固件部署到设备中
  • 将新固件部署到设备后验证其真实性和完整性
  • 监视部署进度
  • 调试失败的部署

这些特性通过运行各种 AWS 服务来提供,例如:

  • OTA 管理器服务
  • AWS IoT 作业服务
  • 串流服务
  • Amazon FreeRTOS 代码签名服务
  • OTA 库和代理

对开发人员而言,让所有这些部分协同工作所需的步骤是相当多的,无法在一篇文章中详细说明。本文将重点介绍如何入门,以及关于在实验室中成功设置 a:FreeRTOS 的一些经验教训和诀窍。

选择 OTA 测试硬件

a:FreeRTOS 目前支持多种开发板。它支持的开发套件包括:

Texas Instruments 的 CC3220SF-LaunchXL 图片

图 1:Texas Instruments 的 CC3220SF-LaunchXL 是一个可以启动 Amazon FreeRTOS OTA 的全集成解决方案。该微控制器集成一个 Wi-Fi 模块,最大限度地减小了物理尺寸并降低能耗。(图片来源:Texas Instruments)

出于多方面原因,本文将重点介绍 SimpleLink Wi-Fi CC3220SF。首先,CC3220SF 是目前唯一集成了 Wi-Fi 模块的 a:FreeRTOS 微控制器。虽然其他开发板具有板载 Wi-Fi 模块,但 CC3220SF 通过将控制器和 Wi-Fi 功能集成在单一芯片中,节省了电路板空间和能耗。

其次,CC3220SF 的外部存储设备可以存储固件映像并在引导过程中恢复映像,因此其安全特性很有意义且更为复杂。如果读者能够在 CC3220SF 上成功设置 OTA,那么在其他平台上将不会有任何问题。

最后,CC3220SF 是 OTA 演示应用支持的第一款处理器,因此设计人员可以放心,处理器在 CC3220SF 上已经过全面审查。

Segger Microcontroller J-Link Ultra+ 专业调试器图片

图 2:J-Link Ultra+ 是一款全功能专业调试器,其特性包括无限制断点,以及极快的 SWO 和接口时钟速率。开发人员可以利用 J-Link Ultra+ 执行应用跟踪,以便了解 OTA 示例如何工作。(图片来源:Segger Microcontroller Systems

除了选择开发板之外,开发人员可能还需放弃板载编程器,而使用专业编程器,例如 Segger Microcontroller Systems 的 J-Link Ultra+。专业编程器会降低程序速度并提供额外的调试功能,例如应用跟踪和 RTOS 感知调试,这对理解黑盒应用非常重要。开发人员也可利用 Tag-ConnectTC2015 10 引脚钉式插头,轻松将编程器连接到目标板。调试器上可能需要 TC2050-ARM2010 20 引脚适配器来转接 TC2050,以便连接板侧电缆。

Tag-Connect 的 TC2050-IDC 10 引脚钉式插头图片

图 3:Tag-Connect 的 TC2050-IDC 10 引脚钉式插头(左)是一种适配器电缆,可将开发板或生产电路板上的连接器基底面减到最小。与 SEGGER J-LINK 一起使用时,可能需要 TC2050-ARM2010 20 引脚适配器来转接 TC2050。(图片来源:Tag-Connect LLC)

配置 Amazon FreeRTOS 以实现 OTA 升级

默认情况下,OTA 库未包含在预配置的 a:FreeRTOS 包中。开发人员必须手动配置这些库和应用。首先,应登录 AWS IoT 控制台并进入 Amazon FreeRTOS 菜单。然后,开发人员可以点击“Create new(新建)”按钮开始创建自定义配置(图 4)。

AWS IoT 控制台中的 a:FreeRTOS 设备软件图片

图 4:在 AWS IoT 控制台中,通过单击软件配置菜单中的“Create new(新建)”按钮可以自定义 a:FreeRTOS 设备软件。(图片来源:Beningo Embedded Group)

在配置过程中,开发人员只需要设置几项就能配置 OTA 特性。其中包括:

  • 选择硬件
  • 选择所包含的 a:FreeRTOS 库
  • 设置配置名称

对于本例,开发人员选择 CC3220SF-LAUNCHXL(图 5)。以这种方式选择硬件平台将会引入所有特定于电路板的文件,包括驱动程序。但是,选择电路板并不会自动引入 OTA 特性。在库部分,开发人员需要添加 OTA 库(如图 6 所示)。这将包含所有 OTA 库,包括开发人员可以参考或采纳的演示示例。

配合 a:FreeRTOS OTA 特性使用的硬件配置图片

图 5:选择将要配合 a:FreeRTOS OTA 特性使用的硬件配置。(图片来源:Beningo Embedded Group)

将 OTA 升级库添加到 a:FreeRTOS 配置中的图片

图 6:将 OTA 升级库添加到 a:FreeRTOS 配置中。(图片来源:Beningo Embedded Group)

完成此操作后,开发人员便可创建配置并下载,然后将 aws_demo 项目导入代码调试器。

设置 OTA 示例代码

一旦导入 aws_demos OTA 示例,便需要执行若干任务。首先,配置终端、证书和安全密钥。这可以按照 a:FreeRTOS 入门指南中的步骤完成。遵循该指南并按原样运行 aws_demos 项目,以便确认已连接到 AWS,然后再执行其他操作。

接下来,修改 OTA 演示非常简单。打开 aws_demo_runner.c 模块,找到位于模块末尾的 DEMO_RUNNER_RunDemos 函数。应对 vStartMQTTEchoDemo 调用添加注释,而 vStartOTAUpdateDemoTask 调用则取消注释。然后进行快速编译以构建项目,在引导程序功能启用的情况下,项目便可执行。

将 OTA 演示任务添加到 aws_demos 应用中的图片

图 7:将 OTA 演示任务添加到 aws_demos 应用中。(图片来源:a:FreeRTOS 示例代码)

配置 Amazon Web Services 以实现 OTA

对嵌入式软件开发人员而言,要运行 OTA 示例,进行到这一步骤时将涉及到云端。为了成功运行 OTA 示例,开发人员需要根据 OTA 先决条件指南配置 AWS。这要求开发人员:

  • 创建 Amazon S3 存储桶
  • 授予 AWS 帐户 OTA 升级权限
  • 创建 OTA 服务角色
  • 创建 OTA 用户策略
  • 授予访问代码签名服务的权限

完成这些操作后,依照最终的用户指南说明运行 OTA a:FreeRTOS 示例。

Amazon FreeRTOS 的 OTA 特性使用技巧与诀窍

使用 a:FreeRTOS 中包含的引导程序功能时,为尽量减少潜在问题,开发人员可以采用以下几点技巧和诀窍。其中包括:

  • 阅读“使用 Amazon FreeRTOS 连接到云”以获取关于如何使用 FreeRTOS 的一般技巧和信息。
  • 通读 Amazon OTA 说明文档(详见此处)。
  • 在开发过程中,购买六片开发板并将它们分成三组,每组两片。这样便可试验现场升级设备和组可采用的不同方法。
  • 首先将固件升级部署到较小的设备组,以确保固件升级没有问题,然后才升级整个设备集群。
  • 利用 AWS Amazon Certificate Manager 创建证书并给固件签名。可以使用第三方认证机构,但如果全部在 AWS 内完成,该过程会比较简单。
  • 考虑将 PIC32MZEF Curiosity 板用于 OTA 实验,因为它是第二款支持 OTA 测试版演示的 a:FreeRTOS 开发套件。

总结

Amazon FreeRTOS 生态系统为开发人员提供了一个现场升级固件的范例。对于可能有不同需求或系统配置的开发人员,此范例可以轻松扩展。利用现有引导程序可为开发人员节省大量开发时间,以便其专注于产品差异化和价值主张。

如本文所述,Amazon FreeRTOS 的确可提供空中升级解决方案,该方案目前用于 Texas Instruments CC3220,而未来无疑将可用于其他 Amazon FreeRTOS 产品。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Jacob Beningo

Jacob Beningo 是一位嵌入式软件顾问,目前与十几个国家的客户保持合作,通过帮助客户改善产品质量、降低成本和加快上市时间来大幅改变他们的业务。Jacob 先后发表了 200 多篇关于嵌入式软件开发技术的文章,是一位广受欢迎的演讲者和技术培训师。他拥有三个学位,其中包括密歇根大学的工程硕士学位。如有需要,欢迎随时通过 jacob@beningo.com 与其联系,也可访问其网站 www.beningo.com,并订阅其月度 Embedded Bytes Newsletter

关于此出版商

DigiKey 北美编辑