使用 Azure Sphere 進行下游 OTA 更新
許多 Azure Sphere 解決方案同時納入 Azure Sphere 認證的 MCU 和其他處理器,作為完整 IoT 解決方案的一部分。 這些其他處理器需要定期韌體更新。 本指南說明如何使用 Azure Sphere 啟用下游 OTA 更新。
視特定應用程式案例而定,有許多不同的方法來達成此目的。 每個解決方案都有一個常見的流程:
- 觸發韌體更新。
- 取得韌體更新。
- 判斷中繼下載位置。
- 驗證韌體並更新下游處理器。
階段 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裝置管理 是建議的解決方案,否則需要自定義解決方案。
範例:
- ExternalMcuUpdate 參考解決方案 示範如何針對每個 Azure Sphere 應用程式版本要求下游裝置上的特定韌體版本。
- Azure Sphere 外部 MCU OTA 會使用 Azure IoT 中樞 裝置管理,實作 Azure Sphere 的韌體更新。
- Azure IoT 中樞 韌體更新教學課程說明如何透過 Azure IoT 中樞 裝置對應項屬性觸發更新。
階段 2:取得韌體更新
問題: 在 Azure Sphere MT3620 的記憶體限制下 ,應如何下載韌體 ?
選項:
將下游韌體包含在部署至 MT3620 的 imagepackage 中。 如果包括下游映像在內的 MT3620 軟體大小總計未超過記載的 快閃限制,就可能發生這種情況。
從託管位置下載韌體,例如使用 Azure Blob 儲存體。 您可能需要以區塊下載韌體,因為 MT3620 的 RAM 限制 可能會排除下載到 RAM 的整個映射。 請務必驗證用於韌體下載的伺服器,例如使用 HTTPS,以確保只下載信任的韌體,並在下游處理器上套用。 請注意,在此情況下,在 Azure Sphere 應用程式更新時,裝置可能會上線,但在新應用程式可以下載新的下游韌體之前,先脫機。 如果您的使用案例可能發生這種情況,請務必維護 Azure Sphere 應用程式與舊版下游韌體版本之間的相容性。
建議的解決方案: 如果韌體映射符合 Azure Sphere imagepackage 的快閃限制,而且如果每次需要下游更新時都能接受更新 MT3620 軟體,則建議將下游映射納入 MT3620 imagepackage。 否則,您必須從裝載的位置下載韌體映像。
範例:
- ExternalMcuUpdate 參考解決方案 示範如何將下游韌體映射包含在 Azure Sphere imagepackage 中。
- HTTPS Curl 簡易範例 示範如何使用固定大小的 RAM 緩衝區執行區塊式下載。
階段 3:判斷中繼下載位置
問題: 只有在您未使用納入 Azure Sphere imagepackage 的韌體映射,以及下載的韌體大於 MT3620 上可用的 RAM 時,才會發生此問題。
選項:
- 連線至 Azure Sphere 的外部快閃。
- 下游 MCU 或電腦記憶體。
儲存所下載韌體的位置沒有正確或錯誤的答案。 這個選擇取決於您的硬體設定和成本。 最適合您選擇什麼? 您可以考慮將外部快快閃記憶體連結至 Azure Sphere 裝置,或選取具有足夠大記憶體的下游處理器來接收韌體更新。
建議的解決方案: 為您的設定選取最佳選項。
範例:
階段 4:驗證韌體並更新下游處理器
問題: 如何驗證韌體更新並將其套用至下游處理器?
選項: 每個處理器都會有不同的解決方案。 大部分處理器製造商都有範例,示範如何在其裝置上執行韌體更新,您應該遵循特定解決方案的最佳做法。 您的韌體下載和更新應該先執行完整性檢查,以在開始更新之前驗證韌體。
建議的解決方案: 每個處理器都不同。 請參閱您的處理器製造商範例。
範例: ExternalMcuUpdate 參考解決方案 示範如何從 MT3620 透過 UART 介面更新北歐 nRF52。