FreeRTOS OTA特性之智者教我如何巧用Can总线通信协议的奥秘

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 作業服務、串流服務、Amazon FreeRTOS 代碼簽名服務及 OTA 庫與代理。

對於開發人員而言,让所有這些部分協同工作所需步驟相當多,不得不在一篇文章中詳細說明。本文將會專注介紹如何開始,以及關於在實驗室成功設定 a:FreeRTOS 的一些經驗教訓與秘訣。

選擇 OTA 測試硬體

a:FreeRTOS 目前支持多種開發板,它支持包括:Texas Instruments 的 SimpleLink Wi-Fi CC3220SF-Wireless LaunchPad 開發套件、Microchip Technology 的 PIC32MZ EF Curiosity 開發套夥等等...

圖1:Texas Instruments 的 CC3220SF-LaunchXL 是一個能夠啟動 Amazon FreeRT OS OTA 的全集成解決方案。

出于各种原因,本文将重点介绍 SimpleLink Wi-Fi CC3220SF。首先,CC3220SF 是目前唯一集成了 Wi-Fi 模块的 a:FreeRT OS 微。此外,由于它具有板载 Wi-Fi 模块,可以节省电路板空间并降低能耗。如果读者能够在 CC3220SF 上成功设置OTA,那么其他平台上的问题也不会出现。此外,由于它是第一款支持演示应用处理器,因此设计师们可以放心,该处理器已经被全面审查过。在实验室环境下进行测试时,这一点尤为重要,因为它允许工程师验证软件与硬件之间是否存在任何兼容性问题。

除了选择合适的手动编程工具之外,还需要放弃板载编程器,而使用专业编程器,如 Segger Microcontroller Systems 提供的一款 J-link Ultra+ 编码调试器。在这个阶段,我们还会讨论通过使用 Tag-connect TC201510 引脚钉式插头来轻松将编码调试器连接到目标板,并确保正确地转接TC2050,以便与SEGGER J-LINK 配合使用。这一步骤对于理解黑盒应用非常关键,因为它们允许我们跟踪代码执行情况,从而更好地理解软件行为及其对硬件组建影响的情景。

配置 Amazon Free RT OS 以实现 OTA 升级

默认情况下,OTA 库未包含预配置 a:Free RT OS 包内。当手动配置这些库时,我们必须登录 AWS IoT 控制台进入“创建自定义配置”菜单,然后点击“Create new”按钮开始创建自定义配置(图4)。

图4:AWS IoT 控制台中的“Create New”按钮用于创建新的自定义软件配置。

此过程涉及以下几个关键步骤:

选择硬件平台 - 这决定了哪些特定文件会被自动添加进来,比如驱动程序。

选择要包括到的库 - 这里我们需要添加一个名为 “ota_updater”的库,这个库提供了基础功能来控制更新过程。

设置名称 - 给你的项目起一个名字,这样你就可以轻易找到这个项目了。

完成这一系列任务后,你就能够下载你的自定义安装包,并将 aws_demos 项目导入代码调试环境进行进一步编辑和测试。在实际操作时,我们还会讨论如何通过修改 aws_demo_runner.c 文件中的 DEMO_RUNNER_RunDemos 函数来启用或禁用不同的示例任务,并详细介绍每个任务背后的逻辑是什么,以及它们怎样协同工作以实现我们的目标—即无缝实施实时系统中的空中升级技术(图7)。

图7:aws_demos 应用中的示例任务列表显示了可用的选项以及启动顺序。

最后,但绝非最不重要的一点,是确保我们的 AWS 环境已经按照要求设置好了。这意味着我们需要根据之前提到的指南,在 AWS 云端创建 S3 存储桶并赋予访问权限,同时建立服务角色并授权用户策略,以确保整个更新流程都是安全且有效运行。在这里,我们还会详细讲解为什么这样做,以及如果没有正确设置这些元素可能导致的问题及其后果。而最终,当一切准备妥当后,只剩下几条简单命令,就能让你的实时系统迎来了智能时代——通过空中升级技术,无缝获得最新版本,并保持竞争力。

上一篇:温暖晨曦中的蛋羹奇遇
下一篇:揭秘汽车CAN协议串口通讯调试开启智能车联网编程之旅