2022年 / 第6期 物联网技术
41
0 引 言
LoRa (Long Range Radio, LoRa )是一种远距离无线电,因采用线性调频扩频技术,具有长距离和低功耗的特点,工作于非授权频段,被广泛部署于智能表计、智慧农业、智能物流等多个物联网垂直行业,前景广阔[1-3]。
然而,由于LoRa 通信通常采用星形组网,且目前较多应用使用LoRa “点对点”通信模式,在大面积工程应用时存在频点冲突和固件升级困难的问题[4-5]。现有的全量升级方案常用于初始化设备和恢复出 厂设置时的批量升级,固件体积庞大,升级耗时,不适用于低速率的LoRa 通信场景。增量升级,又称差分升级,通过使用新旧版本的差异文件对旧固件做还原操作,差分固件体积小,适用于应用升级(In Application Programming, IAP )[6-8]和空中固件升级(Over the Air, OTA )[9-10]。 本文提出了一种用于LoRa 通信的OTA 差分升级方法,使用开源差分算法Bsdiff 和压缩算法FastLz77对新旧固件做差异提取并压缩,以减小固件体积。为保证固件传输的可靠性,固件数据包使用LoRa 跳频和循环异或加密技术传输。文中详细介绍了OTA 系统构成、固件包制作和传输过程,最后搭建了OTA 测试环境以验证升级方案的可靠性。 1 OTA 升级原理和系统组成
自制路由器天线由于LoRa 通信的速率不高,以最高速率(扩频因子SF=7、编码率CR=4/5、带宽BW=500 kHz 时)传输255字
节的理论时间为135 ms 。因此,OTA 升级方案应选择差分固件升级,通过对待升级的固件做差分,减小固件体积。
差分升级的基本原理如图1所示,主要包括差分包制作、差分包传输、差分包还原三部分。首先将新固件与旧固件做差分,得到补丁文件;之后将补丁文件通过LoRa 通信下发至待升级的终端设备;最
后终端设备根据补丁文件和已有旧固件执行还原操作得到新固件。将新固件写入FLASH ,设置终端程序跳转到新固件的位置并执行,实现空中升级
。
图1 差分升级基本原理
本文执行OTA 差分升级系统组成如图2所示。系统由LoRa 主、从节点构成,相关定义如下:LoRa 服务器为Master 节点,由PC 上位机和USB 转LoRa 设备构成;LoRa 待升级终端为Slave 节点。每个Slave 节点有唯一的ID 号,服务器已知各Slave 节点ID 号。待升级的新固件定义为New ,旧固件定义为Old ,补丁文件定义为Patch 。 此外,需按功能划分Slave 节点固件和升级参数的存储区域,在应用程序执行过程中,将OTA 接收的固件包存入相应区域。FLASH 分区为BootLoader_Flash 、APPA_Flash 、APPB_Flash 、Patch_Fla
sh 、Update_Flash 、Other_Flash 。其中, BootLoader_Flash 用于启动固件存放空间,负责patch 文
刘 洋1,王 剑2
(1.中国民用航空飞行学院 航空电子电气学院,四川 广汉 618307;
载客电动三轮车2.清华四川能源互联网研究院,四川 成都 610213)
摘 要:
LoRa 通信技术具有长距离、低功耗和ISM 通信的特点,在物联网领域有着广泛的应用场景。目前使用较多的“点对点”通信模式在大面积工程应用时存在频点冲突和固件升级困难的问题。为此,文中提出了一种适用于LoRa 通信的OTA 差分升级方法,基于Bsdiff 差分和FastLz77压缩算法可靠降低了固件体积;采用跳频和循环异或加密技术,避免对正常业务信道数据造成干扰;详细描述了差分固件的制作、LoRa 传输等流程。通过对SX1278和STM32F103搭建的测试节点开展测试,验证了提出的OTA 差分升级方法稳定可靠,适用于LoRa 通信设备的固件升级应用。
关键词:
LoRa ;OTA ;差分升级;Bsdiff 差分;FastLz77压缩;跳频;循环异或加密中图分类号:TP39;TN914 文献标识码:A 文章编号:
2095-1302(2022)06-0041-04收稿日期:2021-05-18 修回日期:2021-06-23
物联网技术 2022年 / 第6期
42后写入,升级固件需要按扇区大小分包写入。因此,patch 补丁固件按FLASH 扇区大小进行分块做差分,每个FLASH 块的差分结果增加相应块序号信息和校验信息,组成patch 固件子包patch_pkg_i 。最后将新固件信息和patch 固件子包信息合并成完整的patch 补丁固件。子包差分固件生成示意图如图3所示。Patch 补丁固件包具体生成步骤如下:(1)固件分块。将新固件和旧固件按Slave 节点的FLASH 扇区大小(Flash_Page_Size=1 024 B ,2 048 B 等)分成若干个固件子块,如式(1)。
New New pkg 1New pkg 2New pkg Old Old pkg 1Old p =⋅⋅⋅{}=__,__,,____,_n k g 2Old pkg _,,__⋅⋅⋅{}
m (1)
(2)子块差分。对比具有相同块号的新、旧固件子块(New_pkg_i ,
Old_pkg_i )内容的一致性,若两子块内容相同,则不对该新固件子块创建补丁内容,否则使用开源差分算法Bsdiff 计算两子块内容的差分结果bsdiff_out_i ,若新固件的子块数大于旧固件子块数(n >m ),则多出的新固件子块不计算差分,直接将该新固件子块内容作为差分结果。
(3)差分块压缩。由于差分结果具有高度稀疏特性,采用压缩算法可进一步减小固件的数据量。调用fastLz77算法对新固件子块差分结果bsdiff_out_i 进行压缩,得到新固件第i 个子块的补丁bsdiff_fastLz77_out_i 。
(4)合并子块补丁。将新固件信息和压缩后的固件子块补丁组合,创建patch 固件。patch 固件由头信息块patch_header 和各子信息块patch_pkg_i 依次排列构成,其中头信息patch_header 包括总差分包数patch_pkg_total 、新固件的文件大小newFile_size 、新固件的md5信息摘要newFile_md5;子信息块patch_pkg_i 由当前子块序号i 、子块差分压缩包大小size_i 、子块差分压缩包bsdiff_fastLz77_out_i 、子块差分压缩包的CRC8校验值组成。
图3 子包差分固件生成示意图
3 LoRa 固件传输
由于LoRa 传输容量有限,单次无法发送全部patch 补丁固件,需要拆分patch 补丁固件进行多次传输。Master 节点将Patch 补丁固件按照单次最大传输字节长度(Max_Send_Size )可分为若干(nSend )包,send_pkg_1,send_pkg_2,...,send_pkg_n 。Master 与Slave 每次交互发送一个OTA 数据包OTA_pkg_i ,OTA 数据包由OTA_header 、OTA_Size 、send_pkg_i 和sum32校验值构成,发送至Slave 节点,采用报文内容加密和跳频方式传输。3.1 报文加密
采用指定密钥循环异或(XOR-Cycle )的方式对报文加密。首先计算Slave 节点ID 值的128位信息摘要MD5,将明文报文与计算的MD5值依次按字节遍历做异或处理,生成加密报文。由于采用异或加密,因此解密与加密的过程相同。其中,Master 对报文加密,Slave 对报文解密。加解密方法描述如
下:
假设原始报文的明文字节数组A =[a 1, a 2, ..., a n ],密文字节数组为B =[b 1, b 2, ..., b n ],共计n 字节;Slave 节点的ID 为ID=[id 1, id 2, ..., id m ]共计m 字节。
(1)计算MD5。计算Slave 节点ID 的128位MD5信息
摘要值,MD5(ID )=[md5_1, md5_2, ..., md5_16]。(2)循环异或加密。将明文与计算的MD5值依次按字节遍历做异或加/解密处理:b 1=a 1⊕md5_1; b 2=a 2⊕md5_2;…;b 16=a 16⊕md5_16;b 17=a 17⊕md5_1;b 18=a 18⊕md5_2;…;b n =a n ⊕md5_x 。完成加解密。3.2 跳频传输
补丁固件使用LoRa 传输时会极大占用当前通信信道,严重干扰其他使用当前信道的设备正常工作。因此,在传输补丁固件包时使用跳频传输方式,在多个业务信道随机传输,
2022年 / 第6期 物联网技术
43
(2)Master 节点设置信道信息。Master 节点发送(ch_x )的报文中带有Slave 响应节点的跳频信息ch_y ,Master 节点发送结束后在对应的Slave 响应频点(ch_y )接收Slave 回复报文,如果Slave 节点未及时响应,则Master 节点使用上次的频点(ch_x )重发报文信息,并切换至Slave 响应频点(ch_y )等待响应,再次超时响应则结束当前数据传输。(3)频点选择。跳频频点ch_y 由Master 节点随机在所有备选信道中选取。3.3 传输流程3.3.1 Master 固件传输
Master 节点固件传输流程如图4所示。Master 节点首先
设置Slave 节点应答频点ch_x 并切换Master 的接收频点为ch_x ,等待终端应答。若终端正常应常,Master 发送第i 个OTA 数据包,并指定终端应答频点ch_y ,切换Mastert 的接收频点为ch_y ,等待终端应答,重复该过程直到patch 固件发送完成。
3.3.2 Slave 固件接收
Slave 节点接收patch 补丁固件的流程如图5所示。Slave 节点处于空闲状态时,切换LoRa 通信模式为接收模式,并设定接收信道为默认信道(ch_1)。接收到报文信息后,立即进行解密处理,如果解密后的报文满足patch 补丁固件传输流程,则根据报文进行回复
。
图4 Master 节点传输流程 图5 Slave 节点传输流程
4 Slave 节点固件更新
Slave 节点接收完OTA 升级包后,将执行固件更新操作,还原固件并检查固件的一致性。运行BootLoader 引导程序,读取Patch_Flash 区域的patch 补丁固件信息,提取patch_header 和patch 子信息块patch_pkg_i ;从patch 子信息块patch_pkg_i 提取子块差分压缩包bsdiff_fastLz77_out_i 和子块差分压缩包的CRC8校验值。使用fastLz77解压算法www.123ctCT
对子块差分压缩包bsdiff_fastLz77_out_i 解压,计算解压后数据包的CRC8校验值,如果计算的校验值与子信息块patch_pkg_i 的校验值相同,则使用bspatch 还原算法和APPB_Flash 存储区第i 个扇区的固件信息还原新固件子包,并将其写入APPA_Flash 存储区第i 个扇区,重复直到还原所有子信息块。
一致性校验根据OTA 升级信息,从APPA_Flash 存储区读取指定长度为新固件newFile_size 字节数的数据,计
物联网技术 2022年 / 第6期
44将APPB_Flash 存储区的旧固件拷贝至APPA_Flash 存储区,清除Patch_Flash 存储区和相关OTA 升级信息
。
5 OTA 升级测试
为验证基于LoRa 通信的OTA 升级的可靠性,搭建包括1个Master 节点和10个Slave 节点的测试环境,其中 Master 节点由PC 端电脑软件和LoRa 透传模组组成。PC 端电脑软件完成对Slave 节点的OTA 升级流程和协议控制,此外还制作patch 文件;LoRa 透传模组接口为USB 转LoRa ,模组如图6 所示,负责将PC 端电脑软件发出到USB 口的数据转换成LoRa 通信无线方式发送。Slave 节点的参数信息见表1 所列。
图6 USB 转LoRa 模组表1 Slave 节点参数
参 数指 标MCU STM32F103RBT6
主频72 MHz FLASH 容量128 KB ,扇区1 KB
LoRa 模组SX1278工作频段470~490 MHz 节点ID
0x211830~0x21183A
同步Master 节点和Slave 节点的LoRa 跳频信道划分,配置默认信道为ch_1:472.5 MHz ,从472.7~485.1 MHz ,间隔0.2 MHz ,共计62个跳频信道。其余LoRa 通信参数设置为带宽500 kHz 、编码率4/5、扩频因子12。为模拟信道冲突,10个Slave 节点都在ch_1信道每隔10 s 随机发送业务 数据。
Master 节点选择测试用新固件new.bin ,大小为31.2 KB ; 旧固件old.bin ,大小为33 KB ;依次执行固件分包、子包差分、子包压缩、patch 文件拼包操作,生成patch 补丁固件源文件。其中,固件按照扇区1 KB 进行分包,patch 补丁固件源文件(patch.bin )大小为2.3 KB 。
OTA 传输的有效patch 数据包设置为255字节,Master 节点将patch 补丁固件按照255字节分成10个数据包,每个数据包增加头文件信息OTA_header 、整包数据量OTA_Size 和sum32校验值,构成OTA 数据包。Master 节点发送
响应信道ch_x 为17,即476.1 MHz ,设置Master 节点在 476.1 MHz 等待接收Slave 节点1的回复报文,等待延时 120 ms 后Master 报文接收成功。
Master 节点在信道476.1 MHz 发送第一帧OTA 数据报文,并随机指定Slave 节点的响应跳频信道ch_x 为32,即479.1 MHz ,发送之后设置Master 节点在479.1 MHz 等待接收Slave 节点的回复报文,等待延时260 ms 后Master 报文接收成功。
Master 节点依次发送至最后一帧OTA 数据报文,Slave 节点均正常响应。此时,Slave 节点重启进入BootLoader 引导程序,执行固件还原操作,校验新固件MD5,并将该新固件写入APPB_Flash 区进行备份,程序跳转至APPA_Flash 区,正确执行,OTA 升级完毕。多次测试结果见表2所列,成功率为100%。
表2 OTA 升级结果
次 数升级耗时/s 升级结果112.640成功211.800成功3 12.480成功412.460成功5
11.660
成功
6 结 语
本文提出了用于LoRa 通信的OTA 差分升级方案,通过Bsdiff 差分和FastLz77压缩进一步减小了固件的体积以适应LoRa 低速率传输场景。为避免对现有业务信道的传输冲突,使用LoRa 跳频和循环异或加密方式对固件传输信道和固件数据包进行优化,显著提高了固件升级的成功率。验证结果表明,本方案适用于LoRa “点对点”通信场景下的固件升级应用。
参
考
文
献
[1]蔡伟钧,吴浩明,李超铖,等.基于LoRa 的智能插座设计与实现
[J].电子设计工程,2021,29(5):47-51.
[2]付建文,蒋昱麒.基于LoRa 技术的远程抄表系统设计[J].电子设计工程,2019,27(15):157-160.
[3]周成状,王琪.基于LoRa 技术的室内环境监测及智能调节系统设计[J].传感器与微系统,2021,40(4):96-98.
[4]孙航,梁丹丹,郝凤柱,等.基于LoRa 技术的低压集抄系统运行可靠性分析[J].电力大数据,2020,23(4):31-38.
(下转第47页)
2022年 / 第6期 物联网技术
47
时会导致源节点通信范围相邻节点的正常信号接收受到影响。和一般的陆地相似网络相比,水下无线
通信网络还需要一个或以上的水面节点作为网关节点,便于水上无线网络相互连接。所以,完全的分布式网络难以满足水下无线通信网络的需求。
(3)混合式。从上述两种情况来看,无论哪种都不能满足水下网络通信的相关需求,所以目前应用最多的网络拓扑为混合式,即将水面网关节点或水下汇聚节点看作中心节点,重点汇总处理水下网络采集的数据信息,并实现有效管控。
总之,水下无线通信网络拓扑需要基于具体的应用需求,针对性地开展研究设计,建立最优的拓扑结构。当前最常见的包含了水面网关部署类以及水下网络拓扑类。其中,前者主要有单一网关以及多网关两种,但单一网关能耗大,存在延时问题,而多网关正好可以解决这一问题,但也会在一定程度上增加被破坏和发现的风险。后者主要包含二维静态、三维静态以及动态类3种,但各自都有自身特性和适用范围,所以在实际建立网络拓扑的过程中,还需基于实际的应用需求与场景,选择最适合的结构,之后再基于此确定科学的控制方法,以使拓扑与节点的控制都能实现最优。
3 结 语
蜂鸣器封装
虽然目前水下无线通信技术具有众多优势,也被应用在多个领域,但在实际应用时却依然面临各种安全威胁,诸如
洋环境监测、资源开发等都具有极高的经济价值与现实意义。对此,需要根据实际情况落实安全设计,从构建安全体系着手,加强网络安全管理,进一步优化网络拓扑结构,提升安全性,从根本上保证整体网络的使用安全,满足基本的应用需求。
参
考
文
献
[1]吕国,陈莲娜,肖瑞雪,等.无线网络通信数据安全态势量化评估方法仿真[J].计算机仿真,2020,37(7):337-340.
[2]邹蕾,穆泉伶.模式识别技术的无线通信网络安全系统可靠性评价[J].微电子学与计算机,2020,37(6):79-82.
[3]李松,潘东跃,孙彦景,等.水下环境安全监测无线磁感应通信技术研究[J].工矿自动化,2019,45(6):16-20.
[4]张元龙,龚辉,张明冠.现代通信安全管理研究—评《无线通信安全》[J].中国安全科学学报,2019,29(5):193.
[5]马克明,陈亚军,胡鑫,等.面向物联网无线携能通信系统的机会安全传输方案[J].通信学报,2019,40(2):70-81.
[6]王淑华,陈振龙.基于格的无线传感器网络密钥协商协议[J].传感技术学报,2019,32(2):283-289.
[7]刘世文,马多耀,雷程,等.基于网络安全态势感知的主动防御技术研究[J].计算机工程与科学,2018,40(6):1054-1061.[8]张雪亚.一种无线网络安全策略研究[J].电子测量技术,2018,41(10):13-18.
[9]冯登国,徐静,兰晓.5G 移动通信网络安全研究[J].软件学报,2018,29(6):1813-1825.
尺寸测量[10]郭剑岚,陈俞强,刘怡俊.无线传感网络中的物理层安全问题
探讨[J].系统仿真学报,2017,29(8):1815-1821.
作者简介:高 欣(1981—),女,讲师,硕士,研究方向为软件技术、无线通信安全。
[5]汪晓华,唐明,宋玮琼,等.满足国家电网公司标准体系的LoRa 用能采集专网技术研究及应用[J].电测与仪表,2020,57(8):8-12.[6]鲁慧琦,张国平,杨晓霞,等.基于AES 的STM32在应用升级设计[J].电子测量技术,2020,43(24):141-146.
[7]包晓安,李刚,文艺霏,等.基于压缩和差分算法的嵌入式平台远程更新设计与分析[J].浙江理工大学学报(自然科学版),2020,43(4):535-541.
[8]许晓飞,陈亮.应用整数小波变换的LZ77电力数据压缩算法[J].西安工程大学学报,2018,32(3):337-342.
[9]王栋梁,汤利顺,陈博,等.智能网联汽车整车OTA 功能设计研究[J].汽车技术,2018,49(10):29-33.
深度水产[10]赵二刚,张红宾,王志红,等.基于LoRa 技术的STM32处
理器无线程序升级系统设计[J].南开大学学报(自然科学版),2020,53(6):18-21.
作者简介:刘 洋(1993—),女,黑龙江黑河人,硕士,讲师,研究方向为电力系统大数据分析、物联网应用技术。
(上接第44页)