OTA 代理程式程式庫 - FreeRTOS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

OTA 代理程式程式庫

重要

這是 FreeRTOS 使用者指南的封存版本,適用於 FreeRTOS 版本 202012.00。如需本文件的最新版本,請參閱 FreeRTOS 使用者指南

概觀

OTA 代理程式程式庫 可讓您使用 HTTP 或 MQTT 做為通訊協定,管理 FreeRTOS 裝置的韌體更新的通知、下載和驗證。透過使用 OTA 代理程式程式庫,您可以邏輯式的區分韌體更新及在您裝置上執行的應用程式。OTA 代理程式可和應用程式共享網路連線。透過共享網路連線,您可能可以節省大量的 RAM。此外,OTA 代理程式程式庫可讓您定義應用程式特定的邏輯,用於測試、遞交或轉返韌體更新。

如需使用 FreeRTOS 設定 OTA 更新的詳細資訊,請參閱FreeRTOS Over-the-Air更新

功能

以下是完整的 OTA 代理程式界面:

OTA_AgentInit

初始化 OTA 代理程式。發起人會提供訊息簡訊通訊協定內容、選擇性的回撥,以及逾時。

OTA_AgentShutdown

在使用 OTA 代理程式之後清理資源。

OTA_GetAgentState

取得 OTA 代理程式的目前狀態。

OTA_ActivateNewImage

啟用透過 OTA 接收到的最新微控制器韌體映像。(詳細任務狀態現在應該會處於自我測試。)

OTA_SetImageState

設定目前執行中微控制器韌體映像的驗證狀態 (測試中、已接受或已拒絕)。

OTA_GetImageState

取得目前執行中微控制器韌體映像的狀態 (測試中、已接受或已拒絕)。

OTA_CheckForUpdate

從 OTA 更新服務請求下一個可用的 OTA 更新。

OTA_Suspend

暫停所有 OTA 代理程式操作。

OTA_Resume

繼續 OTA 代理程式操作。

API 參考

如需詳細資訊,請參閱 OTA 代理程式 API 參考

範例使用方式

典型的具 OTA 功能裝置應用程式會使用以下一系列 API 呼叫,使用 MQTT 通訊協定驅動程式。

  1. 連線至 AWS IoT MQTT 代理程式。如需詳細資訊,請參閱coreMQTT 程式庫

  2. 透過呼叫 OTA_AgentInit 初始化 OTA 代理程式。您的應用程式可定義自訂 OTA 回撥函數,或透過指定 NULL 回撥函數指標來使用預設回撥。您也必須提供初始化逾時。

    回撥會實作應用程式限定邏輯,在完成 OTA 更新任務後執行。逾時會定義等待初始化完成的時間長度。

  3. OTA_AgentInit 在代理程式準備就緒前逾時,您可以呼叫 OTA_GetAgentState 來確認代理程式已初始化完畢並照預期的方式運作。

  4. 當 OTA 更新完成時,FreeRTOS 會使用下列其中一個事件來呼叫任務完成回呼:acceptedrejectedself test

  5. 若新的韌體映像遭到拒絕 (例如因為發生驗證錯誤),則應用程式通常可以忽略通知並等待下一次的更新。

  6. 若更新有效並已標記為「已接受」,請呼叫 OTA_ActivateNewImage 來重設裝置並啟動新的韌體映像。

移植

如需將 OTA 功能移植到平台的詳細資訊,請參閱 FreeRTOS 移植指南中的移植 OTA 程式庫

記憶體使用

OTA AWS IoT 的程式碼大小 (使用 GCC for ARM Cortex-M 產生的範例)
檔案 使用 -O1 最佳化 使用 -Os 最佳化
ota.c 8.0K 7.2K
ota_interface.c 0.1K 0.1K
ota_base64.c 0.6K 0.6K
ota_mqtt.c 2.3K 2.2K
ota_cbor.c 0.8K 0.6K
ota_http.c 0.3K 0.3K
預估總數 12.1K 11.0K