使用 HTTP 進行 OTA 更新的先決條件 - FreeRTOS

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

使用 HTTP 進行 OTA 更新的先決條件

本節說明使用 HTTP 執行 over-the-air (OTA) 更新的一般需求。自 2019 年 12 月 00 日起,自由軟件 OTA 可以使用 HTTP 或 MQTT 協議將固件更新映像從設備傳輸到設備。AWS IoT

注意
  • 雖然可能會使用 HTTP 通訊協定來傳輸韌體影像,但 CoremQtt Agent 程式庫仍然需要使用 CoremQtt Agent 程式庫,因為與其他互動會AWS IoT Core使用 CoremQtt Agent 程式庫,包括傳送或接收工作執行通知、工作文件以及執行狀態更新。

  • 當您為 OTA 更新任務同時指定 MQTT 和 HTTP 通訊協定時,每個個別裝置上 OTA 代理程式軟體的設定都會決定用來傳輸韌體映像的通訊協定。若要將 OTA 代理程式從預設 MQTT 通訊協定方法變更為 HTTP 通訊協定,您可以修改用來編譯裝置的 FreeRTOS 原始程式碼的標頭檔案。

最低需求

  • 裝置韌體必須包含必要的 FreeRTOS 程式庫 (CoremQtt 代理程式、HTTP、OTA 代理程式及其相依性)。

  • 需要 FreeRTOS 版本 2019 年 12 月 00 日或更新版本才能更改 OTA 協議的配置以啟用通過 HTTP 進行 OTA 數據傳輸。

組態

請參閱 \vendors\boards\board\aws_demos\config_files\ota_config.h 檔案中 OTA 通訊協定的下列組態。

透過 HTTP 啟用 OTA 資料傳輸
  1. configENABLED_DATA_PROTOCOLS 變更為 OTA_DATA_OVER_HTTP

  2. 當 OTA 更新時,您可以指定這兩個通訊協定,以便可以使用 MQTT 或 HTTP 通訊協定。您可以將 configOTA_PRIMARY_DATA_PROTOCOL 變更 OTA_DATA_OVER_HTTP,以將裝置使用的主要通訊協定設定為 HTTP。

注意

OTA 資料操作僅支援 HTTP。若為控制操作,您必須使用 MQTT。

裝置特定的組態

ESP32

由於 RAM 數量有限,當您啟用 HTTP 做為 OTA 資料通訊協定時,必須關閉 BLE。在 vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h 檔案中,僅將 configENABLED_NETWORKS 變更為 AWSIOT_NETWORK_TYPE_WIFI

/** * @brief Configuration flag which is used to enable one or more network interfaces for a board. * * The configuration can be changed any time to keep one or more network enabled or disabled. * More than one network interfaces can be enabled by using 'OR' operation with flags for * each network types supported. Flags for all supported network types can be found * in "aws_iot_network.h" * */ #define configENABLED_NETWORKS ( AWSIOT_NETWORK_TYPE_WIFI )

記憶體用量

當 MQTT 用於資料傳輸時,MQTT 連線不需要額外的堆積記憶體,因為它是在控制操作與資料操作之間共用。不過,透過 HTTP 啟用資料傳輸需要額外的堆積記憶體。以下是所有支援平台的堆積記憶體使用量資料,使用 FreeRTOS xPortGetFreeHeapSize API 計算。您必須確定有足夠的 RAM 才能使用 OTA 程式庫。

Texas Instruments CC3220SF-LAUNCHXL

控制操作 (MQTT):12 KB

資料操作 (HTTP):10 KB

注意

TI 會使用相當少的 RAM,因為它在硬體上使用 SSL,所以它不會使用 mbedtls 程式庫。

Microchip Curiosity PIC32MZEF

控制操作 (MQTT):65 KB

資料操作 (HTTP):43 KB

Espressif ESP32

控制操作 (MQTT):65 KB

資料操作 (HTTP):45 KB

注意

ESP32 上的 BLE 大約需要 87 KB RAM。沒有足夠的 RAM 來啟用所有的程式,如上述裝置特定的組態中所述。

Windows 模擬器

控制操作 (MQTT):82 KB

資料操作 (HTTP):63 KB

Nordic nrf52840-dk

不支援 HTTP。

裝置政策

此政策可讓您使用 MQTT 或 HTTP 來進行 OTA 更新。

每部使用 HTTP 接收 OTA 更新的裝置都必須註冊為 AWS IoT 中的物件,且該物件必須有連接的政策,如此處列出的政策所示。如需 "Action""Resource" 物件中的項目的詳細資訊,請參閱 AWS IoT 核心政策動作AWS IoT 核心動作資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:partition:iot:region:account:client/${iot:Connection.Thing.ThingName}" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:partition:iot:region:account:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:partition:iot:region:account:topic/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] } ] }
備註
  • iot:Connect 許可允許您的裝置透過 MQTT 連接至 AWS IoT。

  • AWS IoT 工作 (.../jobs/*) 主題的 iot:Subscribeiot:Publish 許可允許連接的裝置接收工作通知和工作文件,並發佈工作執行的完成狀態。

  • iot:Receive 許可允許 AWS IoT Core 將這些主題上的訊息發佈到目前連接的裝置。每次交付 MQTT 訊息時,都會檢查此許可。您可以使用此許可來撤銷目前訂閱主題之用戶端的存取權。