“自嵌入式系统问世以来,现场固件更新一直是每个嵌入式系统的关键组件。访问诸如JTAG或SWD编程器之类的编程工具以及对编程端口进行物理访问通常需要使用额外接口(如USB,CAN,串行端口等)来更新固件。随着许多设备现在可以访问Internet并成为IoT设备,越来越需要执行无线更新。在今天的帖子中,我们将使用Amazon Web Services(AWS)和FreeRTOS看看如何进行OTA。
”自嵌入式系统问世以来,现场固件更新一直是每个嵌入式系统的关键组件。访问诸如JTAG或SWD编程器之类的编程工具以及对编程端口进行物理访问通常需要使用额外接口(如USB,CAN,串行端口等)来更新固件。随着许多设备现在可以访问Internet并成为IoT设备,越来越需要执行无线更新。在今天的帖子中,我们将使用Amazon Web Services(AWS)和FreeRTOS看看如何进行OTA。
使用AWS的OTA概述
OTA更新可能会使开发人员第一次(或多次)遇到更新感到有些恐惧,该过程涉及很多部分,但总体而言,OTA流程可以分解为以下所示的简单图表:
图片来源:Beningo Embedded Group
如您所见,固件更新包含三个主要部分:
发布新固件更新的OEM
存储并更新AWS
接收固件更新的已部署设备
显然,在此示例中,AWS在整个过程中扮演着非常重要的角色。首先,将新的固件映像上传到S3存储桶,该存储桶用于存储固件映像。接下来,将新固件添加到S3存储桶中,OEM将使用IoT核心版调度一项作业,该作业将通知已部署的设备有可用的固件更新。最后,已部署的设备下载新映像,对其进行验证,然后更新其应用程序代码。届时,将更新设备并运行新的应用程序代码,直到进程重新启动并且有新的更新可用为止。
微控制器中的OTA支持
概述确实使OTA更新看起来很简单,这是因为开发人员已经完成了所有繁重的工作。如果团队决定他们要从头开始构建自己的解决方案,他们会发现他们将投入大量的开发工作。团队确实不想建立自己的OTA解决方案,而是利用现有的解决方案,以便他们可以专注于自己的产品功能和差异化因素。对于计划使用FreeRTOS的团队,他们可以利用Amazon的FreeRTOS库和OTA示例来极其快速地启动并运行OTA解决方案。
AWS OTA解决方案的一个好处是,许多微控制器供应商都支持该解决方案。例如,如果您要访问AWS合作伙伴设备目录,您会发现有数十家芯片供应商合作伙伴支持了近60种不同的开发板。现在,并非所有这些都支持OTA解决方案,但是相当一部分支持。这为开发人员提供了广泛的设备可供选择,此外,开发人员还可以将示例移植到其他处理器上。
OTA功能和能力
在过去的几周中,我将特别在Infineon / Cypress PSoC 64 Standard Secure–AWS Wi-Fi BT Pioneer Kit上尝试通过FreeRTOS来测试AWS OTA演示代码。我提到此套件是因为从安全角度来看,它特别有趣,因为它们不仅支持“传统” OTA或引导加载程序,而且还尽力确保不仅可以安全地更新固件,还确保引导微控制器上的处理过程建立了安全的信任根。
并非所有OTA或Bootloader解决方案都是一样的,而且在许多情况下,还存在自定义和配置的空间。例如,默认情况下,PSoC 64 OTA演示被配置为为推送到S3存储桶的固件提供标准二进制文件输出。但是,在Cypress工具链中,有一个Secure SDK工具,其中包含可用于加密固件映像的几种策略。然后,安全引导加载器上的设备会在对新固件映像进行写入之前对其进行解密和验证。
在查看适用于微控制器的潜在OTA解决方案时,应牢记以下几个功能:
微控制器建立信任根
微控制器包括一个安全的引导程序(用于验证完整性,验证和解密映像)
固件映像可以加密
易于生成固件更新
易于管理已部署设备的数量
结论
OTA更新正迅速成为几乎所有物联网设备的要求。这些解决方案可帮助开发人员以最少的精力在现场更新固件,从而使他们比起引导加载程序和OTA等通用设备设计元素,将更多的精力放在产品上。在尝试使用Cypress PSoC 64开发板和AWS OTA演示进行实验时,我发现我能够配置AWS和开发板在第一次进行固件更新的时间大约为一个小时,这很不错,因为从头开始启动这样的解决方案通常需要几个月的时间。
分享到:
猜你喜欢