,2,2
信息融合
基于IAP的北斗终端程序远程升级技术的研究∗
韩兆渊1王晓东1,2黄国勇1,2
(1.昆明理工大学信息工程与自动化学院昆明650500)(2.云南省矿物管道输送工程技术研究中心昆明650500)
针对目前市场上的北斗终端程序现场升级与维护困难的问题,论文设计了一种基于IAP的北斗终端程序远程升级方案。该方案系统地研究了基于STM32的IAP关键技术,同时提出断点续传、TEA加密以及双链路的设计思想,从而实现北斗终端程序远程在线实时更新。测试表明,该方案解决了北斗终端需要硬件下载器进行现场升级程序的不便,并提高了北斗终端远程程序升级的安全性与纠错能力,对北斗终端的推广有一定的现实意义。
北斗车载终端;远程程序升级;断点继传;TEA加密;双链路
Class NumberTP391
随着我国北斗卫星导航系统(BDS)技术的发展与逐步完善,越来越多的民用车辆选择使用北斗技术实现监控、定位、导航等功能[1]。但是当北斗终端安装运行后,由于更新程序版本、修补漏洞等原因需要及时对终端程序进行升级维护。如果对北斗车载终端群组进行大规模统一现场现场升级,不仅会对终端用户带来极大不便,也会增加升级烧录程序的工作人员的工作量,从而阻碍北斗导航技术在车载导航领域的推广。因此设计能为北斗终端程序进行远程升级维护的方案显得十分的重要。
在嵌入式技术中,主流在线编程方式有:IAP(在应用中编程)和ISP(在系统中编程)。ISP技术指通过MCU(微控制单元)专用串行编程I/O端口对其内部的Flash存储器进行读/写操作,虽不使用硬件下载器对MCU进行烧录,但仍需返厂进行程序升级[2]。IAP技术是指从结构上将MCU内部Flash存储器映射为两个存储体单元,当运行其中一个存储体单元上的用户程序时,可对另一个存储体单元重新读/写,之后将控制指针从运行中的存储体单元转向重新读/写完毕的存储体。相比而言,针对北斗车载终端实际情况,运用ISP技术需要进行返厂进行升级维护,而IAP可通过专门设计的固件程序来编程内部存储器,不需要硬件支持,所以IAP技术提高了嵌入式系统的可扩展性与可维护性,更适用于北斗车载终端远程程序升级。
目前,嵌入式远程程序升级主要依靠GPRS进行数据传输,GPRS技术是一种得到广泛应用的低成本与低功耗的无线网络通信技术,具有经济、安全、可靠、24小时在线、覆盖面广等优点,但当北斗车载终端在进行远程升级的过程中突发网络不稳定或服务器端出现异常,都会增加北斗终端远程升级的不稳定性[3]。与此同时,人为截取传输数据进行干扰破坏也会降低远程传输机制的抗干扰性[4~5]。针对以上情况,本文提出了双链路、断点继传容错机制、TEA加密技术增加远程程序升级稳定性与安全性。
在应用中编程(In Application Programmin,IAP)指用户程序在运行的过程中,完成对User Flash部分的程序烧写,该技术的主要目的是为了产品在发布后通过预留出的通信口完成对产品的固件程序的升级[6]。在一般情况下,主控芯片STM32F10X在出厂的时候,就已经通过Jlink下载器将代码烧入到芯片中,当设备在使用的过程中需要对芯片中的代码进行更新或是更换等操作时,需要将芯片返厂同时将芯片拆解出重新通过J-Link下载器进行烧录新代码,这种操作流程会给使用者带来很大的不便,但通过IAP技术主要是将STM32芯片的代码区划分为两部分,两个部分各自存储程序,其中一个叫做bootloader(引导加载程序),另一个叫user application(用户应用程序)[7]。在芯片出厂时,bootloader就已经固定下来,当需要对user ap⁃plication进行更新操作时,只需通过bootloader对其进行擦写以及重新代码写入即可完成升级等任务,IAP方案如图1所示。
图1 IAP技术原理图
当程序完成初始化后,会进入bootloader,通过bootloade完成对触发条件的检测,主要包括按键是否被按下、U盘是否插入以及串口的数据收发,当被触发时,需要对user application进行擦除以及重新写入等相关操作完成用户代码以及新的用户代码的写入,如果没有检测到触发条件,则直接跳转到user application,完成相关操作[8]。
北斗终端远程升级的实现主要通过应用编程的方法完成远程北斗终端设备的更新,通过上位机(完成端口)与STM32嵌入式系统协调使用系统实现[9]。系统原理如图2所示。
图2 单链路远程北斗终端升级系统结构
在上述系统中,在系统原理图中服务器与北斗车载终端用户群以GPRS网络作为通讯方式,服务器端上标1,北斗车载终端用户群上标N,代表了服务器与终端一对多的关系。
上位机主要完成对需要升级的程序进行编译,将上位机产生的HEX数据帧通过GPRS网络发送到远程的北斗终端设备。接收设备主要指的是北斗终端,在终端通过接收装置完成GPRS传输的数据帧的接收,同时对接收数据帧进行校验,通过RAM缓存器完成数据的缓存,当数据的接收完成后,通过对IAP启动,完成对非当前程序运行空间进行编程以及擦除等操作,完成系统程序的升级[10]。实现IAP的远程操作,本系统将GPRS信号作为无线媒介。
同时在系统中增加了双链路的设计思想,在目前的IAP终端远程升级设计中主机设备通常只设计了简单的单链路发送如图2所示,采用此设计的不足在于,当服务器出现故障时,会直接对GPRS传输的数据帧造成影响,影响到终端设备的升级过程,甚至导致中断现象发生[12]。为了避免上述故障的发生,针对单核心主机设备不足本系统采用了双链路设计思想如图3所示。
在双链路设计方案中,当服务器1发生故障时,服务器2开始工作,保证数据帧的正常传输,这就是系统采用双链路的设计思想,同时结合以前的设计经验,完成了主机的双链路设计结构。
图3 双链路的远程北斗终端升级系统结构
3.1硬件平台的设计
北斗终端设备通过GPRS实现无线IAP,首先,需要一套完整的硬件设备,主要包括STM32最小系统、GPRS外围接收电路采用了双频900/1800MHZ的GTM900C模块完成硬件系统的接收电路的设计。其硬件配置电路如图4所示。
图4 硬件结构电路
当无线模块GTM900C接收到上位机发送过来的数据帧时,通过串口完成对接收到的数据帧的解析,同时完成将系统需要更新升级的代码缓存到硬件系统的RAM中。
3.2程序的TEA加密解密设计
当主机设备通过GPRS网络向从机设备发送数据帧时,数据在传输的过程中,数据的安全会受到各方面因素的干扰,如数据的截取、中断、篡改等。针对上述问题,通过数据加密技术能为数据安全提供很好的解决办法。目前,数据加密解密的方法有很多,在计算机中数据的加密算法主要分为加密与非对称加密算法两种。对于加密算法,其加密与解密是相同的,比如常用的DES算法,在非对称加密算法中,其加密密钥与解密密钥是不同的,比如RSA算法。但是在计算能力比较差的嵌入式系统中,需要满足算法易实现还需要满足足够的码长,通常采用对称加密算法。本文在数据传输过程中主要采用TEA加密方法,其优点在于不仅是软件还是硬件都易实现,能够实现密文很难被破解,同时还能满足数据传输速度以及数据码长的要求。
TEA的在STM32系统中的C语言编码描述过程如下:void Encrypt(unsigned char*buf,unsigned int len,char* key){
//定义加密函数Encrypt,参数为8字节的明文输入和16字节的密钥,输出8字节密文
unsigned int p,q,n=len/4;
unsigned long*v=(unsigned long*)buf;
unsigned long*k=(unsigned long*)key;
unsigned long z=v[n-1],y=v[0],sum=0,e;
q=6+52/n;
//**明文输入被分为左右两部分,密钥分为四部分存入寄存器,q表示加密轮数32。DELTA为一常数。这里DELTA把它定义为δ=「(√5-1)231」(也就是程序中的0× 9E3779B9)**//
while(q-->0){
sum+=DELTA;
e=(sum>>2)&3;
for(p=0;p<n-1;p++){y=v[p+1];z=v[p]+=MX;
}
y=v[0];z=v[n-1]+=MX;
}
}
加密过程中使用异或运算加法运算提供了明文的非线性特性,通过16轮以上的循环就能使数据或密钥的单个比特变化扩展到接近32比特。使明文具有很强的抗差分攻击能力,128比特密钥长度可以抗击穷举搜索攻击,该算法设计者推荐算法迭代次数为32轮。
解码过程实现如下:
void Decrypt(volatile unsigned char*buf,unsigned intlen,char*key){
//定义解码函数Decrypt,参数为8字节的明文输入和16字节的密钥,输出8字节密文
unsignedintp,q,n=len/4;
unsigned long*v=(unsigned long*)buf;
unsigned long*k=(unsigned long*)key;
unsigned long z=v[n-1],y=v[0],sum=0,e;
q=6+52/n;
sum=q*DELTA;
while(sum!=0){
e=(sum>>2)&3;
for(p=n-1;p>0;p--){
z=v[p-1];y=v[p]-=MX;
}
z=v[n-1];y=v[0]-=MX;sum-=DELTA;
}
}
解密只需要知道密文的情况下,采用逆运算即可解析出加密中的明文。
3.3断点续传的设计
在对系统进行系统升级的过程中,可能存在设备突然掉电、受到其他强信号的干扰或是不在GPRS覆盖范围内等引起设备的升级中断的问题。当此故障发生后,系统的新版本的程序不能完成在Flash编程(读不通),因此新版本的程序无法在设备中运行。除此以外,当中断发生前,北斗终端设备已经完成了对升级任务的记录,系统会按照被记录的新程序再次启动设备时,由于之前的只被读入部分,所以系统设备根本无法启动,会造成死机现象的发生。因此在被系统设计的过程中加入了断点续升级的功能。其主要功能如下:
1)当系统接收到升级请求之后,系统先不作出对标志区进行更新处理,先是完成升级任务,当任务完成后,再对标志区进行修改。这样做的目的就是为了避免当任务升级失败后,系统运行新版本的程序指令。
2)在运行标志外,完成升级标志区的设立,完成对系统的状态态以及目前的升级程序位置。
3)当系统升级时发生中断,当系统再次上点后,先完成对标志区信息的查询,查询后,当发现系统未完成升级任务时,此时的标志区显示的仍然是老版本程序的首地址,设备会跳到升级的程序,同时会将新的程序序号发送给主机,当主机设备接收到时,会重新将未完成的数据帧重新发送给北斗终端设备,完成未发送完的设备,直等到系统升级完成。
4)当从机设备完成升级任务后,丛集将会完成对标志区相关信息的修改,同时完成对新任务的执行,避免升级中断给系统带来死机的危害。同时节省了数据的传输时间及传输速率。如图5为断点传输的流程图。
图5 断点传输流程图
表1所示为系统服务器的重要字段的配置表。
表1 服务器重要字段配置表
当执行升级的流程,完成程序的拷贝、客户端的登录、获取本地IP等操作,当点击确定升级后,升级成功后的界面如图6所示。
图6 系统升级成功界面
通过本方案完成对现有的北斗终端进行软件升级,本版本的程序大小为2764.8KB,通过上位机服务器完成对北斗终端的程序进行升级,本硬件系统的串口的传输速率的大小可达到115200(缺少单位)。通过本方案完成远程北斗终端的程序升级,总共进行了二十次试验,均成功,平均每次升级的时间大约在10分钟左右。同时,还模拟了升级过程中传输中断,比如当目标在传输过程中进入了没有GPRS覆盖的隧道、森林等。由于在设计系统软件时,增加了断点续传的功能,所以如果碰到网络故障时,网络恢复后可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。用户可以节省时间,提高速度。通过实验结果可证明改该案涉及的系统安全可靠,能够迅速的完成远程目标的升级,同时也具备中断续升级的功能。图7为升级整体程序流程图。
图7 升级整体程序流程图
本文提出基于GPRS的无线IAP远程升级北斗终端的技术,采用STM32F103ZE芯片作为微控器,并加入了断点续传、TEA加密解密以及双链路技术。本文系统地提出了无线IAP远程升级技术方案,同时完成IAP升级的整体流程,以及软件方案的设计,通过升级以及通过GPRS完成无线接口的优化。本方案可以不需要改变现场通信方式的情况下,可远程完成北斗终端的升级,不仅能够提高系统的可扩展性以及可维护性,并且能够降低大量的人力及成本。通过本方案设计的硬件,经过实验等结果验证了本系统的可行性以及系统的可靠性,同时系统的传输数据速度以及传输距离大大的得到改善,具有很好的市场应用价值。
[1]卢海涛,侯彤璞,李健.基于GPS和GPRS的嵌入式汽车定位系统车载终端的开发[J].计算机与数字工程,2010,06:82-85.
LU Haitao,HOU Tongpu,LI Jian.Embedded Automobile Positioning System Terminal Development Based on GPS and GPRS[J].Computer&Digital Engineering,2010,06:82-85.
[2]Alexander Schader.Embedded processing demands of in-car multimedia.Technical feature.Auto Electronics, 2007,07:43-48.
[3]徐洋,马跃.STM32F103系列微控制器在应用编程技术研究[J].单片机与嵌入式系统应用,2013,08:35-40.
XU Yang,MA Yue.IAP in STM32F103 Series MCU[J]. Microcontrollers&Embedded Systems,2013,08:35-40.
[4]王晓兰,任晓芳.基于GPRS的远程监控系统集中器的设计[J].微计算机信息,2007,29:30-32.
WANG Xiaolan,RENG Xiaofang.The design of concentra⁃tor in the remote distance moinitor system based on GPRS[J].Microcomputer Information,2007,29:30-32.
[5]王璐.基于GPRS技术的远程数据传输系统的研究[D].济南:山东大学,2008.
WANG Lu.Research of Remote Data Commmunication System Based on GPRS Technology[D].Jinan:Shandong University,2008.
[6]邱丽芳.基于以太网的远程升级嵌入式系统的设计[J].现代电子技术,2006,23:101-106.
QIU Lifang.Design of Remote Upgraded Embedded Sys⁃tem Based on Ethernet[J].Modern Electronics Tech⁃nique,2006,23:101-106.
[7]梅亮,林辉.TMS320F2812代码在线升级的研究与设计[J].电气传动,2006,07:62-64.
MEI Liang,LIN Hui.Design for TMS320F2812's Code Up⁃date Online[J].Electric Drive,2006,07:62-64.
[8]刘贇,左小川.嵌入式软件在线升级系统的设计与实现[J].计算机测量与控制,2015,04:1425-1427.
LIU Yun,ZUO Xiaochuan.Design and Implementation of Online Software Upadting for Embedded System[J].Com⁃puter Measurement&Control,2015,04:1425-1427.
[9]徐遥令,罗大庸,张航.基于GIS的多点嵌入式系统远程在线升级[J].计算机测量与控制,2006,03:383-385.
XU Yaoling,LUO Dayong,ZHANG Hang.Remote Online Upgrade of Multi-Point Embedded System Based on GIS[J].ComputerMeasurement&Control,2006,03:383-385.
[10]李刚,周毅波,卿柏元.智能电力设备在线远程软件升级新方法[J].自动化与仪表,2010,02:50-60.
LI Gang,ZHOU Yibo,QING Baiyuan.New Method of Program Remote On-line Updating for Intelligent Electri⁃cal Power Equipments[J].Automation&Instrumenta⁃tion,2010,02:50-60.
[11]马玉春,汪文彬,李应勇.基于TCP客户机的计算机监控系统测试软件的设计[J].软件,2014,05:1-3.
MA Yuchun,WANG Wenbin,LI Ying-yong.Testing Software on Computer Monitor System Based on TCP Cli⁃ent[J].Software,2014,05:1-3.
Remote Upgrade Technology of Beidou Terminal Based on IAP
HAN Zhaoyuan1WANG Xiaodong1,2HUANG Guoyong1,2
(1.Faculty of Information Engineering and Automation,Kunming University of Science and Technology,Kunming650500)(2.Engineering Research Center for Mineral Pipeline Transportation YN,Kunming650500)
Aiming at the problem that it is difficult to field upgrade and maintain the Beidou terminal program in the current market,the thesis designs a remote upgrade scheme of Beidou terminal program on the basis of IAP.In the design,it systematically studies STM32 programme on account of the key technology of Internet access provider(IAP)and also puts forward the design con⁃cepts of breakpoint resume,TEA encryption and decryption and dual-link,which achieves the function of remote online real-time update of Beidou terminal program and greatly improves the stability in the process of transmission.Test shows that this scheme over⁃comes the shortcoming of Beidou terminal that hardware downloader is required to field upgrade the program and increases the stabil⁃ity of Beidou terminal program in the process of remote upgrade,which has practical significance for popularizing Beidou terminal.
Beidou terminal program,remote program update,breakpoint resume,TEA encryption,dual-link
TP391
10.3969/j.issn.1672-9722.2017.05.012
2016年11月10日,
2016年12月20日
国家自然科学基金(编号:51169007);云南省科技计划项目(编号:2013DH034)资助。
韩兆渊,男,硕士研究生,研究方向:嵌入式系统。王晓东,男,教授,博士生导师,研究方向:多源信息融合技术。黄国勇,男,教授,博士生导师,研究方向:多智能交通事件检测技术。