控制/MCU
随着嵌入式操作系统技术的发展,在网络终端设备中有越来越广泛的应用。在实际使用中,为了扩展业务功能、解决软件中存在的问题和提升设备性能,或者为了满足设备的定制业务(如广告业务),需要对嵌入式设备的软件系统或者资源文件及时进行更新,就是软件系统的升级业务。目前,嵌入式设备软件更新有2种方式:一种是在本地使用PC机通过串口(或者网口)将软件下载到设备中完成软件系统的升级;另一种是利用网络进行在线升级。前者只能在本地进行软件升级操作,不能够批量更新,适合于实验室调试使用,而后者能够对网络中在线终端进行批量升级,得到广泛的应用。实际上,软件在线升级已经成为网络终端设备的一项基本功能,软件在线升级的方案不同,升级过程的特点和安全性也不相同。
1 系统软件升级常用方案
网络终端设备的系统软件保存在FLASH中,系统启动时把系统软件加载到内存中运行,软件升级的本质是从网络下载新的系统软件内容,把原来系统软件内容擦除,然后写入新的系统软件,系统重启后加载新的系统软件。常用的升级方案包括单系统升级方案和双系统升级方案:
(1)单系统升级方案(如图1所示):系统启动后进行正常的业务功能,此时网络后台检测终端版本号判断是否有新版本可升级,如果检测到当前终端的版本号低于最新版本号,则立即从网络下载升级包启动升级过程,在用户进行业务功能的过程中后台完成对于原系统软件的擦除,并写入新的系统软件和更新当前版本号。该升级过程对于用户是透明的,用户只有在终端重启后再加载新的系统软件。但是该升级方案的安全性比较弱,因为如果内容擦除后终端断电或者重启,则终端中系统软件被破坏,没有可用的系统软件,终端以后再不能正常启动,必须技术支持人员到现场完成软件修复升级。另外,如果新写入的系统软件因为网络传输或者其他原因存在错误时,也会上面的结果。这种升级方案存在较明显的安全性缺陷,现在已经较少使用。
该升级方案克服上单系统升级方案中安全性的缺陷,升级过程中如果出现终端异常断电或者重启,只有正常运行系统软件的被破坏,最小备份系统保持正常是升级功能,系统重启后继续从最小备份系统启动,完成系统升级功能。目前网络设备中常会使用该升级,但这种升级方案每次都需要重启系统,且用户需要停止业务进行系统软件的升级,整个升级过程用户只能等待,对于现在用户体验越来越重要的终端设备,该升级方案有较明显的易用性缺陷。
2 基于关键点控制的系统软件升级方案
基于关键点控制的升级方案是针对于上述双系统升级方案的优化和改进,通过业务分析和统计,为了修改增强业务功能或者修改BUG,终端升级的绝大部分场景是需要升级正常运行系统,如果能够实现在正常运行系统中能够升级自身,升级过程对用户透明,则能够解做到绝大部分升级过程用户不可见。同时由于基本运行系统也会存在BUG或者需要增强功能,也有需要升级基本运行系统的情况。
本方案通过在系统中设定关键点,在升级过程中通过关键点值控制升级的流程,保证系统软件升级安全性,同时做到升级过程对用户透明,而且除了能够升级正常运行系统外还可以升级基本运行系统(如基本运行系统中存在BUG需要修改时),增强了终端的灵活性,另外升级过程引入了XML格式的升级控制文件,有效的控制了网络版本的兼容性。关键点记录了当前系统软件的状态。根据当前系统软件状态的不同,软件升级的流程不同,在基本运行系统和正常运行系统中都包含下面的关键点,各个关键点的取值和代表含义如下:
(1)系统启动未验证(SSNV):系统升级完成后没有启动过,此时不能保证系统能够正常启动,不能保证系统能够运行业务功能,即没有验证系统的升级功能;正常运行系统处于SSNV状态时,不能在该正常运行系统下升级基本运行系统,否则可能会出现2个系统都不能正常启动的状态。同样基本运行系统处于SSNV状态时,不能在该基本运行系统中升级正常运行系统。
(2)系统升级未验证(SUNV):系统已经正常启动,业务功能正常运行,但没有验证系统的升级功能。如果正常运行系统的升级功能没有验证,则不能在该系统下升级基本运行系统,否则可能会造成基本运行系统被破坏,同时正常运行系统没有升级功能的情况,以后终端再也不具有在线升级的功能。同样基本运行系统处于SUNV状态时,不能在正常运行系统中直接升级正常运行系统本身,需要重启进入基本运行系统进行升级;
(3)系统升级已验证(SUV):系统除了业务功能正常外,升级功能已经验证过,能够进行正常的升级。该状态表明系统功能完全经过验证,如基本运行系统处于SUV状态,则在正常运行系统中可以自动升级自身,正常运行系统处于SUV状态时,可以在正常运行系统中升级基本运行系统。
升级方案的具体控制流程中包含了关键点控制和判断使用的时机,终端启动后判断从哪个系统启动,如果从正常运行系统启动成功,此时假设正常运行系统的关键点状态为SSNV状态,则设置为SUNV状态(如图3所示)。
STM32/STM8
意法半导体/ST/STM
全部0条评论
快来发表一下你的评论吧 !