本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 通訊協定驅動程式。
-
連線至 AWS IoT MQTT 代理程式。如需詳細資訊,請參閱coreMQTT 程式庫。
-
透過呼叫
OTA_AgentInit
初始化 OTA 代理程式。您的應用程式可定義自訂 OTA 回撥函數,或透過指定 NULL 回撥函數指標來使用預設回撥。您也必須提供初始化逾時。回撥會實作應用程式限定邏輯,在完成 OTA 更新任務後執行。逾時會定義等待初始化完成的時間長度。
-
若
OTA_AgentInit
在代理程式準備就緒前逾時,您可以呼叫OTA_GetAgentState
來確認代理程式已初始化完畢並照預期的方式運作。 -
當 OTA 更新完成時,FreeRTOS 會使用下列其中一個事件來呼叫任務完成回呼:
accepted
、rejected
或self test
。 -
若新的韌體映像遭到拒絕 (例如因為發生驗證錯誤),則應用程式通常可以忽略通知並等待下一次的更新。
-
若更新有效並已標記為「已接受」,請呼叫
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 |