童树卫 戚一
摘 要:NB-IoT终端现有版本存在软件问题或功能增加,需要通过SOTA来解决,然而在SOTA过程中,不可避免地出现持续的高功耗存在,且信号质量得不到保障的前提下持续升级,会降低升级质量。面对此类问题,该文提出一种低功耗升级方法,升级时能够降低设备功耗的同时又保证设备通信可靠性。经过试验验证及结果显示,该方法能够有效地降低功耗,保证产品的使用寿命,且有效地保证了升级的可靠性。
关键词:NB-IoT;SOTA;信号质量;低功耗;设备升级;物联网平台
0 引 言
SOTA(Software Over The Air)是通过华为自研的PCP升级协议,加上内置LwM2M协议的NB-IoT模组,实现对第三方MCU的升级[1]。
NB-IoT技术是3GPP标准定义的一种低功耗广域网解决方案,可支持人与物及物与物之间的连接[2]。随着NB-IoT设备红利期的到来,其应用范围也越来越广,尤其是带电池工作的NB-IoT终端设备运用日益广泛。随着海量物联网终端的部署,通过远程方式来对终端软件进行升级,日益重要,远程方式能大大降低通过人工近端进行升级所投入的成本[1,3]。
随着物联网终端硬件运算能力和存储能力的不断提升,硬件日益趋向同质化。终端软件的差异化将是构建未来物联网终端产品的核心竞争力的关键因素。通过在物联网终端中引入SOTA,持续通过远程方式构建终端软件的差异化竞争力,使得终端厂商在竞争中脱颖而出。
现有的SOTA技术虽然能够解决大部分问题,但在升级过程中也存在着很大隐患:
(1)连续长时间通信造成功耗急剧增加,根据电池输出特性,长时间大电流工作会导致电池电压急剧下降,若低于NB-IoT模组工作电压下限,就会导致模组复位,从而更新失败,重新启动后又再次增加能量的损耗,由此造成产品使用寿命的缩减。
(2)在升级过程中会高度依赖网络质量,由于差分包的体积比较大,升级指令较为复杂,若在基站信号质量不稳定的情况下升级,将导致升级率并不是很高的技术问题。因此,本文提出一种低功耗SOTA方法彻底解决上述问题。
1 系统总体设计思路
本文设计一种NB-IoT终端SOTA方法,主要涉及两个部分:终端和服务器端[4]。NB-IoT终端升级模型如图1所示。利用华为自带工具生产差分包,对新旧两个版本的差异进行比较并生成差分包,将生成的差分包上传至对应的物联网平台中。物联网平台通过平台设置,进行软件包的制作与上传。根据需求,进行设备profile里增加软件升级能力的定义,升级协议选择“PCP”。最后通过物联网平台相应的软件升级设置“创建批量任务”。由此完成物联网平台的基本设置。
NB-IoT终端设备通过NB-IoT通信模组直接与基站连接,在附着核心网成功后即可与服务器端更新软件进行数据交互,以此完成更新代码的传递。
2 物联网平台设计
3GPP协议标准定义。NB-IoT制式带宽为200 kHz,目前市面上部署的网络子载波为15 kHz,其保护带为20 kHz,根据公式(200 kHz-20 kHz)/15 kHz=12,因此NB-IoT的并發网络容量[5]为12个。NB-IoT终端设备在发送数据到同一个基站时,最多允许12个NB-IoT模组同时接入。因此若大量NB-IoT终端设备同时同步升级,会造成信道堵塞,从而延迟通信,不仅造成NB-IoT终端设备通信慢,也在等待过程中消耗电池能量,进一步降低电池使用寿命。
因此,本文设计一种离散心跳升级法,即在NB-IoT终端设备发送心跳期间,发送查询指令或升级包,从而达到远程升级的目的。
物联网平台端处理如图2所示,用户通过登录物联网平台账号,根据要求生成并上传对应的公钥信息,选择相应的功能添加升级包进行上传处理。当平台判断差分包版本更改后,在接收到心跳包后第一时间下发给相对应的NB-IoT终端设备。终端设备会在发送心跳包后进入IDLE模式,等待数据下发,当收到版本更新通知后,立刻进入更新程序包准备工作。平台会在下一次心跳包到来时判断NB-IoT终端设备主动发送分片升级包请求,请求到来后,升级包分片发送,直到最后心跳包全部发送完毕。
3 NB-IoT终端设备升级设计
本文设计的离散心跳升级法在NB-IoT终端设备中的应用,具体流程如图3所示,在心跳期间接收升级包,并将升级包存入相应的地址空间中。NB-IoT终端设备通过初始化完成后立即进入NB模组入网配置环节,配置入网后会进行休眠模式,并开始计时准备下一次心跳发送数据。当一次心跳收到新版本更新信息时,进入软件更新心跳包模式,每次心跳后发送接收升级分包片请求,接收完后立即休眠计数,等待下一次心跳继续接收升级包直至升级包下载完成。在升级完成后,再次发送确认信息给物联网平台,进入正常心跳模式。
NB-IoT设备终端MCU中包含两部分程序,首先要划分好两部分程序的存储位置和空间,可以保证两部分程序独立运行,不会相互影响。
MCU程序FLASH地址划分区间如图4所示。除复位向量中断以外,其他中断全部映射到用户程序当中,也就是说引导程序中无法使用中断向量的方式来处理中断。
NB模组是通过串口和MCU进行相关交互的,引导程序中无法使用相关中断向量来处理中断,所以在引导程序中是通过循环检测的形式来检测相关中断标志,并进行相关数据接收处理机制。其中,NB模组在引导程序中进行相关配置后,在跳转到用户程序时无需再进行相关配置,但是务必注意要保持NB模组的复位脚一直处于一种电平状态(和引导程序中设定的引脚电平一致)。根据不同厂家的MCU进行不同链文件修改,具体方法本文不再赘述。
4 试验验证与评估
搭建STM32F103和NB86-G为硬件平台,对本文设计的低功耗SOTA方法进行试验验证,同时验证本文SOTA方法的消耗功耗以及升级成功率。
试验设置如下:更改控制灯光闪烁,并添加采集温度信息、数据上传或下载失败红灯闪烁灯功能。为了保证产品的一致性,更改个别指示灯参数,让其闪烁次数不同,升级差分包字节为10 KB。为保证通信可靠性,每次分片大小限制在256 B,且基站信号持续稳定。
试验结果见表1所列。试验期间使用全新电池供电,为了能够实现快速升级,试验设置的心跳速度为30 min/次。表1中功耗为该试验组所有次数消耗能量的总和。
通过表1实验对比可以发现,NB-IoT终端设备利用传统SOTA方法在升级过程中功耗消耗剧烈,且若长期处于升级状态,对电池的供电能力考验很大。第三组实验测试过程中,发现由于设备长期处于大电流工作模式,导致电池电压被拉低,从而导致设备重启,最终造成设备升级失败。
如图5所示,硬件平台休眠待机电流小于10 μA。传统升级方法每次升级过程中,工作电流会持续在60 mA左右,且还有更高的脉冲电流存在,每次接收升级包的时间为2 min。
5 结 语
本文在SOTA的升级策略上进行优化处理,升级策略与传统的持续发送数据方法不同,采用离散型心跳升级法,不仅能够缓解基站信道通信压力,也能够降低产品持续通信产生的功耗问题。通过上述实验数据表明,传统的持续升级方法在实际应用过程中存在不足,而采用本文的离散心跳升级法,能够避免基站信号通道堵塞,增加升级成功率,降低产品SOTA带来的功耗损失,从而延迟了产品在实际工程中的使用寿命。
参考文献
[1]华为技术有限公司.设备接入用户指南[DB/OL].[2020-05-27]. https://support.huaweicloud.com/usermanual-iothub/iot_01_0047.html.
[2]曲井致.NB-IoT低速率窄帶物联网通信技术现状及发展趋势[J].科技创新与应用,2016(31):115.
[3]魏民,王艺.物联网云平台终端远程更新技术研究与应用[J].电信科学,2018(10):137.
[4]陈成,王宜怀,钱涵佳,等.基于NB-IoT的嵌入式远程软件更新系统设计[J].微电子学与计算机,2019,36(4):12-16.
[5]曾云光.NB-IoT网络技术特点及网络部署简论[J].中国新通信,2016,18(21):15-16.
[6]吴为.基于消息中间件的微服务系统设计与应用实现[D].成都:电子科技大学,2019.
[7]卞广阔.高性能低功耗分布式存储系统关键技术研究[D].北京:北京邮电大学,2019.
[8]姚引娣,王磊,海小娟,等.基于农业物联网的低功耗智能温室监控系统[J].西安邮电大学学报,2019(2):78-83.
[9]王文庆,王毓晨,亢红波.基于NB-IoT的智能水表采集器设计[J].现代电子技术,2019,42(22):39-43.
[10]鲍春,谢涛,杨飞,等.基于NB-IoT的污水管道气体远程监测装置设计[J].传感器与微系统,2019(8):99-102.