Amazon FreeRTOS 可以帮助开发人员简化将物联网(IoT)设备连接到云的过程。然而,即使有更简单的云连接,许多开发人员面临的一个主要障碍仍然是如何现场升级其设备的固件。固件升级常常利用引导程序完成;基于设备架构和可用的通信外设,引导程序可能有多种不同形式。引导程序很普遍,几乎所有嵌入式系统中都有包括,因此开发人员需要利用现有解决方案,而不是从头开始开发。这樣,他們可以將更多時間投入到產品的差異化和特性上。
本文將探討如何使用內置於 Amazon 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 作業服務、串流服務等。
對開發人員而言,让所有这些部分协同工作所需的步骤是相当多的,这里不可能详细说明。本文将重点介绍如何入门,以及关于在实验室中成功设置 a:FreeROS 的一些经验教训和诀窍。
选择 OTA 測試硬體
a:FreeROS 目前支持多种开发板,它支持以下几个示例:
Texas Instruments 的 SimpleLink Wi-Fi CC3220SF Wireless LaunchPad 开发套件;
Microchip Technology 的 PIC32MZ EF Curiosity 开发套件;
STMicroelectronics 的 STM32L4 Discovery 套装 IoT 节点;
NXP Semiconductors 的 LPC54018 IoT 模块。
Espressif Systems 的 ESP32 DEVKITC 开发套件
图1:Texas Instruments 的 CC3220SF-LaunchXL 是一个可以启动 Amazon FreeRTOS OTA 升级的小型集成解决方案,该微集成一个 Wi-Fi 模块,可以最大限度地减小物理尺寸并降低能耗。在本文我们将重点介绍 SimpleLink Wi-Fi CC3220SF,因为它是目前唯一集成了 Wi-Fi 模块的一个微,并且通过将Wi-Fi功能与其他组件合二为一,使得设计更加紧凑,同时节省了电路板空间并降低了能耗。此外,由于CC3220SF具有外部存储设备用于存储 firmware 映像并在引导过程中恢复映像,其安全特性相对复杂。如果读者能够在 CC3220SF 上成功设置 OTA,那么他们也不会遇到其他平台上的问题。此外,由于它是首个支持 OTA 演示应用处理器,因此设计师们放心,可以完全信任这个处理器已经被全面审查过。
除了选择合适的硬体之外,还需要放弃板载编程器,而使用专业编程器,如 Segger Microcontroller Systems' J-Link Ultra+。专业编程器会提高调试速度并提供额外调试功能,比如应用跟踪以及 RTOS 感知调试,这对于理解黑盒应用非常重要。而 Tag-connect TC201510 引脚钉式插头则允许轻松将编程器连接至目标板,同时可能还需要 TC2050 - ARM201020 引脚适配器来转接TC2050,以便连接板侧电缆,为此还有一些特殊工具比如图3中的TC2050-IDC10 插头适配针,也是一种转换工具,用来减少基底面面积,从而实现最小化安装空间需求,在SEGGERJ-LINK一起使用时,可能需要TC2050 - ARM201020 引脚适配器来转接TC2050。
配置 Amazon Freertos 以实现OTA 升级
默认情况下,OTA 库未包含在预配置 a:Freertos 包中,所以必须手动添加这两个库及其应用。在 AWSIoT 控制台进行自定义配置时,只需几项设置即可启用 Ota 特征。这包括:
选择硬盘驱动;
选择含有的 a:Freertos 库;
设置软件名称;
其中,我们选取的是 cc320sf-launxcl 硬盘驱动,并添加了 ota 库,这样就包括了所有 ota 功能及演示代码供参考或者采用。
最后,我们下载这个新的软件包,然后把 aws_demos 项目文件导入代码调试环境进行修改测试运行。
然后我们打开 aws_demo_runner.c 文件找到 vStartMQTTEchoDemo 调用后面注释掉,而 vStartOTAUpdateDemoTask 调用之前取消注释,然后快速编译生成项目,就可以执行带有启动ota更新任务功能的情况下运行该项目。
通过以上步骤,我们已经准备好进行实际操作,现在让我们进入AWS服务端开始我们的实践吧!