发明内容
本发明实施方式主要针对传统的嵌入式软件升级过程中出现异常或错误时,导致整个嵌入式系统无法继续使用的技术问题,提供一种嵌入式系统的升级方法和装置。
为解决上述技术问题,本发明实施方式采用的一个技术方案是:提供一种嵌入式系统升级的方法,所述嵌入式系统的当前及待升级系统程序分别存储在两个系统存储区域,所述方法包括以下步骤:
根据预设启动代码和预设选择标志确定当前系统程序存储的第一系统存储区域;
将待升级系统程序复制到第二系统存储区域;
对待升级系统程序进行校验;
当校验成功时,修改所述预设选择标志;
响应系统重启指示,根据所述预设启动代码和修改后的所述预设选择标志执行所述第二存储区域的待升级系统程序。
其中,所述嵌入式系统的预设启动代码存储在启动代码存储区域。
其中,在根据预设启动代码和预设选择标志确定当前系统程序存储的第一系统存储区域的步骤之前,所述方法还包括步骤:响应触发的系统启动指示,将预设启动代码加载至所述启动代码存储区域。
其中,所述嵌入式系统的预设选择标志存储在标志存储区域。
为解决上述技术问题,本发明实施方式采用的另一个技术方案是:提供一种嵌入式系统升级的装置,所述嵌入式系统的当前及待升级系统程序分别存储在两个系统存储区域;所述装置包括:
确定模块,用于根据预设启动代码和预设选择标志确定当前系统程序存储的第一系统存储区域;
复制模块,用于将待升级系统程序复制到第二系统存储区域;
校验模块,用于对待升级系统程序进行校验;
修改模块,用于当校验成功时,修改所述预设选择标志;
重启模块,用于响应系统重启指示,根据所述预设启动代码和修改后的所述预设选择标志执行所述第二存储区域的待升级系统程序。
其中,所述嵌入式系统的预设启动代码存储在启动代码存储区域。
其中,所述装置还包括:
加载模块,用于响应触发的系统启动指示,将预设启动代码加载至所述启动代码存储区域。
其中,所述嵌入式系统的预设选择标志存储在标志存储区域。
为解决上述技术问题,本发明实施方式采用的另一个技术方案是:提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述所述的方法。
本发明提供的一种嵌入式系统的升级方法和装置,实现在升级过程中出现异常或错误,仍然有第一系统存储区域中的当前系统程序供嵌入式系统执行,避免嵌入式系统无法继续使用。另外,相比现有技术中复制两份待升级程序进行存储的方式,运用所述嵌入式系统升级的方法和装置,在升级过程中只需复制一次待升级系统程序,既节省了时间又避免冗余。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
请参阅附图1,本发明实施例提供了一种嵌入式系统升级的方法,该方法可应用于嵌入式设备中,实现对嵌入式系统的系统程序进行升级。嵌入式设备中设有可读取和写入数据的RAM存储器,例如,Flash存储器。参阅附图2,RAM存储器中包括启动代码存储区域21以及两个系统存储区域(即第一系统存储区域22和第二系统存储区域23),嵌入式系统的预设启动代码存储在启动代码存储区域21,嵌入式系统的当前系统程序以及待升级系统程序分别存储在两个系统存储区域,基于此,当嵌入式系统执行其中一个系统存储区域内的前系统程序时,待升级系统程序可以被复制到另一个系统存储区域内。
需要说明的是,第一系统存储区域22和第二系统存储区域23中的 “第一”和“第二”仅仅是为了在下文中便于表述和引用两个系统存储区域,实际上,两个系统存储区域可以具有相同的存储空间大小,也可以具有不同的存储空间大小。两个系统存储区域可以相邻地分布在RAM存储器中,也可以间隔地分布在RAM存储器中,只要两个系统存储区域均满足被预设启动代码通过寻址机制访问到即可。
所述方法包括:步骤S101、步骤S102、步骤S103、步骤S104、步骤S105和步骤S106,详细说明如下:
S101,响应触发的系统启动指示,将预设启动代码加载至启动代码存储区域。
在本发明实施例中,可以通过嵌入式系统上电来实现系统启动指示的触发,嵌入式系统通过引导程序(Bootloader)实现将预设启动代码加载至启动代码存储区域21。例如,嵌入式系统启动之前,预设启动代码通常存储在ROM存储器中,嵌入式系统上电后,引导程序将存储在ROM存储器中的预设启动代码加载至RAM存储器的启动代码存储区域21。需要说明的是,在其他实施例中,启动代码存储区域21也可以存储在嵌入式设备中与RAM存储器连接的其他存储器中。
S102,根据预设启动代码和预设选择标志确定当前系统程序存储的第一系统存储区域。
当前系统程序是指嵌入式系统正在执行的系统程序。预设启动代码访问预设选择标志,并能够依据预设选择标志的状态来确定当前系统程序存储的第一系统存储区域22。在本发明实施例中,RAM存储器中还包括标志存储区域24,预设选择标志存储在标志存储区域24。在其他实施例中,基于系统程序在升级和执行过程中预设选择标志不会丢失的前提下,预设选择标志可以存储在启动代码存储区域21,还可以存储在嵌入式设备中与RAM存储器连接的其他存储器中,当然,预设选择标志必须能够被预设启动代码访问到。
以附图2中所示第一系统存储区域22内存储有正在被嵌入式系统执行的“系统程序版本1.1”的当前系统程序、第二系统存储区域23内存储有“系统程序版本1.0”的旧版本系统程序为例,可以理解的是,第二系统存储区域23内也可以未存储有系统程序。
S103,将待升级系统程序复制到第二系统存储区域。
在本发明实施例中,旧版本系统程序、当前系统程序以及待升级系统程序中都包含了完整的升级控制程序,该升级控制程序用于控制诸如数据传输、校验、修改预设选择标志、重启系统等整个升级过程,如此,不需要专用的升级控制程序来控制数据传输、校验、修改预设选择标志、重启系统等升级过程。具体在步骤S103中,当前系统程序的升级控制程序将待升级系统程序复制到第二系统存储区域23。
由于第一系统存储区域22内存储有被嵌入式系统正在执行的当前系统程序,为了区别于现有技术中将待升级系统程序直接覆盖当前系统程序,在本发明实施例中,以附图3中所示“系统程序版本1.2”的待升级系统程序为例,将待升级系统程序复制到第二系统存储区域23。在第二系统存储区域23内存储有“系统程序版本1.0” 的旧版本系统程序时,“系统程序版本1.2”的待升级系统程序覆盖了“系统程序版本1.0” 的旧版本系统程序。
S104,对待升级系统程序进行校验。
在本发明实施例中,当前系统程序的升级控制程序对待升级系统程序进行校验,能够有效地保证待升级系统程序的完整性和正确性,防止嵌入式系统重启后执行待升级系统程序出现错误。可以采用循环冗余检查(Cyclic Redundancy Check,CRC)、信息-摘要算法MD5等方法对待升级系统程序进行校验。
S105,当校验成功时,修改预设选择标志。
当校验成功时,当前系统程序的升级控制程序修改预设选择标志。在本发明实施例中,只要预设选择标志未被修改,在升级过程中出现诸如待升级系统程序不完整、校验失败、断线、断电等异常或错误时,嵌入式系统仍然可以继续执行存储在第一系统存储区域中的当前系统程序。在预设选择标志被修改之后,当前系统程序和待升级系统程序中的其中一个系统程序出现异常时,用户可以通过特殊操作强制预设启动代码选择当前系统程序和待升级系统程序中的另外一个系统程序。
S106,响应系统重启指示,根据预设启动代码和修改后的预设选择标志执行第二存储区域的待升级系统程序。
在本发明实施例中,当前系统程序的升级控制程序控制嵌入式系统进行重启,系统重启指示可以是当前系统程序的升级控制程序完成对预设选择标志进行修改后触发产生的。在嵌入式系统重启过程中,预设启动代码需要检测预设选择标志,如果检测到预设选择标志已被修改,嵌入式系统则会执行第二存储区域23的待升级系统程序。
本发明实施例提供的一种嵌入式系统升级的方法,根据预设启动代码和预设选择标志确定当前系统程序存储的第一系统存储区域22,并将待升级系统程序复制到第二系统存储区域23,再者对待升级系统程序进行校验,当校验成功时,修改预设选择标志,进而响应系统重启指示,最终根据预设启动代码和修改后的预设选择标志执行第二存储区域23的待升级系统程序,即使在升级过程中出现异常或错误,仍然有第一系统存储区域中的当前系统程序供嵌入式系统执行,避免嵌入式系统无法继续使用。另外,相比现有技术中复制两份待升级程序进行存储的方式,运用所述嵌入式系统升级的方法,在升级过程中只需复制一次待升级系统程序,既节省了时间又避免冗余。
请参阅附图4,本发明实施例提供了一种嵌入式系统升级的装置40,该装置40包括:确定模块42、复制模块43、校验模块44、修改模块45以及重启模块46。其中,
确定模块42用于根据预设启动代码和预设选择标志确定当前系统程序存储的第一系统存储区域。
复制模块43用于将待升级系统程序复制到第二系统存储区域。
校验模块44用于对待升级系统程序进行校验。
修改模块45用于当校验成功时,修改预设选择标志。
重启模块46用于响应系统重启指示,根据预设启动代码和修改后的预设选择标志执行第二存储区域的待升级系统程序。
上述嵌入式系统升级的装置40还可以包括加载模块41,该加载模块41用于响应触发的系统启动指示,将预设启动代码加载至启动代码存储区域。
本发明实施例中,对加载模块41、确定模块42、复制模块43、校验模块44、修改模块45以及重启模块46功能的详细介绍请参阅前述方法实施例的描述,在此不再赘述。
需要说明的是,以上附图4所示嵌入式系统升级的装置40的实施方式中,各功能模块的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能模块完成,即将嵌入式系统升级的装置40的内部结构划分呈不同的功能模块,以完成以上描述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成。
本发明实施例提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,可使得上述一个或多个处理器可执行上述任意方法实施例中的嵌入式系统升级的方法,例如,执行以上描述的图1中的方法步骤S101、步骤S102、步骤S103、步骤S104、步骤S105和步骤S106,实现图4中的加载模块41、确定模块42、复制模块43、校验模块44、修改模块45以及重启模块46的功能。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,计算机可读存储介质可包括易失性存储器或非易失性存储器,包括闪存存储器、随机存取存储器(RAM、SRAM、DRAM、RDRAM、DDR/DDR2/DDR3SDRAM等)、磁存储介质或光学存储介质(例如磁盘驱动器、磁带、CD、DVD)、或能够存储数据结构或代码的其他介质。需要指出的是,在所描述的实施例中,计算机可读存储介质不包括非法定的计算机可读存储介质,诸如传输信号。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。