APP下载

嵌入式设备的增量式远程更新系统设计

2020-12-07黄志贤王宜怀程宏玉

现代电子技术 2020年22期
关键词:系统设计

黄志贤 王宜怀 程宏玉

摘  要: 针对传统嵌入式设备更新方式过程繁琐、成本昂贵的缺点,设计一种增量式的远程更新系统,采用NB?IoT进行远程通信。在硬件设计中,将FLASH进行分区,设计BIOS分区并在其中固化常用驱动以减少重复代码量,并实现分区后中断服务例程的继承与可动态更新;在软件设计中,引入文本比较算法Needleman/Wunsch来建立增量更新数据帧以减少代码传输量,并设计适用于该文所设计系统的传输帧格式。最后进行系统的稳定性和通信开销测试,测试结果表明,该文系统大大减少了代码传输量、节省了网络开销,兼具稳定性与可靠性。

关键词: 远程更新; 系统设计; 嵌入式设备; 动态更新; 代码传输; 系统测试

中图分类号: TN791?34                            文献标识码: A                       文章编号: 1004?373X(2020)22?0157?04

Abstract: In allusion to the shortcomings of traditional embedded device update mode, such as cumbersome process and high cost, an incremental remote update system is designed, in which the NB?IoT is used to perform the remote communication. In the hardware design, the Flash is partitioned, the BIOS partition is designed, the common drivers are hardened in it to reduce the quantity of duplicated codes, and the inheritance and dynamic update of the interrupt service routine after partitioning are realized. In the software design, the text comparison algorithm Needleman/Wunsch is introduced to establish incremental update data frames to reduce the amount of code transmission, and the transmission frame format suitable for the system designed in this paper is designed. The stability and the communication overhead of the system are tested. The testing results show that the system can greatly reduce the amount of code transmission, save network overhead, and has both stability and reliability.

Keywords: remote update; system design; embedded device; dynamic update; code transmission; system testing

0  引  言

传统的单片机设备更新通常是由维护人员到达设备现场进行重新烧写或更换存储部件,当设备数量庞大、范围分布广泛时,传统方式将耗费大量人力物力成本。随着物联网技术和单片机技术的发展,NB?IoT,GPRS和4G等远程通信技术在单片机设备中被广泛运用,越来越低廉的通信费用与充裕的片内存储空间为单片机设备实现远程更新提供了成熟的条件。NB?IoT技术是3GPP标准定义的一种低功耗广域网解决方案[1],具有大连接、深覆盖、低成本、低功耗等特点,能适应环境恶劣的设备现场[2],非常适用于嵌入式设备的远程更新。

本文设计并实现一套基于NB?IoT的增量式远程更新系统,选择S32K144微控制器与ME3616通信模组作为硬件实现平台,在云服务器上运行更新软件。在硬件软件设计中吸取Bootloader机制的优点,并对存储器分区进行合理规划以适应增量更新;更新软件对硬件机器码文件进行解析,通过文本比较算法Needleman/Wunsch获得无须重复更新的机器码,以传址的方式代替代码传输来减少通信开销。

1  系统总体介绍

远程更新系统由NB终端、传输中介与服务端组成,系统的总体模型如圖1所示。NB?IoT远程更新系统主要涉及终端与服务器端的软硬件实现,传输中介则由通信运营商来负责实现与维护。NB?IoT终端依次完成基站连接、核心网附着和服务器连接后,与服务端的更新软件建立数据交互并等待更新指示。系统的更新流程为:更新软件对操作人员上传的程序机器码文件进行解析,提取有效更新数据并组成传输代码的数据帧和传输偏移地址的复制帧;组帧完成后,服务端发送更新指令,系统进入更新状态;终端根据代码和偏移量信息修改待更新代码区,并在帧校验结束后,将待更新代码覆盖至用户代码段;最后终端复位并运行新程序,系统更新结束。

针对增量以及部分增量更新方案建立5种通信帧格式,通过命令帧与数据帧的交互来指导更新过程和交换数据。帧类型包括握手帧、命令帧、复制帧、数据帧以及校验帧,在每种帧格式中加入循环冗余校验(CRC)来确保传输数据的可靠性,并通过重传机制来确保数据的完整性。

1) 握手帧:命令字01。上位机通过握手帧向终端发送本次更新的基本信息,包括更新的代码起始地址、代码长度、欲发送的数据帧总数以及校验码,帧格式如表4所示。每种帧格式都具有帧头、命令字、帧尾和校验码,后面介绍将不再列举。

2) 命令帧:命令字02。更新软件用于指示终端切换更新状态。命令帧包含指令字(2 B,后面介绍省略单位B)。命令帧指令有开始指令01、校验指令02和结束指令03,更新软件发送开始命令指示终端进入数据接收状态,发送校验命令指示终端返回校验帧,发送结束命令完成数据传输。

3) 复制帧:命令字03。复制帧指示终端复制源起址代码段到目标起址。复制帧包含源地址(4)+代码长度(2)+目标地址(4)+当前帧号(2)+总帧数(2)。

4) 数据帧:命令字04。数据帧指示终端按数据帧中的更新起址在FLASH中插入数据区代码段。数据帧包含更新起址(4)+代码长度(2)+数据区(N)+当前帧号(2)+总帧数(2)。数据区长度N=代码长度。

5) 校验帧:命令字05。校验帧包含更新总帧数(2)+位示图(M),位示图长度M= [(总帧数-1)8+1],在更新软件发送校验命令后,终端返回校验帧。位示图的每一位表示一帧复制帧/数据帧的发送情况,0表示成功,1表示失败。更新软件根据位示图内容重传接收失败的复制帧/数据帧。

典型更新帧的使用场景如下:操作人员在更新软件中导入新旧机器码文件,软件生成各类帧格式,按照握手帧[→]命令帧(开始)[→]复制帧[→]数据帧[→]命令帧(检验)[→]命令帧(结束)的顺序组成发送序列。终端在收到命令帧(校验)后返回校验帧,更新软件根据缺失帧信息进行重传,并重新发送校验帧,循环直到全部缺失帧传送完毕,更新软件发送命令帧(结束)结束发送。

4.3  程序跳转

在数据发送完毕且代码覆盖完成后,终端会执行软件复位。复位后BIOS程序会重置主堆栈指针MSP去指向用户程序RAM起址,并向用户程序FLASH首地址跳转去执行用户程序。

5  系统测试

在供电正常、eSIM卡不欠费、NB?IoT基站信号良好情况下进行本文系统的稳定性以及通信的网络开销测试,通过自动测试软件对多种更新代码长度情况及用户代码通信频率情况进行更新测试。为了模拟物联网设备的实际使用过程,设置终端5 s/次,60 s/次以及1 800 s/次的间隔对外发送远程数据。当终端成功发生改变现象时,本次测试即可成功。测试结果如表5所示。测试结果表明:通信频率与网络传输量越小,更新时间就越短,成功率也越高;增量式更新方案能有效降低传输所需的網络开销,程序更新量取决于程序变动量,对于同一项目的最邻近版本而言,增量更新优势显著。

6  结  语

本文设计一种基于NB?IoT的增量式远程软件更新系统。在终端设计中,对FLASH进行划分,通过在BIOS区固化驱动,减少代码更新量;通过RAM划分实现用户程序对BIOS重要中断服务例程的继承。在更新软件设计中,采用Needleman/Wunsch算法获得增量更新序列,减少代码传输量;通过重传机制实现传输的可靠性。与已有的几种远程更新系统相比,本文系统具有良好的稳定性、可靠性以及实时性,并在节约通信开销方面具有显著优势。

参考文献

[1] 曲井致.NB?IoT低速率窄带物联网通信技术现状及发展趋势[J].科技创新与应用,2016(31):115.

[2] WANG Y P E, LIN X, ADHIKARY A, et al. A primer on 3GPP narrowband Internet of Things [J]. IEEE communications magazine, 2017, 55(3): 117?123.

[3] 姚文祥.ARM Cortex?M3与Cortex?M4权威指南[M].3版.北京:清华大学出版社,2015.

[4] 佚名.ME3616模块硬件用户指导手册_V1.8[DB/OL].[2018?12?29].http://www.gosuncnwelink.com/cn/.ME3616.

[5] 陈瑞杰,王宜怀,李会.一种无线代码可靠更新系统的研究与设计[J].现代电子技术,2016,39(4):12?16.

[6] 陈成,王宜怀,钱涵佳,等.基于NB?IoT的嵌入式远程软件更新系统设计[J].微电子学与计算机,2019,36(4):18?22.

[7] 陈发堂,郭丽强.ARM+DSP嵌入式系统BootLoader在LTE中的实现[J].电子技术应用,2013,39(5):25?28.

[8] 汪春华,白稳峰,刘胤博,等.基于CAN总线UDS服务BootLoader应用开发[J].电子测量技术,2017,40(2):166?170.

[9] 王宜怀,朱仕浪,郭芸.嵌入式技术基础与实践[M].4版.北京:清华大学出版社,2017.

[10] 姜鲜桃.双序列比对Needleman?Wunsch算法研究[D].呼和浩特:内蒙古农业大学,2017.

猜你喜欢

系统设计
基于FCR的城市地下供水管网应急处置系统设计
基于移动互联技术的通用评价系统的设计
基于UML技术的高校贫困生管理系统建模分析
一种基于SATA硬盘阵列的数据存储与控制系统设计研究
目标特性测量雷达平台建设构想
信息管理服务平台项目应用系统设计探析
基于工程应用能力培养的智能终端课程改革与实践