嵌入式小基站版本升级与回退机制的设计与实现
2017-11-14周江平陈令周世军
周江平+陈令+周世军
【摘 要】为了解决嵌入式小基站频繁的软件版本升级带来的不稳定问题,通过研究嵌入式网络设备升级的方法,提出了网络升级和Web远程升级两种方式,如果软件升级过程中出现异常,可启动版本回退机制。实验结果表明,该设计提高了小基站设备软件升级的可靠性和稳定性,在嵌入式通信设备中具有较高的应用价值。
【关键词】嵌入式设备 网络升级 Web远程升级 回退机制
中图分类号:TN929.5 文献标志码:A 文章编号:1006-1010(2017)19-0060-05
Design and Implementation of Version Upgrade and Back-off Mechanism for Embedded Small Base Station
ZHOU Jiangping1, CHEN Ling2, ZHOU Shijun1
[Abstract] In order to deal with the instability of embedded small base station brought by the frequent software version upgrade, the upgrade method of embedded network device was investigated to propose two methods of network upgrade and Web remote upgrade. If the abnormity happens in the process of upgrade, the version back-off mechanism is supported. Experimental results demonstrate the proposed solution not only enhances the reliability and stability of software upgrade for small station device, but also has the high application value in the embedded communication device.
[Key words]embedded device network upgrade Web remote upgrade back-off mechanism
1 引言
LTE技术不断发展,小基站的应用越来越广泛。小基站(即Nano Cell)是为满足4G通信时代信号覆盖和用户分流需求而开发的移动数据终端接入系统,作为一款室内无线覆盖设备,它既要为宏基站提供信号补盲和增强服务,还要分担宏基站的用户负载以减轻其压力。随着小基站功能的不断完善,其增值业务越来越多,用户对新业务的需求越来越大,小基站设备新的软件版本应运而生。设备商为了满足客户的需求,需要不断对小基站设备进行软件版本升级。由于4G用户对低时延、高速率数据业务的要求较高,要求在嵌入式4G小基站软件升级过程中不能出现信号中断的情况,或者要求网络时延的时间极短[2]。传统的嵌入式设备大多通过近端进行升级,即通过USB串口线将主机与设备直连,进入串口后通过升级指令完成升级。但近端升级的方法有两大局限性:其一,小基站都是以广域网的组网方式进行覆盖,而近端升级要求需要在同一局域网内才能进行;其二,近端升级的方法需要大量的工程人员进行维护,会造成一定人力物力财力的浪费。
因此,介绍一种嵌入式设备FTP网络升级方式,设计通过增加简单文件头和对每一帧数据进行校验的升级方案[3]以及远程Web升级的典型场景方案,这些方案与传统软件升级的方式相比具有两大优势:1)在升级过程中可有效避免丢包,确保了文件传输的完整性和正确性;2)头文件的校验方式灵活可变,可根据用户的不同需求进行添加和删除,但该校验方式增加了头文件的字节开销,使得文件传输中存在一定时延。同时,在升级过程中支持版本回退的机制可确保小基站设备频繁进行软件升级的稳定性和可靠性。
2 软件版本升级的方案设计
嵌入式Linux小基站的软件部分包括Fmloader、Linux内核(kernel)、文件系统(rootfs)及应用程序。当小基站上电正常启动时,首先运行的一段代码是Fmloader[4],它被用来在Linux内核运行之前对硬件设备进行加载并初始化,使小基站的软硬件坏境处于就绪状态。当Fmloader完成对小基站硬件设备的初始化后,然后再跳转到操作系统用户的应用程序地址,启动Linux系统应用程序的运行,正常启动完成后进入用户的应用程序入口,最后启动其它各层应用程序。本课题研究的嵌入式Linux系统小基站是基于特定硬件平台实现的,由Fmloader系统引导程序不同于传统的Bootloader,无法进入命令行模式,不支持uboot的环境变量设置,但支持通过网络从FTP网络启动或Nand Flash[5]启动image,当基站上电启动时,加载完Fmloader程序后,若在串口输入n/o,会自动从FTP服务器加载临时系统,再进行网络升级;若上电不做任何操作,系统从Nand Flash正常启动,当Web进程启动完成,再进行Web远程升级。
2.1 网络升级流程设计
网络升级,即通过网络接口将小基站与电脑主机相连,启动FTP服务器,完成小基站设备软件升级。升级要求小基站配有网口,或可通过网络在后台服务器上发送升级指令完成升级。
FTP服务器的登录操作:首先进行服务器用户名和密码的验证,判断通过升級功能IP数据包里解析出的服务器的用户名和密码与真实启动的服务器的用户名与密码是否一致,根据配置会校验3次,如果3次校验都失败,退出此次升级,只有FTP服务器用户名和密码均正确,才能继续进行下一步。通过对FTP服务器的用户名和密码进行校验,增加了小基站设备远程升级功能的安全性和可靠性。endprint
基站上电后,系统启动时按n/o,并校验解析的FTP服务器IP地址、端口号以及pub路径下临时系统是否正确,如果不正确,则串口会打印连接FTP服务器失败消息,退出升级流程;如果正确,则开始与FTP服务器建立TCP连接[6],同时检测TCP的建立是否成功。若此网络连接没有建立成功,退出本次软件升级;若网络连接建立成功,则可建立起FTP服务器的命令控制通道,之后与FTP服务器的命令传输都是通过此通道进行。紧接着微基站的软件系统要加载pub文件夹下的uImage临时系统。软件网络升级的流程图如图1所示:
基站上电后,系统启动时按n/o进入网络启动模式,会从FTP服务器pub文件夹下自动加载uImage,进入临时系统,通过tftp将镜像文件上传到指定路径下,通过执行升级脚本./burn.sh fw_all,当出现刷写分区完成标志Done时,通过reboot重启系统,当系统正常启动后,通过命令cat/etc/fwversion可以查看软件版本,对比之前版本,若版本改变,则表示升级成功。
在小基站升级过程中,一般将小基站与PC通过网线直连,将FTP服务器IP设置为192.168.0.36,通过用户名和密码登陆,设置pub路径,重启基站按n/o从FTP服务器启动uImage,若成功进入临时系统,则如图2所示。若网络启动失败,串口则出现如下打印,如图3所示。
当网络启动失败时,首先检查IP设置是否正确或是否存在IP冲突,此FTP服务器IP固定为192.168.0.36。然后再确认FTP服务器加载路径是否正确,pub文件夹下是否存在uImage。如果FTP加载临时系统失败,则需重启系统,直到成功从FTP启动uImage,配置基站IP,使其和PC位于同一网段,然后通过tftp将应用软件flash上传到指定路径,再通过执行升级脚本,刷写分区完成后,重启系统,则升级成功,如图4所示。
升级成功后,查看软件版本,如图5所示:
2.2 Web远程升级软件流程设计
Web远程升级:通过嵌入式GoAhead Web服务器调用标准的CGI接口将应用程序的镜像文件传输到小基站设备的flash中,然后刷写镜像分区,重启系统完成升级。为了实现Web远程软件升级,需要研究GoAheadWeb服务器端GoForms标准的通用CGI网关接口的处理过程[7]。在GoAhead中,GoForms过程主要处理用户请求的各种指令消息,首先它会解释以“/goform”形式开始的URL,紧跟着“/goform”之后的字符串websFormDefine定义了表单名字和用户请求指令的处理方法,然后通过调用CGI应用接口程序处理从Web服务器传递来的各种请求指令消息,最后GoAhead主要利用动态asp过程获取系统信息,将输出结果返回给用户,然后动态显示在Web页面上。通过GoAhead Web服务器进行软件远程升级的流程如图6所示:
小基站软件远程升级流程:首先将编译好的应用程序打包成一个名为flash.img的镜像文件,然后在主机PC端,通过浏览器登陆IP地址访问小基站设备Web界面。在GoAhead Web服务器端,打开URL解析模块,可以解析HTTP协议,CGI应用程序始终在HTTP默认80端口等待客户端发起HTTP连接请求,当PC端向GoAhead Web Server发起一个HTTP连接请求,GoAhead Web服務器收到一个HTTP连接请求后,与客户端之间进行三次TCP连接建立,当三次握手连接建立成功后,会返回客户端一个HTTP响应,例如返回一个动态asp页面。根据客户端发起的应用请求,在服务器端会调用相应的CGI应用程序接口,实现不同的功能需求。进行Web远程升级时,在PC客户端发起版本升级请求,Web服务器端GoForms应用程序接口会调用websFormDefine函数把客户端的flash.img镜像文件传输到小基站设备的内存中,临时保存在根目录下的tmp文件夹,然后GoForms应用程序调用升级脚本burn.sh把传输过来的应用程序升级包的镜像文件解开,对镜像文件的魔数、文件长度进行检查校验,并按镜像文件定义的头部信息依次写入小基站设备的Nand Flash中,最后重启小基站设备即可启动新版本系统。
3 版本回退的流程设计
版本回退的设计思路是基于版本升级过程的优化,在设备升级过程中,难免会出现一些差错,一旦出现升级失败,便可以从备份flash启动。在设备上电后,首先下载镜像文件并解压缩,解析并与当前flash中版本对比,若软件版本匹配失败,则退出升级过程;若版本匹配成功,则将当前flash拷贝至备份flash中,覆盖备份flash里面的版本。将升级版本文件下载至主flash,并将版本激活,重启系统,从主flash启动。通过CPLD逻辑器件[8]设置启动超时定时器时间为10 s,同时设置启动标志位Flag,Flag为1表示从主flash启动,Flag为0表示从备份flash启动,若正常启动系统定时器超时或升级过程中出现失败,此时标志为Flag置为0,则切换到备份flash启动,更改主、备份flash设置并保存。版本回退的软件流程图如图7所示。
4 结束语
随着嵌入式通信设备增值业务需求的扩大,软件版本升级和版本回退成为不可或缺的重要功能。提出小基站设备软件版本升级以及回退机制,网络升级采用用户名和密码校验等加密模式[9],提高了用户权限管理系统的安全性,Web远程升级采用GoAhead Web服务器的标准CGI应用程序接口进行文件传输,响应速度快,可移植,适用于多种操作系统,使设备的工程维护方便、有效,提升了工作效率。在小基站设备软件版本升级过程中支持版本回退机制,提高了小基站软件升级的稳定性和可靠性[10],后期研究开发的重点将集中于在升级过程中增加断点重传的优化方案,提升升级效率。endprint
参考文献:
[1] 赵炯,贾培源,李中山,等. 嵌入式设备远程在线升级技术[J]. 计算机工程, 2010,36(12): 262-264.
[2] Antti Kennebunk. Non-Service Affecting Software Upgrades for Multi-Service Routers[C]//Design of Reliable Communication Networks. Naperville USA, 2005: 16-19.
[3] 黄健,陈荣征,李代平,等. 基于ARM嵌入式系统的Boot Loader启动分析与移植[J]. 现代计算机, 2007,25(7): 85-87.
[4] 严菊明. 基于ARM嵌入式系统的通用Bootloader的设计与实现[D]. 南京: 东南大学, 2007: 19-21.
[5] 马丰玺,杨斌,卫洪春. 非易失存储器NANDFlash及其在嵌入式系统中的应用[J]. 计算机技术与发展, 2007,17(1): 203-205.
[6] Ulrik Eklund, Jan Bosch. Architecture for Embedded Open Software Ecosystems[J]. Journal of Systems and Software, 2014,92(1): 128-142.
[7] 范海燕,宋加磊,管磊. 客戶端设备远程管理的方案及实现[J]. 信息技术, 2007,33(6): 137-140.
[8] 曹耀钦,慕晓冬,郭文普,等. 计算机网络技术及应用[M]. 北京: 机械工业出版社, 2005.
[9] Yang Cao, Chunhua Hu, Bozhi Ma, et al. Secure Method for Software Upgrades for Implantable Medical Devices[J]. Tsinghua Science & Technology, 2010,15(5): 517-525.
[10] 罗娟,曹阳,郑刚,等. 网络应用软件中高可用性的设计与实现[C]//通信软件技术学术年会论文集. 2003: 75-79.endprint