

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 MQTT 的 OTA 更新的先决条件
<a name="ota-mqtt-freertos"></a>

本节介绍使用 MQTT 执行任务的一般要求 over-the-air（OTA 更新）。

## 最低要求
<a name="ota-mqtt-freertos-min-requirements"></a>
+ 设备固件必须包含必要的 FreeRTOS 库（coreMQTT 代理、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)了解更多信息。

默认情况下，[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) 中的 OTA 协议配置将使用 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 并且该设备必须附有类似于此处列出的策略。您可以在 [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)中找到有关 `"Action"` 和 `"Resource"` 对象中项目的更多信息。

**注意**
+ 这些`iot:Connect`权限允许您的设备通过 MQTT AWS IoT 进行连接。
+  AWS IoT 任务主题的`iot:Subscribe`和`iot:Publish`权限 (`.../jobs/*`) 允许连接的设备接收作业通知和作业文档，并发布任务执行的完成状态。
+  AWS IoT OTA 直播主题的`iot:Subscribe`和`iot:Publish`权限 (`.../streams/*`) 允许连接的设备从中获取 OTA 更新数据 AWS IoT。在通过 MQTT 执行固件更新时，需要这些权限。
+ 这些`iot:Receive`权限 AWS IoT Core 允许将有关这些主题的消息发布到连接的设备。每次传输 MQTT 消息时，都将检查此权限。您可以使用此权限，撤消对当前订阅主题的客户端的访问权限。