[0025] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0026] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0027] 请参阅图1,显示为本发明的一种嵌入式设备在一具体实施例中的模块示意图。所述嵌入式设备1包括状态机11和网管模块12。通常的嵌入式设备都是通过保存两份系统软件来实现,他们分别存放在两个不同的存储设备分区上,或者两片不同的物理存储设备。其系统架构和原理如图2和图3所示,例如图2,显示为现有技术中嵌入式设备的两份系统软件存放于同一存储设备中的示意图,其中所述系统软件1存储于当前激活分区,所述系统软件2存储于非激活分区,即通常所述的备份分区。且如图3所示,显示为现有技术中嵌入式设备的两份系统软件存放于不同的存储设备中的示意图,其中所述系统软件1存储于存储设备1(当前激活分区),所述系统软件2存储于存储设备2(非激活分区),即通常所说的备份分区。
[0028] 所述状态机11用以根据检测的激活分区的软件版本获得的激活分区版本标识符以及根据检测的非激活分区的软件版本获得的非激活分区版本标识符,确定其所处的状态。
[0029] 例如,激活分区版本标识符以及所述非激活分区版本标识符包括0和1两种状态,所述激活分区版本标识符为0时,标识所述激活分区的所述软件版本为正常版本,所述激活分区版本标示符为1时,标识所述激活分区的所述软件版本为新版本;当所述非激活分区版本标识符为0时,标识所述非激活分区的所述软件版本为正常版本,当所述非激活分区版本标识符为1时,标识所述非激活分区的所述软件版本为新版本,当所述非激活分区版本标识符为-1时,标识所述非激活分区的所述非激活分区不具有相关软件。
[0030] 且所述状态机11的状态至少包括以下状态中的一种或多种:
[0031] 1)当所述激活分区版本标识符为0且所述非激活分区版本标识符为0时,所述状态机11处于正常状态;
[0032] 2)当所述激活分区版本标识符为0,且所述非激活分区版本标识符为1时,所述状态机11处于需复位状态;
[0033] 3)当所述激活分区版本标识符为1,且所述非激活分区版本标识符为0时,所述状态机11处于需同步状态;
[0034] 4)当所述激活分区版本标识符为1,且所述非激活分区版本标识符为1时,所述状态机11处于待提交状态;
[0035] 5)当所述激活分区版本标识符为0,且所述非激活分区版本标识符为-1时,或当所述激活分区版本标识符为1,且所述非激活分区版本标识符为-1时,所述状态机11处于异常状态。
[0036] 所述网管模块12用以根据检测的所述状态机11的状态或接收的外部控制命令,执行所述激活分区或所述非激活分区的软件的版本更新或回退操作。所述外部控制命令包括令所述嵌入式设备1进行软件更新的命令,且当所述状态机11处于所述正常状态时,接收到外部升级指令时,令所述非激活分区根据预设通道获取更新的软件,以令所述状态机11处于所述需复位状态,其中,所述预设通道例如为ftp通道;所述网管模块12当检测到所述状态机11处于所述需复位状态时,重启所述嵌入式设备1,令所述激活分区根据所述非激活分区的软件执行更新操作,以令所述状态机11处于所述需同步状态;所述网管模块12当检测到所述状态机11处于所述需同步状态时,令所述非激活分区根据所述激活分区的软件执行更新操作,以令所述状态机11处于所述待提交状态,且当检测到所述激活分区中的软件运行异常时,令所述激活分区根据所述非激活分区的软件执行回退操作,且令所述状态机11处于需复位状态;所述网管模块12当检测到所述状态机11处于所述待提交状态时,确认所述激活分区以及所述非激活分区的软件升级完成,并令所述激活分区版本标识符为0且所述非激活分区版本标识符为0,所述状态机11处于正常状态。且当所述网管模块12当检测到所述状态机11处于所述异常状态时,令所述非激活分区根据所述激活分区中的所述软件执行更新操作。
[0037] 现结合图4对本发明的应用原理进一步进行说明,令cur表示激活分区版本标识符,backup表示非激活分区版本标识符,所述状态机的状态分别为,正常状态(Normal),需复位状态(need reset),需同步状态(need sync),待提交状态(need commit),以及当所述激活分区版本标识符为0,且所述非激活分区版本标识符为-1时的异常状态(Lost backup)以及当所述激活分区版本标识符为1,且所述非激活分区版本标识符为-1时的异常状态(Lost backward),Normal状态下,cur=backup=0;need reset状态下,cur=0,backup=1;need sync状态下,cur=1,backup=0;need commit状态下,cur=backup=1;Lost backup状态下,cur=0,backup=-1,Lost backward状态下,cur=1,backup=-1。
[0038] 且网管模块根据软件更新命令令软件进行更新的操作为Update表示,且如图4所示,在Update之前,cur=backup=0,且Update之后:cur=0,backup=1;所述网管模块当检测到所述状态机处于所述需复位状态时,根据reset命令,重启所述嵌入式设备,令所述激活分区根据所述非激活分区的软件执行更新操作,以令所述状态机处于所述需同步状态,即cur=1,backup=0。所述软件的同步操作以Sync表示,即令激活分区中的软件同步到非激活分区中,所述Sync命令执行前:cru=0,backup=1,命令执行后:cur=0,backup=0;或者,Sync命令执行前:cru=1,backup=0;命令执行后:cur=1,backup=1。或者,Sync命令执行前:cru=0,backup=-1,命令执行后:cur=0,backup=0。或者,Sync命令执行前:cru=1,backup=-1,命令执行后:cur=1,backup=1。且当cru=1,backup=1时,即处于待提交状态,此时当接收到提价命令commit时,所述状态机的状态为Normal,即cru=0,backup=0。且在需同步状态下,如果发现新的软件版本有缺陷,或者不满足需求,那么网管模块可以发送Backward命令,激活存储旧软件版本的备份分区,即原非激活分区,并重启设备。从而使设备回到need reset状态,此时设备运行的是旧的软件版本。再通过sync命令,可以使设备回复到初始状态。
[0039] 请参阅图5,显示为本发明的一种软件升级方法在一具体实施例中的流程示意图。通常的嵌入式设备都是通过保存两份系统软件来实现,他们分别存放在两个不同的存储设备分区上,或者两片不同的物理存储设备。其系统架构和原理如图2和图3所示,例如图2,显示为现有技术中嵌入式设备的两份系统软件存放于同一存储设备中的示意图,其中所述系统软件1存储于当前激活分区,所述系统软件2存储于非激活分区,即通常所述的备份分区。
且如图3所示,显示为现有技术中嵌入式设备的两份系统软件存放于不同的存储设备中的示意图,其中所述系统软件1存储于存储设备1(当前激活分区),所述系统软件2存储于存储设备2(非激活分区),即通常所说的备份分区。
[0040] 所述软件升级方法,应用于一嵌入式设备中,包括以下步骤:
[0041] S11:根据检测的激活分区的软件版本获得的激活分区版本标识符以及根据检测的非激活分区的软件版本获得的非激活分区版本标识符,确定一状态机所处的状态。
[0042] 例如,激活分区版本标识符以及所述非激活分区版本标识符包括0和1两种状态,所述激活分区版本标识符为0时,标识所述激活分区的所述软件版本为正常版本,所述激活分区版本标示符为1时,标识所述激活分区的所述软件版本为新版本;当所述非激活分区版本标识符为0时,标识所述非激活分区的所述软件版本为正常版本,当所述非激活分区版本标识符为1时,标识所述非激活分区的所述软件版本为新版本,当所述非激活分区版本标识符为-1时,标识所述非激活分区的所述非激活分区不具有相关软件。
[0043] 且所述状态机的状态至少包括以下状态中的一种或多种:
[0044] 1)当所述激活分区版本标识符为0且所述非激活分区版本标识符为0时,所述状态机处于正常状态;
[0045] 2)当所述激活分区版本标识符为0,且所述非激活分区版本标识符为1时,所述状态机处于需复位状态;
[0046] 3)当所述激活分区版本标识符为1,且所述非激活分区版本标识符为0时,所述状态机处于需同步状态;
[0047] 4)当所述激活分区版本标识符为1,且所述非激活分区版本标识符为1时,所述状态机处于待提交状态;
[0048] 5)当所述激活分区版本标识符为0,且所述非激活分区版本标识符为-1时,或当所述激活分区版本标识符为1,且所述非激活分区版本标识符为-1时,所述状态机处于异常状态。
[0049] S12:根据检测的所述状态机的状态或接收的外部控制命令,执行所述激活分区或所述非激活分区的软件的版本更新或回退操作。所述外部控制命令包括令所述嵌入式设备进行软件更新的命令,且当所述状态机处于所述正常状态时,接收到外部升级指令时,令所述非激活分区根据预设通道获取更新的软件,以令所述状态机处于所述需复位状态,其中,所述预设通道例如为ftp通道;当检测到所述状态机处于所述需复位状态时,重启所述嵌入式设备,令所述激活分区根据所述非激活分区的软件执行更新操作,以令所述状态机处于所述需同步状态;当检测到所述状态机处于所述需同步状态时,令所述非激活分区根据所述激活分区的软件执行更新操作,以令所述状态机处于所述待提交状态,且当检测到所述激活分区中的软件运行异常时,令所述激活分区根据所述非激活分区的软件执行回退操作,且令所述状态机处于需复位状态;所述当检测到所述状态机处于所述待提交状态时,确认所述激活分区以及所述非激活分区的软件升级完成,并令所述激活分区版本标识符为0且所述非激活分区版本标识符为0,所述状态机处于正常状态。且当所述当检测到所述状态机处于所述异常状态时,令所述非激活分区根据所述激活分区中的所述软件执行更新操作。
[0050] 现结合图4对本发明的应用原理进一步进行说明,令cur表示激活分区版本标识符,backup表示非激活分区版本标识符,所述状态机的状态分别为,正常状态(Normal),需复位状态(need reset),需同步状态(need sync),待提交状态(need commit),以及当所述激活分区版本标识符为0,且所述非激活分区版本标识符为-1时的异常状态(Lost backup)以及当所述激活分区版本标识符为1,且所述非激活分区版本标识符为-1时的异常状态(Lost backward),Normal状态下,cur=backup=0;need reset状态下,cur=0,backup=1;need sync状态下,cur=1,backup=0;need commit状态下,cur=backup=1;Lost backup状态下,cur=0,backup=-1,Lost backward状态下,cur=1,backup=-1。
[0051] 且网管模块根据软件更新命令令软件进行更新的操作为Update表示,且如图4所示,在Update之前,cur=backup=0,且Update之后:cur=0,backup=1;所述网管模块当检测到所述状态机处于所述需复位状态时,根据reset命令,重启所述嵌入式设备,令所述激活分区根据所述非激活分区的软件执行更新操作,以令所述状态机处于所述需同步状态,即cur=1,backup=0。所述软件的同步操作以Sync表示,即令激活分区中的软件同步到非激活分区中,所述Sync命令执行前:cru=0,backup=1,命令执行后:cur=0,backup=0;或者,Sync命令执行前:cru=1,backup=0;命令执行后:cur=1,backup=1。或者,Sync命令执行前:cru=0,backup=-1,命令执行后:cur=0,backup=0。或者,Sync命令执行前:cru=1,backup=-1,命令执行后:cur=1,backup=1。且当cru=1,backup=1时,即处于待提交状态,此时当接收到提价命令commit时,所述状态机的状态为Normal,即cru=0,backup=0。且在需同步状态下,如果发现新的软件版本有缺陷,或者不满足需求,那么网管模块可以发送Backward命令,激活存储旧软件版本的备份分区,即原非激活分区,并重启设备。从而使设备回到need reset状态,此时设备运行的是旧的软件版本。再通过sync命令,可以使设备回复到初始状态。
[0052] 综上所述,本发明的一种嵌入式设备以及一种软件升级方法,根据检测的激活分区的软件版本获得的激活分区版本标识符以及根据检测的非激活分区的软件版本获得的非激活分区版本标识符,确定一状态机所处的状态;根据检测的所述状态机的状态或接收的外部控制命令,执行所述激活分区或所述非激活分区的软件的版本更新或回退操作。本发明可控制升级过程中各种状态,使其从不可控变为可控。使升级过程变的更灵活,可以在各种需要的状态中自由切换。且使升级过程更可靠,可以使系统从各种错误或不稳定状态切换到稳定的可控的状态。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0053] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。