本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 進行OTA更新的先決條件 HTTP
本節說明使用 HTTP 執行 over-the-air (OTA) 更新的一般需求。從 201912.00 版開始,免費RTOSOTA可以使用 HTTP或 MQTT通訊協定,將韌體更新映像從 傳輸 AWS IoT 到 裝置。
注意
-
雖然HTTP通訊協定可能用於傳輸韌體映像,但仍然需要核心MQTT代理程式程式程式庫,因為與 的其他互動 AWS IoT Core 會使用核心MQTT代理程式程式程式程式程式程式庫,包括傳送或接收任務執行通知、任務文件和執行狀態更新。
-
當您為OTA更新任務指定 MQTT和 HTTP通訊協定時,每個裝置上的OTA代理程式軟體設定會決定用於傳輸韌體映像的通訊協定。若要將OTA代理程式從預設MQTT通訊協定方法變更為HTTP通訊協定,您可以修改用於編譯裝置免費RTOS原始程式碼的標頭檔案。
最低需求
-
裝置韌體必須包含必要的免費RTOS程式庫 (核心MQTT代理程式、、HTTPOTA代理程式及其相依性)。
-
免費RTOS版本 201912.00 或更新版本需要變更OTA通訊協定的組態,才能透過 啟用OTA資料傳輸HTTP。
組態
請參閱下列\vendors\boards\
board
\aws_demos\config_files\ota_config.h
若要啟用透過 進行OTA資料傳輸 HTTP
-
將
configENABLED_DATA_PROTOCOLS
變更為OTA_DATA_OVER_HTTP
。 -
OTA 更新時,您可以指定兩個通訊協定,以便使用 MQTT或 HTTP通訊協定。,您可以將裝置使用的主要通訊協定變更為 HTTP
configOTA_PRIMARY_DATA_PROTOCOL
OTA_DATA_OVER_HTTP
。
注意
HTTP 僅支援OTA資料操作。對於控制操作,您必須使用 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
注意
BLE 上的 大約ESP32需要 87 KB RAM。不足以RAM啟用所有這些設定,如上述裝置特定組態所述。
- Windows 模擬器
-
控制操作 (MQTT):82 KB
資料操作 (HTTP):63 KB
- Nordic nrf52840-dk
-
不支援 HTTP。
裝置政策
此政策允許您使用 MQTT或 HTTP進行OTA更新。
使用 接收OTA更新的每個裝置HTTP都必須在 中註冊為物件, 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
許可允許您的裝置透過 連線至 AWS IoT MQTT。 -
AWS IoT 任務 (
.../jobs/*
) 主題的iot:Subscribe
和iot:Publish
許可允許連接的裝置接收任務通知和任務文件,並發佈任務執行的完成狀態。 -
iot:Receive
許可允許 AWS IoT Core 將這些主題上的訊息發佈到目前連接的裝置。每次傳送訊息時都會檢查此許可MQTT。您可以使用此許可來撤銷目前訂閱主題之用戶端的存取權。