Azure Sphere 的下游 OTA 更新

许多 Azure Sphere 解决方案将 Azure Sphere 认证的 MCU 和其他处理器合并为完整的 IoT 解决方案的一部分。 这些其他处理器需要定期固件更新。 本指南介绍如何使用 Azure Sphere 启用下游 OTA 更新。

根据特定的应用程序方案,可通过多种不同的方法来实现此目的。 每个解决方案都有一个通用流:

  1. 触发固件更新。
  2. 获取固件更新。
  3. 确定中间下载位置。
  4. 验证固件并更新下游处理器。

阶段 1:触发固件更新

问题: 固件更新过程是如何启动的?

选项

  • 每个 Azure Sphere 应用版本都绑定到下游固件版本:

    • 说明: Azure Sphere 应用启动时,支持的固件版本与下游处理器上的已部署版本进行比较。 如果版本不匹配,则需要更新。
    • 优点: 在 Azure Sphere 应用和固件版本之间定义支持协定。 此外,还利用现有的 Azure Sphere 应用更新过程。
    • 缺点: 必须更新 Azure Sphere 应用以触发固件更新,即使没有 Azure Sphere 应用更改也是如此。 此外,还必须添加对更新进度的监视。
  • Azure IoT 中心设备管理固件更新:

    • 说明: 固件更新准备就绪后,IoT 解决方案操作员会使用更新的固件创建新的设备管理配置。 Azure Sphere 应用程序接收固件更新请求,并可以开始更新。
    • 优点: 轻松管理解决方案,用于定义、触发和监视更新。
    • 缺点:必须使用Azure IoT 中心,不支持其他云终结点。
  • 单独的固件检查(自定义解决方案):

    • 说明: 在 Azure Sphere 应用程序中生成自定义固件检查。 定期检查已定义的终结点是否有新版本,如果检测到某个终结点,请启动更新。
    • 优点: 适用于任何云终结点来下载固件。
    • 缺点: 必须添加更新过程的监视。 自定义生成解决方案,因此不利用任何现有的更新路径。

建议的解决方案: 如果通过 Azure Sphere 应用更新触发下游处理器的更新适用于你的方案,则建议使用此方法。 此解决方案可确保 Azure Sphere 和下游固件版本始终匹配,并且不需要构建另一个系统来触发更新。 否则,如果应用程序已使用 Azure IoT 中心,则建议使用 IoT 设备管理,否则需要自定义解决方案。

示例:

阶段 2:获取固件更新

问题:在 Azure Sphere MT3620 的内存约束,应如何下载固件?

选项

  • 将下游固件包含在部署到 MT3620 的 imagepackage 中。 如果 MT3620 软件(包括下游映像)的总大小不超过记录的闪存限制则可能会发生这种情况。

  • 从托管位置下载固件,例如使用Azure Blob 存储。 可能需要以区块形式下载固件,因为 MT3620 的 RAM 限制 可能会阻止将整个映像下载到 RAM。 请务必验证用于固件下载的服务器(例如使用 HTTPS)以确保仅下载受信任的固件并将其应用于下游处理器。 请注意,在这种情况下,在更新 Azure Sphere 应用时,设备可能处于联机状态,但在新应用可以下载新的下游固件之前脱机。 如果这是用例的可能,请务必保持 Azure Sphere 应用与较旧的下游固件版本之间的兼容性。

建议的解决方案: 如果固件映像符合 Azure Sphere 映像包的闪存限制,并且如果每次需要下游更新时都可以更新 MT3620 软件,则建议将下游映像包含在 MT3620 imagepackage 中。 否则,需要从托管位置下载固件映像。

示例:

阶段 3:确定中间下载位置

问题: 仅当未使用合并到 Azure Sphere 映像包中的固件映像以及下载的固件大于 MT3620 上的可用 RAM 时,此问题才相关。

选项

  • 连接到 Azure Sphere 的外部闪存。
  • 下游 MCU 或电脑存储。

对于存储下载的固件的位置,没有正确或错误的答案。 此选项取决于硬件设置和成本。 最适合你的选择是什么? 可以考虑将外部闪存附加到 Azure Sphere 设备,或者选择具有足够大存储的下游处理器来接收固件更新。

建议的解决方案: 为设置选择最佳选项。

示例:

阶段 4:验证固件并更新下游处理器

问题: 如何验证固件更新并将其应用到下游处理器?

选项: 每个处理器都有不同的解决方案。 大多数处理器制造商都有演示如何在其设备上执行固件更新的示例,你应遵循特定解决方案的最佳做法。 固件下载和更新应在启动更新之前执行完整性检查来验证固件。

建议的解决方案: 每个处理器不同。 请参阅处理器制造商的示例。

示例: ExternalMcuUpdate 参考解决方案 演示如何从 MT3620 通过 UART 接口更新北欧 nRF52。