一文解析FreeRTOS的OTA特性使用技巧与诀窍
AmazonFreeRTOS可帮助开发人员简化将物联网(IoT)设备连接到云的过程。然而,即使有更简单的云连接,许多开发人员面临的一个主要障碍仍然是如何现场升级其设备的固件。
固件升级常常利用引导程序完成;基于设备架构和可用的通信外设,引导程序可能有多种不同形式。引导程序很普遍,几乎所有嵌入式系统中都有包括,因此开发人员需要利用现有解决方案,而不是从头开始开发。这样,他们可以将更多时间投入到产品的差异化和特性上。
本文将探讨开发人员如何利用内置于AmazonFreeRTOS(a:FreeRTOS)中的引导程序功能(常被称为空中升级(OTA)),来快速实现在其物联网设备上运行引导程序解决方案。
AmazonFreeRTOS的OTA升级概述
AmazonFreeRTOS是一种实时操作系统,其中包含了轻松连接AmazonWebServices(AWS)所需的全部库。AmazonFreeRTOS本质上是FreeRTOS内核,现已包含连接和安全库,以方便与AWS进行安全通信。OTA特性包含在单独的OTA库中,必须单独配置才能包含在a:FreeRTOS下载中。
a:FreeRTOSOTA升级服务包含必要的软件以便开发人员可以执行如下操作:
部署前对固件进行数字签名和加密
将新固件映像安全地部署到单一设备、设备组或整个设备集群
当设备加入组中、重新启动或重新配置时,将固件部署到设备中
将新固件部署到设备后验证其真实性和完整性
监视部署进度
调试失败的部署
这些特性通过运行各种AWS服务来提供,例如:
OTA管理器服务
AWSIoT作业服务
串流服务
AmazonFreeRTOS代码签名服务
OTA库和代理
对开发人员而言,让所有这些部分协同工作所需的步骤是相当多的,无法在一篇文章中详细说明。本文将重点介绍如何入门,以及关于在实验室中成功设置a:FreeRTOS的一些经验教训和诀窍。
选择OTA测试硬件
a:FreeRTOS目前支持多种开发板。它支持的开发套件包括:
TexasInstruments的SimpleLinkWi-FiCC3220SFWirelessLaunchPad开发套件
MicrochipTechnology的PIC32MZEFCuriosity开发套件
STMicroelectronics的STM32L4Discovery套件IoT节点
NXPSemiconductors的LPC54018IoT模块
EspressifSystems的ESP32-DEVKITC开发套件
图1:TexasInstruments的CC3220SF-LaunchXL是一个可以启动AmazonFreeRTOSOTA的全集成解决方案。该微集成一个Wi-Fi模块,最大限度地减小了物理尺寸并降低能耗。
出于多方面原因,本文将重点介绍SimpleLinkWi-FiCC3220SF。首先,CC3220SF是目前唯一集成了Wi-Fi模块的a:FreeRTOS微。虽然其他开发板具有板载Wi-Fi模块,但CC3220SF通过将和Wi-Fi功能集成在单一芯片中,节省了电路板空间和能耗。
其次,CC3220SF的外部存储设备可以存储固件映像并在引导过程中恢复映像,因此其安全特性很有意义且更为复杂。如果读者能够在CC3220SF上成功设置OTA,那么在其他平台上将不会有任何问题。
最后,CC3220SF是OTA演示应用支持的第一款处理器,因此设计人员可以放心,处理器在CC3220SF上已经过全面审查。
图2:J-LinkUltra+是一款全功能专业调试器,其特性包括无限制断点,以及极快的SWO和接口时钟速率。开发人员可以利用J-LinkUltra+执行应用跟踪,以便了解OTA示例如何工作。
除了选择开发板之外,开发人员可能还需放弃板载编程器,而使用专业编程器,例如SeggerMicrocontrollerSystems的J-LinkUltra+。专业编程器会降低程序速度并提供额外的调试功能,例如应用跟踪和RTOS感知调试,这对理解黑盒应用非常重要。开发人员也可利用Tag-Connect的TC201510引脚钉式插头,轻松将编程器连接到目标板。调试器上可能需要TC2050-ARM201020引脚适配器来转接TC2050,以便连接板侧电缆。
图3:Tag-Connect的TC2050-IDC10引脚钉式插头(左)是一种适配器电缆,可将开发板或生产电路板上的连接器基底面减到最小。与SEGGERJ-LINK一起使用时,可能需要TC2050-ARM201020引脚适配器来转接TC2050。
配置AmazonFreeRTOS以实现OTA升级
默认情况下,OTA库未包含在预配置的a:FreeRTOS包中。开发人员必须手动配置这些库和应用。首先,应登录AWSIoT控制台并进入AmazonFreeRTOS菜单。然后,开发人员可以点击“Createnew(新建)”按钮开始创建自定义配置(图4)。
图4:在AWSIoT控制台中,通过单击软件配置菜单中的“Createnew(新建)”按钮可以自定义a:FreeRTOS设备软件。
在配置过程中,开发人员只需要设置几项就能配置OTA特性。其中包括:
选择硬件
选择所包含的a:FreeRTOS库
设置配置名称
对于本例,开发人员选择CC3220SF-LAUNCHXL(图5)。以这种方式选择硬件平台将会引入所有特定于电路板的文件,包括驱动程序。但是,选择电路板并不会自动引入OTA特性。在库部分,开发人员需要添加OTA库(如图6所示)。这将包含所有OTA库,包括开发人员可以参考或采纳的演示示例。
图5:选择将要配合a:FreeRTOSOTA特性使用的硬件配置。
图6:将OTA升级库添加到a:FreeRTOS配置中。
完成此操作后,开发人员便可创建配置并下载,然后将aws_demo项目导入代码调试器。
设置OTA示例代码
一旦导入aws_demosOTA示例,便需要执行若干任务。首先,配置终端、证书和安全密钥。这可以按照a:FreeRTOS入门指南中的步骤完成。遵循该指南并按原样运行aws_demos项目,以便确认已连接到AWS,然后再执行其他操作。
接下来,修改OTA演示非常简单。打开aws_demo_runner.c模块,找到位于模块末尾的DEMO_RUNNER_RunDemos函数。应对vStartMQTTEchoDemo调用添加注释,而vStartOTAUpdateDemoTask调用则取消注释。然后进行快速编译以构建项目,在引导程序功能启用的情况下,项目便可执行。
图7:将OTA演示任务添加到aws_demos应用中。
配置AmazonWebServices以实现OTA
对嵌入式软件开发人员而言,要运行OTA示例,进行到这一步骤时将涉及到云端。为了成功运行OTA示例,开发人员需要根据OTA先决条件指南配置AWS。这要求开发人员:
创建AmazonS3存储桶
授予AWS帐户OTA升级权限
创建OTA服务角色
创建OTA用户策略
授予访问代码签名服务的权限
完成这些操作后,依照最终的用户指南说明运行OTAa:FreeRTOS示例。
AmazonFreeRTOS的OTA特性使用技巧与诀窍
使用a:FreeRTOS中包含的引导程序功能时,为尽量减少潜在问题,开发人员可以采用以下几点技巧和诀窍。其中包括:
阅读“使用AmazonFreeRTOS连接到云”以获取关于如何使用FreeRTOS的一般技巧和信息。
通读AmazonOTA说明文档(详见此处)。
在开发过程中,购买六片开发板并将它们分成三组,每组两片。这样便可试验现场升级设备和组可采用的不同方法。
首先将固件升级部署到较小的设备组,以确保固件升级没有问题,然后才升级整个设备集群。
利用AWSAmazonCertificateManager创建证书并给固件签名。可以使用第三方认证机构,但如果全部在AWS内完成,该过程会比较简单。
考虑将PIC32MZEFCuriosity板用于OTA实验,因为它是第二款支持OTA测试版演示的a:FreeRTOS开发套件。
总结
AmazonFreeRTOS生态系统为开发人员提供了一个现场升级固件的范例。对于可能有不同需求或系统配置的开发人员,此范例可以轻松扩展。利用现有引导程序可为开发人员节省大量开发时间,以便其专注于产品差异化和价值主张。
如本文所述,AmazonFreeRTOS的确可提供空中升级解决方案,该方案目前用于TexasInstrumentsCC3220,而未来无疑将可用于其他AmazonFreeRTOS产品。