AWS IoT 無線傳輸 (OTA) 程式庫 - 免費RTOS

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

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客服人員。

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

  2. 透過呼叫 來初始化OTA客服人員OTA_Init,包括緩衝區、所需的 ota 介面、物件名稱和應用程式回呼。回呼會實作應用程式特定的邏輯,該邏輯會在完成OTA更新任務後執行。

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

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

  5. 若更新有效並已標記為「已接受」,請呼叫 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