在 LoRaWAN 网络中,有时会有许多不同的物联网 (IoT) 设备需要定期维护。例如,这里的一个问题是新固件的安装。一个重要的要求可能是能够远程执行此过程。LoRaWAN 使用多播消息为此提供了一种高效且安全的方法。该服务由一组应用层数据包提供。本文概述了无线固件更新 (FUOTA) 最重要的方面,并详细强调了三个应用层数据包。
版权声明:本文为CSDN博主「Ethernet_Comm」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https
无线固件更新 FUOTA
LoRaWAN:无线固件更新 (FUOTA)
更新固件的 6 个步骤
- 标识要更新的设备并分类到多播组中。
- 为要更新的设备平台生成二进制固件补丁文件
- 将二进制文件发送到要更新的设备组
- 用于验证文件及其来源的签名由每个设备验证
- 每个设备安装固件更新
- 每个设备报告更新过程的状态(成功或失败)
尽管上述步骤非常特定于设备,但可以标准化 FUOTA 流程,使其适用于 LoRaWAN 网络中的几乎所有设备。运行 FUOTA 的要求目前由硬件平台 STM32L0+SX126x、STM32WB55+SX126x 和 STM32WLE/STM32WL55上的STACKFORCE LoRaWAN 堆栈给出。根据要求,我们还提供其他平台。
一个特定的限制是在 LoRaWAN 网络中传输数据的低比特率。多播消息应对了这一挑战。这些确保通过网络传输的给定无线电数据包可以被许多设备接收。因此,一次传输就足以同时到达所有设备。
使用 LoRaWAN,FUOTA 有三个主要的应用层数据包:
- 时钟同步
- 远程组播设置
- 分片数据块传输
在设备端,这些数据包驻留在应用层。他们使用 LoRaWAN MAC 层向网络发送消息和从网络接收消息。此外,其他数据包可能存在于设备的应用层。在 LoRaWAN 网络上更新固件的第一步是识别并列出要更新的设备,并将它们添加到 LoRaWAN 多播组。该组可以动态创建和设置。
远程组播设置
LoRaWAN 网络中的每个设备都配备了一个单播身份,用于在网络上唯一标识和验证设备。在Remote Multicast Setup中,可以执行以下应用程序:
- 查询包的实现版本。
- 查询设备已分配的组播组列表和状态。
- 为特定设备创建或修改多播组。
- 从设备中删除多播组定义。
- 定义 B 类或 C 类会话并将其与多播组相关联。
基于 LoRaWAN 的设备由电池供电,通常只有在有数据要传输时才会唤醒,然后立即回到睡眠状态。因此,要向整个设备组发送消息,系统必须首先确保多播组内所有设备的接收者同时处于活动状态,持续时间相同。
为了将基于 LoRaWAN 的设备的时间与网络时间同步,使用了时钟同步数据包。一旦设备时钟同步,设备管理服务必须对设备进行编程以同时打开它们的接收器并使用相同的无线电信道和数据速率。为此,可以使用远程多播设置包定义 C 类或 B 类多播会话。
Remote Multicast Setup 包不假设 C 类或 B 类多播会话期间网络传输的消息内容。因此,在多播会话期间,必须提供一种方法来有效地对文件进行分段,以确保完整地传送到组中的每个设备。为此创建了碎片数据块传输包。
碎片化数据块传输
无线电多播传输的使用大大提高了网络的效率。然而,挑战在于并非所有数据包都能到达接收方。为了成功传输尽可能多的数据包,分片数据块传输包实现了“前向纠错码”。
将要发送的文件拆分成等长的分片,并执行前向纠错码,使单个分片可以恢复,以保证完整文件的传输。此外,Fragmented Data Block Transport包还提供了以下功能:
- 查询分片包的实现版本。
- 创建碎片会话
- 查询一个设备或一组设备以确定分段会话的状态
- 删除分片会话
在将文件发送到一个设备或一组设备之前,必须创建一个分段会话。这告诉一个或多个设备要发送的文件的详细信息。尽管多播传输对于将同一文件发送到一组设备而言效率更高,但分片包还允许通过单播下行链路发送分片。使用单播或多播消息,服务器可以在发送完所有编码片段后查询每个设备的状态。可以将额外的编码片段发送到尚未能够完全重新组合文件的设备。这些片段可以作为单播下行链路发送,或者如果太多设备无法重组文件,则可以建立新的多播会话。
概括
在本文中,我们介绍了 时钟同步、远程多播设置和分段数据块传输 应用层包的主题。有了这个包,LoRaWAN 为传输碎片文件提供了可靠的服务。LoRaWAN 协议的多播功能与高效的片段编码方案相结合,显着减少了所需的重复传输次数。这使用户可以轻松地通过无线方式执行固件更新。