使用Amazon FreeRTOS在边缘更新固件

描述

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

固件更新通常使用引导程序完成,引导程序可以基于设备体系结构和可用的通信外围设备以多种不同形式出现。由于引导加载程序很普遍并且几乎包含在每个嵌入式系统中,开发人员需要利用现有的解决方案,而不是从头开始开发。这使他们可以花更多的时间专注于自己的产品的差异化和功能。

本文将探讨开发人员如何利用内置于Amazon FreeRTOS(a:FreeRTOS)中的引导加载程序功能(通常称为无线更新(OTA))来快速获取在其物联网设备上运行的引导加载程序解决方案。

Amazon FreeRTOS的OTA更新概述

Amazon FreeRTOS是一个实时操作系统,其中包含了轻松连接到亚马逊网络服务(AWS)所需的所有库。亚马逊FreeRTOS基本上是FreeRTOS内核,现在已经包含了连接和安全库,以促进与AWS的安全通信。OTA功能包含在单独的OTA库中,并且必须单独配置才能包含在FreeRTOS下载中。

a:FreeRTOS OTA更新服务包含允许开发者进行以下操作所必需的软件:

  • 部署前对固件进行数字签名和加密

  • 将新固件映像安全地部署到单个设备,设备组或整个设备队

  • 将设备添加到组中时将固件部署到设备,重新启动或重新设置

  • 将新固件部署到设备后验证其真实性和完整性

  • 监视部署的进度

  • 调试失败的部署

这些功能通过各种运行的AWS服务提供,例如:

  • OTA管理器服务

  • AWS IoT工作服务

  • 流媒体服务

  • 代码签名Amazon FreeRTOS服务

  • OTA图书馆和代理

对于开发人员来说,让所有这些部分协同工作所需的步骤是相当大的,并且不可能在单篇文章中详细介绍。相反,本文将重点介绍如何开始学习经验教训以及获得a:FreeRTOS设置在实验室中工作的提示。

选择OTA测试硬件

FreeRTOS目前支持几种不同的开发板。这些开发工具包包括:

  • 德州仪器的 SimpleLink Wi-Fi CC3220SF无线LaunchPad开发套件

  • Microchip Technology的 PIC32MZEF好奇心开发套件

  • 意法半导体的 STM32L4 Discovery Kit IoT节点

  • 恩智浦半导体的 LPC54018 IoT模块

  • Espressif Systems的 ESP32-DEVKITC开发套件

图1:德州仪器的CC3220SF-LaunchXL是一款完全集成的解决方案,可以开始使用Amazon FreeRTOS OTA。该微控制器具有集成的Wi-Fi模块,可最大限度地减小物理尺寸并最大限度地降低能耗。(图片来源:德州仪器)

本文将重点介绍SimpleLink Wi-Fi CC3220SF的几个不同原因。首先,CC3220SF是目前唯一一款具有集成Wi-Fi模块的FreeRTOS微控制器。虽然其他开发板具有板载Wi-Fi模块,但CC3220SF通过将控制器和Wi-Fi功能集成到单个芯片中,节省了电路板空间和能源。

其次,由于CC3220SF的外部存储设备可以存储固件映像并在引导过程中恢复映像,因此CC3220SF的安全特性非常有趣且更为复杂。如果读者能够成功地在CC3220SF上设置OTA,他们将不会在其他平台上运行。

最后,CC3220SF是OTA演示应用程序第一个支持的处理器,因此设计人员可以确信它已完全通过CC3220SF审核。

图2:J-Link Ultra +是一款功能齐全的专业调试器,包含无限制断点和极快的SWO和接口时钟速率。开发人员可以使用J-Link Ultra +执行应用程序跟踪,以便他们了解OTA示例的行为。(图片来源:Segger微控制器系统

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

图3:来自标签连接(左)的TC2050-IDC 10针插头钉是一种适配器电缆,可以最大限度地减少开发板或生产电路板上的连接器占用面积。与SEGGER J-LINK一起使用时,可能需要TC2050-ARM2010 20针至TC2050适配器。(图片来源:Tag-Connect LLC)

为OTA更新配置Amazon FreeRTOS

默认情况下,OTA库不包含在预配置的a:FreeRTOS软件包中。开发人员必须改为手动配置库和应用程序。这可以通过登录AWS IoT控制台并进入Amazon FreeRTOS菜单来完成。然后开发人员可以点击“新建”按钮开始创建自定义配置(图4)。

FreeRTOS

图4:从AWS IoT控制台中,通过单击软件配置菜单中的“创建新”按钮可以自定义a:FreeRTOS设备软件。(图片来源:Beningo嵌入式集团)

在配置中,开发人员需要设置一些设置才能配置OTA功能。这些包括:

  • 选择硬件

  • 选择包含的:FreeRTOS库

  • 设置配置名称

在这个例子中,开发人员可以选择CC3220SF-LAUNCHXL(图5)。以这种方式选择硬件平台将拉入所有特定于电路板的文件,包括驱动程序。但选择电路板不会自动带入OTA功能。在库部分下,开发人员需要添加OTA库(如图6所示)。这将包括所有的OTA库,包括开发人员可以参考或合并的演示示例。

FreeRTOS

图5:选择将与FreeRTOS OTA功能配合使用的硬件配置。(图片来源:Beningo嵌入式集团)

FreeRTOS

图6:将OTA更新库添加到a:FreeRTOS配置中。(图片来源:Beningo嵌入式集团)

完成此操作后,开发人员可以创建配置,下载配置并将aws_demo项目导入Code Composer Studio。

设置OTA示例代码

一旦导入了aws_demos OTA示例,就需要执行几个任务。首先,配置终点,证书和安全密钥。这可以按照a:FreeRTOS 入门指南中的步骤完成遵循本指南并按原样运行aws_demos项目将允许在进一步确认之前确认与AWS的连接。

修改OTA的演示非常简单。打开aws_demo_runner.c模块,找到位于模块末尾的DEMO_RUNNER_RunDemos函数。vStartMQTTEchoDemo调用应该被注释掉,而vStartOTAUpdateDemoTask调用应该被取消注释。然后,快速编译将构建该项目,并准备在启用引导加载程序功能的情况下执行。

FreeRTOS

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

为OTA配置Amazon Web Services

对于嵌入式软件开发人员来说,这就是运行OTA示例的过程,它将界限推向云端。为了成功运行OTA示例,开发人员需要根据OTA先决条件指南配置AWS。这要求开发者:

  • 创建一个Amazon S3存储桶

  • 授予AWS账户OTA更新权限

  • 创建一个OTA服务角色

  • 创建一个OTA用户策略

  • 授予访问代码签名服务的权限 

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

使用Amazon FreeRTOS的OTA功能的技巧和诀窍

开发人员可以遵循以下几条提示和技巧,以尽量减少使用FreeRTOS中包含的引导加载程序功能时可能遇到的潜在问题。这些包括:

  • 阅读“ 使用Amazon FreeRTOS连接到云 ”以获取关于如何开始使用FreeRTOS的一般提示和信息。

  • 阅读可在此处找到的Amazon OTA文档

  • 在开发过程中,购买六块开发板并将它们分成三组,每组两个设备。这将允许试验设备和组可以在现场更新的不同方式。

  • 首先将固件更新部署到较小的设备组,以确保在更新整个设备队伍之前固件更新没有问题。

  • 使用AWS亚马逊证书管理器创建证书并签署固件。可以使用第三方认证机构,但如果全部在AWS内完成,则该过程将被简化。

  • 考虑将PIC32MZEF好奇板用于OTA实验,因为它是第二个:支持OTA beta演示的FreeRTOS开发套件。

结论

亚马逊FreeRTOS生态系统为开发人员提供了一个如何在现场更新固件的例子。对于可能有不同需求或系统配置的开发人员,可以轻松扩展此示例。利用现有的引导加载程序可以为开发人员节省大量开发时间,并让他们专注于其产品差异化和价值主张。

如图所示,亚马逊FreeRTOS确实有一个无线更新解决方案,目前可用于德州仪器CC3220,并且无疑将来可用于其他亚马逊FreeRTOS产品。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分