本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS IoT 無線傳輸 (OTA) 程式庫
注意
本頁面上的內容可能不是 up-to-date。請參閱 免費 RTOS.org 程式庫頁面
簡介
AWS IoT Over-the-air (OTA) 更新程式庫可讓您使用 HTTP或 MQTT作為通訊協定,管理免費RTOS裝置的韌體更新的通知、下載和驗證。使用OTA代理程式程式程式庫,您可以在邏輯上分隔韌體更新和在裝置上執行的應用程式。OTA 客服人員可與應用程式共用網路連線。透過共用網路連線,您可以儲存大量 RAM。此外,OTA代理程式程式庫可讓您定義應用程式特定的邏輯,以測試、遞交或復原韌體更新。
物聯網 (IoT將網際網路連線延伸至傳統上未連線的嵌入式裝置。這些裝置可進行程式設計,透過網際網路通訊可用資料,並可遠端監控和控制。隨著技術的進步,這些傳統嵌入式裝置正在快速取得消費者、工業和企業空間的網際網路功能。
IoT 裝置通常大量部署,且通常部署在難以或不切實際的位置,讓人類操作員存取。想像一個案例,其中發現了可以公開資料的安全漏洞。在這種情況下,請務必使用安全修正快速且可靠地更新受影響的裝置。如果沒有執行OTA更新的能力,也可能很難更新分散在地理上的裝置。讓技術人員更新這些裝置的成本高昂、耗時,而且通常不切實際。更新這些裝置所需的時間會讓它們長時間暴露在安全漏洞中。召回這些裝置以進行更新也會很昂貴,而且可能會因停機時間而對消費者造成重大中斷。
無線更新 (OTA) 可讓您更新裝置韌體,而無需昂貴的召回或技術人員造訪。此方法新增了下列優點:
-
安全 - 快速回應在現場部署裝置後發現的安全漏洞和軟體錯誤的能力。
-
創新 - 產品可以在開發新功能時頻繁更新,推動創新週期。與傳統更新方法相比,更新可以快速生效,停機時間最短。
-
成本 - 相較於傳統用來更新這些裝置的方法,OTA更新可以大幅降低維護成本。
提供 OTA功能需要下列設計考量:
-
安全通訊 - 更新必須使用加密的通訊管道,以防止下載在傳輸期間遭到竄改。
-
復原 - 由於間歇網路連線或接收無效的更新等因素,更新可能會失敗。在這些情況下,裝置需要能夠返回穩定狀態,並避免發生破裂。
-
作者驗證 - 更新必須經過驗證,才能來自受信任來源,以及其他驗證,例如檢查版本和相容性。
如需使用免費 設定OTA更新的詳細資訊RTOS,請參閱 免費RTOS Over-the-Air更新。
AWS IoT 無線傳輸 (OTA) 程式庫
程式 AWS IoT OTA庫可讓您管理新可用更新的通知、下載更新,以及執行韌體更新的密碼編譯驗證。您可以使用 over-the-air(OTA) 用戶端程式庫,以邏輯方式將韌體更新機制與裝置上執行的應用程式分開。(OTA) over-the-air用戶端程式庫可與應用程式共用網路連線,以節省資源受限裝置的記憶體。此外, (OTA) over-the-air用戶端程式庫可讓您定義應用程式特定的邏輯,用於測試、遞交或復原韌體更新。程式庫支援不同的應用程式通訊協定,例如訊息佇列遙測傳輸 (MQTT) 和超文字傳輸通訊協定 (HTTP),並提供各種組態選項,您可以針對網路類型和條件進行微調。
此程式庫APIs提供下列主要函數:
-
註冊通知或輪詢可用的新更新請求。
-
接收、剖析和驗證更新請求。
-
根據更新請求中的資訊下載並驗證檔案。
-
在啟用收到的更新之前執行自我測試,以確保更新的功能有效性。
-
更新裝置的狀態。
此程式庫使用 AWS 服務來管理各種雲端相關功能,例如傳送韌體更新、監控跨多個區域的大量裝置、減少故障部署的爆量半徑,以及驗證更新的安全性。此程式庫可與任何 MQTT或 HTTP 程式庫搭配使用。
此程式庫的示範示範使用免費RTOS裝置上的核心MQTT程式庫和服務 AWS 來示範完整的 over-the-air更新。
功能
以下是完整的OTA客服人員界面:
OTA_Init
-
透過在系統中啟動OTA客服人員 ("OTA任務") 來初始化OTA引擎。只有一個OTA客服人員可以存在。
OTA_Shutdown
-
傳送至要關閉之OTA代理程式的訊號。OTA 客服人員將選擇性地取消訂閱所有MQTT任務通知主題、停止進行中OTA的任務,如果有的話,並清除所有資源。
OTA_GetState
-
取得OTA客服人員的目前狀態。
OTA_ActivateNewImage
-
啟用透過 接收的最新微控制器韌體映像OTA。(詳細任務狀態現在應該會處於自我測試。)
OTA_SetImageState
-
設定目前執行中微控制器韌體映像的驗證狀態 (測試中、已接受或已拒絕)。
OTA_GetImageState
-
取得目前執行中微控制器韌體映像的狀態 (測試中、已接受或已拒絕)。
OTA_CheckForUpdate
-
從OTA更新服務請求下一個可用的OTA更新。
OTA_Suspend
-
暫停所有OTA客服人員操作。
OTA_Resume
-
恢復OTA客服人員操作。
OTA_SignalEvent
-
將事件傳送至OTA客服人員任務。
OTA_EventProcessingTask
-
OTA 代理程式事件處理迴圈。
OTA_GetStatistics
-
取得OTA訊息封包的統計資料,其中包含接收、佇列、處理和捨棄的封包數量。
OTA_Err_strerror
-
錯誤碼轉換為字串,以處理OTA錯誤。
OTA_JobParse_strerror
-
將OTA任務剖析錯誤碼轉換為字串。
OTA_PalStatus_strerror
-
狀態的狀態碼轉換為OTAPAL狀態的字串。
OTA_OsStatus_strerror
-
OTA 作業系統狀態的狀態碼轉換為字串。
API 參考
如需詳細資訊,請參閱AWS IoT Over-the-air 更新:函數
範例使用方式
使用 MQTT 通訊協定的典型 OTA功能裝置應用程式會使用下列API呼叫順序來驅動OTA客服人員。
-
連線至 AWS IoT 核心MQTT代理程式。如需詳細資訊,請參閱核心MQTT代理程式程式程式庫。
-
透過呼叫 來初始化OTA客服人員
OTA_Init
,包括緩衝區、所需的 ota 介面、物件名稱和應用程式回呼。回呼會實作應用程式特定的邏輯,該邏輯會在完成OTA更新任務後執行。 -
OTA 更新完成時,FreeRTOS 會使用下列其中一個事件呼叫任務完成回呼:
rejected
、accepted
或self test
。 -
若新的韌體映像遭到拒絕 (例如因為發生驗證錯誤),則應用程式通常可以忽略通知並等待下一次的更新。
-
若更新有效並已標記為「已接受」,請呼叫
OTA_ActivateNewImage
來重設裝置並啟動新的韌體映像。
移植
如需有關將OTA功能移植到平台的資訊,請參閱免費RTOS移植指南中的移植OTA程式庫。
記憶體使用
的 AWS IoT OTA程式碼大小 (GCC使用 為 ARM Cortex-M 產生的範例) | ||
---|---|---|
檔案 | 使用 -O1 最佳化 | 使用 -Os 最佳化 |
ota.c | 8.3K | 7.5K |
ota_interface.c | 0.1K | 0.1K |
ota_base64.c | 0.6K | 0.6K |
ota_mqtt.c | 2.4K | 2.2K |
ota_cbor.c | 0.8K | 0.6K |
ota_http.c | 0.3K | 0.3K |
預估總數 | 12.5K | 11.3K |