

# FUOTA 过程概述
<a name="lorawan-fuota-mc-process"></a>

下图说明了 适用于 LoRaWAN 的 AWS IoT Core 如何为终端设备执行 FUOTA 流程。如果要向 FUOTA 会话添加单个设备，可以跳过创建和配置多播组的步骤。您可以直接将设备添加到 FUOTA 会话中，然后 适用于 LoRaWAN 的 AWS IoT Core 将启动固件更新过程。

![图片说明了 适用于 LoRaWAN 的 AWS IoT Core 如何对终端设备执行 FUOTA。](http://docs.aws.amazon.com/zh_cn/iot-wireless/latest/developerguide/images/iot-lorawan-fuota-flow.png)


要对设备执行 FUOTA，请首先创建数字签名固件映像，然后配置要添加到 FUOTA 任务中的设备和多播组。启动 FUOTA 会话后，您的终端设备会收集所有碎片，从碎片中重建映像，将状态报告至 适用于 LoRaWAN 的 AWS IoT Core，然后应用新的固件映像。

下面说明了 FUOTA 流程的不同步骤：

1. 

**使用数字签名创建固件映像或增量映像**

   要通过 适用于 LoRaWAN 的 AWS IoT Core 对 LoRaWAN 设备执行 FUOTA，建议您在通过无线方式发送固件更新时对固件映像或增量映像进行数字签名。然后，接收映像的设备可以验证映像来自正确的来源。

   固件映像的大小不得超过 1 兆字节。固件越大，更新过程完成所需的时间就越长。要更快地传输数据，或如果您的新映像大于 1 兆字节，请使用增量映像，这是新映像的一部分，即新固件映像和上一个映像之间的增量。
**注意**  
适用于 LoRaWAN 的 AWS IoT Core 不提供数字签名生成工具和固件版本管理系统。您可以使用任何第三方工具为固件映像生成数字签名。建议您使用数字签名工具，例如嵌入 [ARM mbed GitHub 存储库](https://github.com/armmbed/mbed-os-example-lorawan-fuota)的工具，其中还包括用于生成增量映像和设备使用该映像的工具。

1. 

**识别和配置 FUOTA 的设备**

   识别 FUOTA 的设备后，将固件更新发送到单个或多个设备。
   + 要将固件更新发送到多台设备，请创建多播组，然后使用终端设备配置多播组。有关更多信息，请参阅[创建多播组向多台设备发送下行链路有效负载](lorawan-multicast-groups.md)。
   + 要向各个设备发送固件更新，请将这些设备添加到 FUOTA 会话中，然后执行固件更新。

1. 

**调度分发窗口并设置碎片会话**

   如果创建了多播组，可以指定 B 类或 C 类分发窗口，确定设备可以从 适用于 LoRaWAN 的 AWS IoT Core 接收碎片的时间。在切换到 B 类或 C 类模式之前，您的设备可能在 A 类中运行。您还必须指定会话的开始时间。

   B 类或 C 类设备会在指定的分发窗口唤醒，然后开始接收下行链路数据包。在 C 类模式下运行的设备可以消耗比 B 类设备更多的电量。有关更多信息，请参阅[设备类](lorawan-manage-end-devices.md#lorawan-device-classes)。

1. 

**终端设备将状态报告至 适用于 LoRaWAN 的 AWS IoT Core 并更新固件映像**

   设置碎片会话后，您的终端设备和 适用于 LoRaWAN 的 AWS IoT Core 执行以下步骤以更新设备的固件。

   1. 由于 LoRaWAN 设备的数据速率较低，要启动 FUOTA 流程，适用于 LoRaWAN 的 AWS IoT Core 设置碎片会话以对固件映像进行碎片化。 然后 会将这些碎片发送到终端设备。

   1. 适用于 LoRaWAN 的 AWS IoT Core 发送映像碎片后，LoRaWAN 终端设备执行以下任务。

      1. 收集碎片，然后从这些碎片中重建二进制图像。

      1. 检查重建后映像的数字签名以验证映像并验证来自正确的来源。

      1. 比较来自的固件版本 适用于 LoRaWAN 的 AWS IoT Core 转至当前版本。

      1. 报告转移到 适用于 LoRaWAN 的 AWS IoT Core 的碎片映像状态，然后应用新的固件映像。
**注意**  
在某些情况下，在检查固件映像的数字签名之前，终端设备报告传输到 适用于 LoRaWAN 的 AWS IoT Core 的碎片映像的状态。

现在您已经了解了 FUOTA 流程，您可以创建 FUOTA 任务并将设备添加到任务中以更新固件。有关更多信息，请参阅[创建 FUOTA 任务并提供固件映像](lorawan-fuota-create-task.md)。