

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

# 使用 MQTT 進行 OTA 更新的先決條件
<a name="ota-mqtt-freertos"></a>

本節描述使用 MQTT 執行無線 (OTA) 更新的一般需求。

## 最低需求
<a name="ota-mqtt-freertos-min-requirements"></a>
+ 裝置韌體必須包含必要的 FreeRTOS 程式庫 (coreMQTT Agent、OTA 更新及其相依性）。
+ 需要 FreeRTOS 1.4.0 版或更新版本。不過，我們建議您儘可能使用最新版本。

## 組態
<a name="ota-mqtt-freertos-config"></a>

從 201912.00 版開始，FreeRTOS OTA 可以使用 HTTP 或 MQTT 通訊協定，將韌體更新映像從 傳輸 AWS IoT 到 裝置。如果您在 FreeRTOS 中建立 OTA 更新時指定這兩個通訊協定，則每個裝置都會判斷用於傳輸映像的通訊協定。如需詳細資訊，請參閱[使用 HTTP 進行 OTA 更新的先決條件](ota-http-freertos.md)。

根據預設， 中的 OTA 通訊協定組態[https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h)是使用 MQTT 通訊協定。

## 裝置特定的組態
<a name="ota-mqtt-freertos-dev-config"></a>

無。

## 記憶體用量
<a name="ota-mqtt-freertos-memory"></a>

當 MQTT 用於資料傳輸時，MQTT 連線不需要額外的記憶體，因為它是在控制操作與資料操作之間共用。

## 裝置政策
<a name="ota-mqtt-freertos-device-policy"></a>

使用 MQTT 接收 OTA 更新的每個裝置都必須在 中註冊為物件， AWS IoT 而且物件必須具有類似此處列出的附加政策。如需 `"Action"` 和 `"Resource"` 物件中的項目的詳細資訊，請參閱 [AWS IoT 核心政策動作](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html)和 [AWS IoT 核心動作資源](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html)。

**備註**
+ `iot:Connect` 許可允許您的裝置 AWS IoT 透過 MQTT 連線至 。
+  AWS IoT 任務 (`.../jobs/*`) 主題的 `iot:Subscribe`和 `iot:Publish`許可允許連線的裝置接收任務通知和任務文件，以及發佈任務執行的完成狀態。
+ OTA 串流 (`.../streams/*`) AWS IoT 主題的 `iot:Subscribe`和 `iot:Publish`許可允許連接的裝置從中擷取 OTA 更新資料 AWS IoT。需要這些許可才能透過 MQTT 執行韌體更新。
+ `iot:Receive` 許可允許 AWS IoT Core 在這些主題上發佈訊息到連線的裝置。每次交付 MQTT 訊息時，都會檢查此許可。您可以使用此許可來撤銷目前訂閱主題之用戶端的存取權。