文档
»文档»技术文件»固件更新无线

介绍

能够执行远程固件升级无线(FUOTA)正在成为一个要求最物联网(物联网)设备。任何FUOTA过程的细节都与使用的单片机架构紧密相连的设备。然而,任何FUOTA系统需要一个高效和安全的文件交付系统可靠地把固件补丁文件同时(潜在的)许多设备。LoRaWAN®提供了这样一个安全可靠的使用多播文件分发系统。该服务提供的一组应用程序层包。介绍了两个包,形成LoRaWAN文件分布的基础服务:“远程多播设置”计划和“分散的数据块传输”包。

更新固件无线

更新固件无线是一项复杂的任务。一般来说,涉及以下步骤:

  1. 确定需要更新的设备,把它们的多播组
  2. 生成一个固件二进制补丁文件特定于设备平台升级
  3. 这个二进制文件和私钥签署保证完整性和真实性
  4. 将二进制文件的设备升级
  5. 每个设备验证签名验证文件和它的起源
  6. 每台设备安装固件更新
  7. 每个设备报告升级操作的状态(成功或失败)。这个信息是由设备管理平台收集用于监控设备的状态。

其中的一些步骤(2、3、5、6)非常特定于设备的,取决于许多设计选择,包括但不限于:

  • 设备单片机架构(手臂,X86,等等)。
  • 设备内存容量
  • 该设备是否使用一个操作系统
  • 设备使用是否安全的引导载入
  • 是否为部分更新设备固件设计
  • 是否加密硬件加速器设备特性

这样的约束使其不可能标准化FUOTA过程,将为每一个设备在每个LoRaWAN网络工作。一个额外的挑战是低比特率内在LoRaWAN网络。

然而,有效的和可靠的运输将固件补丁一大群设备通过LoRaWAN网络可能的。此外,LoRaWAN广播多播功能。这意味着一个给定的广播数据包通过网络(包含固件补丁的片段)可能会受到很多设备。这种方式,补丁文件不需要单独为每个设备传播。FUOTA LoRaWAN克服了低位率问题通过发送补丁文件所有设备。

固件更新与LoRaWAN

LoRaWAN,有两个主要应用程序层FUOTA包:

  • 多播远程设置
  • 分散的数据块传输

这些应用程序层包在罗拉FUOTA工作组定义的联盟®。规范公开可用罗拉联盟网站

图1:LORAWAN应用层FUOTA包

在设备方面,这些包活在应用程序层和使用LoRaWAN MAC层来发送和接收数据包的网络。此外,其他数据包可能共存的设备应用程序层,通常一些用户应用程序代码将出现。

每个包在设备上对应于一个服务实现在服务器端。例如,“时钟同步”与时钟同步服务在后台实现。在图1中,所有后端服务相关FUOTA被分组到单个实例称为“设备管理服务。“这些包使用一个不同的通信端口的空气。通过这种方式,不同的数据流,对应于每个包可以很容易地分离在上行和下行两个方向。

LoRaWAN多播组

更新固件的第一步在LoRaWAN无线网络是确定和需要更新的设备列表,将它们放入一个LoRaWAN多播组。这个群体可以动态创建和设置在空气中。要做到这一点,使用“远程多播设置”提供的功能包。

远程多播的安装包

LoRaWAN-based网络中的每个设备配备一个单播身份组成的设备地址(32位)和单播安全上下文(一组AES128键),用于唯一地标识和验证设备在网络上。

这种装置也可能属于多达四个多播组。多播组有以下特点:

  • 一个多播组地址
  • 一个多播安全上下文
    • McAppSKey:一个多播应用密钥用于加密有效载荷传递到组
    • McNwkSKey:一个多播网络会话密钥用于计算消息完整性检查(MIC)领域的数据包发送到组
  • 一个多播帧计数器

如果一个设备是多个多播组的一部分,这些组织必须按顺序不同的地址来区分。

多播安全上下文是相同的所有设备属于一个给定组;然而,不同的多播组有不同的安全上下文。他们还必须使用不同的密钥。

“远程多播设置”包提供命令允许以下操作:

  1. 查询计划的实现版本
  2. 查询列表和状态的多播组设备被分配的任务
  3. 创建或修改一个多播组对于一个给定的设备
  4. 删除一个多播组的定义从一个设备
  5. 定义一个类B或C类广播会话并将它与一个多播组

McGroupSetup命令允许您创建一个多播组的完整的上下文对于一个给定的设备。这个命令嵌入机制安全地运输多播组密钥在空气。这是通过运输的多播密钥使用特定于设备的传输密钥加密。它还提供了最小和最大有效帧计数器值和改善的过程本质上限制的安全多播组的生命周期。

创建上下文,然而,不能满足运营一个多播组。

LoRaWAN-based设备低功耗和依靠电池。这些设备通常只有当他们醒来有数据传输,然后立即回到睡眠。因此,能够传输一帧整个集团的设备,系统必须首先确保多播组内所有的设备有接收器活跃在同一时间和同一时间。

解决问题确保接收器都是活跃的同时,LoRaWAN网络使用GPS时间(GPS时代)作为参考(这是选择在UTC时间因为GPS时间可以简单地通过一个无符号32位计数器,增加了每秒钟1,独立于闰秒。闰秒的深入了解,明白了https://en.wikipedia.org/wiki/Leap_second)。

有不同的方法同步LoRaWAN-based设备的时钟网络的时间:

  1. 设备可能定期查询使用对应的MAC层命令(网络时间DeviceTimeReq命令可以在LoRaWAN规范1.0.3版本,后来)
  2. 周期性的设备可能听B类灯塔,它包含GPS时间
  3. 设备可能使用一个专用的包称为“应用程序层时钟同步”

决定要使用哪种技术将基于功耗的权衡,应用需求和时间精度。这些利弊的讨论超出了本文的范围。

一旦设备时钟同步,设备管理服务必须同时项目设备打开他们的接收器,并使用相同的无线信道和数据率。为此,远程多播包设置允许您定义一个C类或者类B组播会话。

定义的类C组播会话开始时间,持续时间,一组无线电参数(通道和数据速率)。当设备的时钟时间到达开始时间,设备程序收音机使用指定的无线参数和他们打开他们的接收器。网络可以广播数据包使用相同的无线参数随时在C类会话。

这个方法很简单,不需要非常精确的时间同步。几秒钟的漂移设备不会产生任何问题。然而,C类会话期间,设备组中不断离开他们的接收器上。因此,这种方法并不低功耗的地区,网络有义务尊重低传输工作周期(例如,不到百分之十在欧洲)。百分之一百一十的关税周期意味着设备90%的能源浪费在C类多播会话。

这是情况下,包也支持使用B类多播会话。当一个B类使用多播会话,一群中的所有设备必须首先与B类同步信标(广播每128秒)在会议开始之前。会议开始后,设备组中的开放周期同时接收插槽,和它们在会话期间保持开放。这使得设备频宽比他们的接收器,同时花大部分的时间睡着了。

注意:网络可能不使用每一个可用的时隙传输信息。然而,B类模式比C类稍微复杂的实现,并要求网络广播类B灯塔。

LoRaWAN是少有的几个广播协议,使真正的多播传输。例如,蜂窝网络模拟多播传输通过建立尽可能多的同时单播会话中有设备组。然而,在这种情况下,数据是发送多次有设备组,而不是只有一次。

多播远程安装包不做任何假设的性质数据帧被网络传播在C类或类B组播会话。帧的数据,例如,可以单独控制帧(的打开和关闭整个群街灯,例如)。

因此,在多播会话期间,需要实现一个有效的手段分裂一个文件,并确保完成交付的每个设备组。为此,“分散的数据块传输LoRaWAN”包创建了。我们将在下一节中讨论这个问题。

传输一个文件到一个多播组

广播多播传输的使用大大提高了网络的效率。每一帧传输只有一次,并且可以同时受到组中的所有设备,而不必传送相同的坐标系分别到每个设备。但是它有一个挑战,即应对错过了招待会。考虑下面的例子:

网络广播100的碎片文件的一组1000设备组装在一个多播组。收音机频道经历干扰,导致每个设备随机失去百分之十的帧广播的网络。如果网络传输到一个设备(单播传输)这不是一个大问题。在这种情况下,可能需要一个片段重复时失去了(大约百分之十的发生时间)平均需要110传输设备成功地推动100年的数据片段。

然而,这是更复杂的多播组。第一个片段广播网络,平均在900年收到的1000台设备。这意味着100年设备不接受第一个片段。因此,网络传输一遍,这一次(平均)十余下的100台设备将接收它。第三次网络传送片段,和一个设备可能仍然想念它。所以,平均而言,它大约需要四个传输相同的数据,以确保所有设备收到完整的片段。这个数字只会变得如果组中设备的数量或出错率增加。

因此,必须使用不同的方法来保证所有设备接收完整的文件,而无需多次重复每一个片段。

为了克服这个问题,“分散的数据块传输方案实现了一个擦除修正代码。这种方法的原理是这样的:

  1. 要发送的文件是支离破碎的N等长片段,这样每个片段都可以融入一个LoRaWAN广播载荷。在我们的例子中,N= 100的片段长度相等。
  2. 对于那些N未编码的片段,消除代码用于生成N+编码片段,(N+米)/ N冗余率。冗余率必须大于丢包率我们想弥补,加上利润。在我们的示例中,假设一个典型的数据包丢失百分之十,20%的冗余率将是合适的。
  3. 这些编码片段设计以这样一种方式,任何的子集N编码的碎片(N + M)生成的片段可以用来重建N原始文件碎片,因此确保完成文件的传输。

再一次,在我们的示例中,设备管理服务将把文件分成100片段,生成120编码片段。这120编码片段然后在C类网络或广播的B类多播会话。每个设备听可能会失去一个片段在会话期间的不同子集。然而,只要一个设备接收到至少100编码片段的120所广播的网络设备能够重建完整的文件。

重复的方法会导致广播400帧,使用这种编码方案允许网络来实现相同的成功率,同时广播只有120帧。

除了所需的编码/解码方法描述,“分散的数据块传输包提供了以下功能:

  • 查询的实现版本碎片包
  • 创建一个碎片会话
  • 请求一个设备或一组设备提供碎片会话的状态
  • 删除一个碎片会话

前向设备发送一个文件或一组设备,必须创建一个碎片会话,提供设备(s)文件的细节,将广播。

FragSessionSetupRequest命令使用以下参数:

  • 碎片会话ID。设备可能四活跃分裂会议在同一时间。此ID用于区分它们。
  • 表达的片段大小字节。
  • 碎片的数量需要重新组装的文件被运输在给定的会话(从1到65535)。
  • 填充0的数量中最后一个片段(可能需要零如果文件长度不是片段长度的整数倍。在这种情况下,零填充时还会增加在过去的片段长度)。
  • 一个文件描述符。这是一个freely-allocated四字节字段。如果文件运输是一个固件补丁图像,该字段为example-encode固件的版本被运输,允许在接待结束时设备兼容性验证。这个字段是特定于应用程序的编码。

一旦FragSessionSetupRequest命令承认了多播组中的所有设备,可以传输编码的碎片。

虽然多播传输更加高效传输相同的文件的一组设备时,碎片包允许我们使用一个单播下行发送片段。

毕竟编码片段被广播,服务器可能查询每个设备使用的状态FragSessionStatusRequest命令。这个命令可以发送单播或多播帧。

设备响应此命令使用以下信息:

  • 分裂的状态会话:文件成功重建,或一个错误代码,如果文件不能被重组
  • 片段的总数收到分裂会议期间
  • 前丢失的碎片文件的数量可能重组

额外的编码片段可能被发送到设备尚未能够完全重新组装文件。这些片段可以发送单播下行,或者可以创建一个新的多播会话如果太多的设备已经无法重新组装文件。

总结

在本文中,我们介绍了“分散的数据块传输”和“远程多播设置”应用程序层包,并讨论了LoRaWAN如何提供一个高效、可靠的fragmented-file送货服务。我们还说明了如何使用fragmented-file送货服务可以用来推动无线二进制固件更新大量的设备。这是通过使用LoRaWAN协议独特的无线多播功能结合高效的片段编码方案,大大减少了重复传输所需的数量。

Baidu
map