近年来,随着物联网应用在各行各业规模化落地,物联网终端数量也在与日俱增。和其他网络终端设备一样,物联网终端同样存在软件漏洞、安全升级或功能更新等问题,需要对终端进行现场维护和升级。而这项工作随着落地终端数量的增长,现场维护所需的人工操作升级成本也越来越高。因此,FUOTA 技术应运而生。
FUOTA 全称为 Firmware update over the air,是一种可无线进行固件更新的技术。而作为最重要的 LPWAN 技术之一的 LoRa®,也在其 LoRaWAN® 协议栈上支持 FUOTA 升级。
LoRaWAN® 协议 FUOTA 架构
LoRaWAN® 中的 FUOTA 是利用组播技术将固件更新推送到一个或多个设备,从而实现固件更新。需要注意的是,FUOTA 不是 LoRaWAN® MAC 层的一部分,它运行在应用层,因此,FUOTA 中的所有进程都与 LoRaWAN® 协议版本无关。
LoRaWAN® FUOTA 名词解释:
FUS | Firmware Update Server(固件更新服务器)。一个服务器,其任务是生成要在终端设备上使用的固件更新镜像,和要更新的终端设备列表。 |
FUA | Firmware Update Agent(固件更新代理),是 FUS 在终端设备的对应部分。 |
FDS | File Distribution Server(文件发布服务器),专门负责向终端设备交付固件更新镜像的应用程序服务器。该服务器在一组特定的端口上在应用程序层(与 AS 并行或在 AS 之上)运行。 |
FDC | File Distribution Client(文件发布客户端),是 FDS 在终端设备的对应部分。 |
NS | Network Server(网络服务器)。 |
Dev | End-device(终端设备)。 |
LoRaWAN® FUOTA 流程简述:
1.获取要升级的设备 ID,如果是单播或者组播已经包含算了要升级的设备,该步骤可以省略。组播组里包含的设备可能多于要升级的设备,如果是增量升级,所有运行的设备当前固件必须一样;
2.创建压缩固件或者增量固件,选择分片参数(分片数量,容错率 RC,冗余编码);
3.固件包含一个固件头(至少包含目标设备硬件版本,当前固件版本,固件 CRC,固件的压缩机制等);
4.和 NS 协商 Class C 分发窗口。参数包含设备列表,要发送的分片文件大小,临界时间和编码冗余等;
5.使用应用程序单播下行链路为所有要更新的终端设备配置多播组(要使用的多播地址、密钥等);
6.Service 使用单播下行链路为所有要更新的终端设备配置 C 类。在后台,终端设备必须将其时钟与网络时钟同步;
7.为所有要更新的终端设备设置碎片会话;
8.将碎片文件发送到 NS,NS 将片段文件广播(或单播)到要更新的终端设备;
9.一旦终端设备收到足够的碎片,就会重建二进制镜像;
10.终端设备重组并检查镜像的完整性;
11.终端设备的将新固件映像标记为“就绪”。这意味着映像将在下次重置时由引导加载程序切换至新固件;
12.设备重启,并在入网成功后并发送一包上行数据,其中可包含当前新固件的版本号等信息。
想要浏览完整流程,可查看 LoRa® 联盟 FUOTA Process Summary Technical Recommendation 文档。
有关使用组播和 FUOTA 的初学者指南,也可查看视频。
RUI3 LoRaWAN® FUOTA 的实现方式
LoRa® 联盟利用 LoRaWAN® 协议之上的应用层协议对 FUOTA 流程进行了标准化,例如时钟同步消息协议、远程多播设置协议、以及分片数据块传输协议。这些协议可以实现在应用服务器指定的时间向多个设备下发固件镜像。
下图显示了 LoRaWAN® 网络架构中的 FUOTA 概览。应用服务器请求 LoRaWAN® 网络服务器将固件镜像连同交付时间一起,交付给一个终端设备或一组终端设备。LoRaWAN® 网络服务器根据请求通过 LoRaWAN® 无线网络将固件镜像传送到终端设备。
LoRaWAN 网络架构中的 FUOTA 概览
应用层协议用于从 LoRaWAN® 网络服务器到终端设备的传输。分片数据块传输协议提供了将固件镜像分割为小于 LoRaWAN® 网络中可以传输的最大值,并将其重构为固件镜像的功能。远程组播协议可以提供将分段的固件镜像同时传送到一组终端设备的功能。时钟同步协议提供了将终端设备的时钟与 LoRaWAN® 网络的 GPS 时钟同步的功能,以便终端设备可以准备交付并接收分段的固件镜像。
下图显示了 LoRaWAN® 网络服务器和终端设备之间的消息交换。首先,使用应用层协议将交付所需的参数设置到终端设备。之后,固件镜像将通过分片数据块传输协议分片传递给终端设备。终端设备将碎片数据重建到固件镜像中,使用固件镜像更新内部固件并重新启动。
服务器与终端的消息交换
RAK 低代码开发平台 RUI3 的 LoRaWAN® FUOTA 升级预计将在 10 月底的 RAK 秋季发布会上正式发布,届时将使用 RAK4631 终端和 RAK7268 网关进行演示,后续将支持更多的第三方网关和终端,敬请期待!
全部0条评论
快来发表一下你的评论吧 !