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 升級服務包含必要軟體,以便開發人員可以執行如下操作:
部署前對固件進行數字簽章和加密
將新固件映像安全地部署到單一設備、設備群組或整個設備集群
當設備加入群組、重新啟動或重新配置時,将固件部署到設備中
將新固rne部署後驗證其真實性和完整性
監視部署進度
調試失敗的部署
這些特性通過運行各種 AWS 服務來提供,例如:OTA 管理器服務、AWS IoT 作業服務、串流服務及 Amazon FreeRTOS 代碼簽章服務等。
對於開發人員而言,让所有這些部分協同工作所需步驟相當繁瑣,這裡不會詳細介紹。本文將著重介紹如何開始,以及一些關於在實驗室成功設置 a:FreeRTOS 的經驗教訓與秘訣。
選擇 OTA 測試硬體
a:FreeRTOS 目前支持多種開發板,它支持以下開發套件:
Texas Instruments 的 SimpleLink Wi-Fi CC3220SF-Wireless LaunchPad 開發套件
Microchip Technology 的 PIC32MZEF Curiosity 開發套夥伴
STMicroelectronics 的 STM32L4 Discovery 套裝 IoT 節點
NXP Semiconductors 的 LPC54018 IoT 模組
Espressif Systems 的 ESP32 DevKitC 開發套夥伴也是一個選擇,但它並不完全符合本文需求,因為它並沒有集成 Wi-Fi 模塊,所以我們專注於 Texas Instruments 的 SimpleLink Wi-Fi CC3220SF-LaunchXL 開発板,因為它是目前唯一集成了 Wi-Fi 模塊的大型微處理器之一。此外,由於其他平台上的發展板可能具有不同的硬體規格,本文中的指示應該能夠作為一個基準,用以設定任何具備相似硬體規格的地面端點。
配置 Amazon FreeRT OS 以實現 OTA 升級
默认情况下, OTA 库未包含在预配置的 a:FreeRT OS 包中. 开发者必须手动配置这些库与应用. 首先, 应登录 AWS IoT 控制台并进入 "软件" 菜单. 然后, 开发者可以点击 "Create new" 按钮开始创建自定义配置.
在配置过程中, 开发者只需要设置几项就能配置OTA特性. 其包括:
选择硬件 - 这将会引入所有特定于电路板文件,如驱动程序。
选择所含有的 a:FreeRT OS 库 - 这将会添加必要库。
设置配置名称 - 这将为您的项目命名一个独一无二名字。
添加必要证书及密钥 - 使用 AWS 访问控制界面来管理这些凭据并确保它们适用于您正在运行的问题描述符中的任务。
完成此操作后,您就能够创建您的自定义软件包,并下载至您的目标系统上进行测试。在执行此过程时,请确保您遵循最佳实践,并考虑到了您的具体场景对性能要求之影响。如果遇到问题,不要忘记查看错误消息以及相关技术支持资源以获得帮助。
設定OTA範例代碼
一旦导入了 aws_demos_OTA 示例,您需要执行几个任务:
配置终端 —— 确认aws_demos项目已经正确地连接到了AWS,然后再继续其他步骤。
2 修改 Ota 演示非常简单 —— 打开 aws_demo_runner.c 文件找到 DEMO_RUNNER_RunDemos 函数,在该函数末尾添加注释 vStartMQTTEchoDemo 调用,而取消注释 vStartOTAUpdateDemoTask 调用,然后进行编译构建项目,以启用 引导程序功能后,该项目即可运行。