复杂嵌入式设备的升级方法及复杂嵌入式设备与流程

文档序号:16207037发布日期:2018-12-08 07:14阅读:143来源:国知局
复杂嵌入式设备的升级方法及复杂嵌入式设备与流程

本发明涉及通信领域,具体而言,涉及一种复杂嵌入式设备的升级方法及复杂嵌入式设备。

背景技术

在相关技术中,复杂嵌入式设备是一个设备上包含两个或更多个cpu,每个cpu有自己的内存和存储固件以及其它外围设备组成。cpu的版本是保存在嵌入式设备存储固件上,包含机器指令,实现设备功能的二进制文件。通常,嵌入式设备升级版本是通过网页,网管等方式下载版本到嵌入式设备,嵌入式设备再更新原有的保存在固件上的版本。

但是,在更新保存在固件上的版本时,会出现突然掉电,导致固件上的版本不完整,系统无法正常启动。

针对相关技术中,复杂嵌入式设备升级过程中,可能会出现由于多个cpu之间的版本不一致,而导致系统无法正常启动的问题,目前还没有有效的解决方案。



技术实现要素:

本发明实施例提供了一种复杂嵌入式设备的升级方法及复杂嵌入式设备,以至少解决相关技术中复杂嵌入式设备升级过程中,可能会出现由于多个cpu之间的版本不一致,而导致系统某些功能无法使用或者无法正常启动的问题。

根据本发明的一个实施例,提供了一种复杂嵌入式设备的升级方法,包括:

主控中央处理器cpu获取多个cpu分别对应的系统的系统更新版本,其中,所述多个cpu包括所述主控cpu,且所述多个cpu配置在嵌入式设备中,每个cpu分别配置两个系统版本存储区域;所述主控cpu将所述多个cpu的所述系统更新版本分别存储至所述多个cpu各自对应的第一系统版本存储区域,以使所述多个cpu分别按照各自对应的所述第一系统版本存储区域中存储的所述系统更新版本进行升级更新,其中,所述第一系统版本存储区域为与每个cpu对应的所述两个系统版本存储区域中未存储cpu当前所运行的系统版本的版本区域。

可选地,所述主控cpu将所述多个cpu的所述系统更新版本分别存储至所述多个cpu各自对应的第一系统版本存储区域之后,所述主控cpu将所述多个cpu的运行版本区域标志分别更新为所述第一系统版本存储区域,其中,所述运行版本区域标志用于指示cpu当前所运行的系统版本所存储的系统版本存储区域。

可选地,所述主控cpu在更新完所述多个cpu中的其他cpu的运行版本区域标志之后,更新自身的运行版本区域标志。

可选地,所述主控cpu将所述多个cpu的运行版本区域标志分别更新为所述第一系统版本存储区域之后,重启所述嵌入式设备,所述主控cpu检测所述主控cpu的所述运行版本区域标志与所述多个cpu分别对应的所述运行版本区域标志是否一致;在所述主控cpu的所述运行版本区域标志与所述多个cpu中至少一个cpu的所述运行版本区域标志不一致的情况下,所述主控cpu修改所述至少一个cpu的运行版本标识与所述主控cpu的运行版本区域标志相同,并向网页和/或网管升级媒介发送通知消息,所述通知消息用于通知所述嵌入式设备升级失败。

可选地,主控cpu获取多个cpu分别对应的系统的系统更新版本,包括:所述主控cpu获取版本更新包,所述版本更新包中包含:与所述多个cpu分别对应的所述系统更新版本,和版本头;其中,所述版本头中携带有与每个cpu对应的偏移量,其中,所述偏移量用于指示每个cpu的所述系统更新版本在所述版本更新包中的存储位置;所述主控cpu依据所述偏移量从所述版本更新包中获取所述多个cpu各自对应的系统更新版本。

可选地,所述版本更新包还携带有校验码,所述主控cpu通过所述校验码验证所述版本更新包是否完整。

可选地,所述主控cpu通过远程过程调用rpc连接至所述多个cpu。

根据本发明的另一个实施例,还提供了一种复杂嵌入式设备,包括:多个cpu,所述多个cpu中包括主控制cpu,且每个cpu分别配置两个系统版本存储区域;所述嵌入式设备还包括:

通信装置,用于获取所述多个cpu分别对应的系统的系统更新版本;

所述主控cpu,用于将所述多个cpu的所述系统更新版本分别存储至所述多个cpu各自对应的第一系统版本存储区域,以使所述多个cpu分别按照各自对应的所述第一系统版本存储区域中存储的所述系统更新版本进行升级更新,其中,所述第一系统版本存储区域为与每个cpu对应的所述至少两个系统版本存储区域中未存储cpu当前所运行的系统版本的版本区域。

可选地,所述主控cpu,还用于在将所述多个cpu的所述系统更新版本分别存储至所述多个cpu各自对应的第一系统版本存储区域之后,将所述多个cpu的运行版本区域标志分别更新为所述第一系统版本存储区域,其中,所述运行版本区域标志用于指示cpu当前所运行的系统版本所存储的系统版本存储区域。

可选地,所述主控cpu还用于,在所述主控cpu将所述多个cpu的运行版本区域标志分别更新为所述第一系统版本存储区域之后,重启所述嵌入式设备,并检测所述主控cpu的所述运行版本区域标志与所述多个cpu分别对应的所述运行版本区域标志是否一致;

所述主控cpu还用于,在所述主控cpu的所述运行版本区域标志与所述多个cpu中至少一个cpu的所述运行版本区域标志不一致的情况下,修改所述至少一个cpu的运行版本标识与所述主控cpu的运行版本区域标志相同,并向网页和/或网管升级媒介发送通知消息,所述通知消息用于通知所述嵌入式设备升级失败。

可选地,所述通信装置还用于,获取版本更新包,所述版本更新包中包含:与所述多个cpu分别对应的所述系统更新版本,和版本头;其中,所述版本头中携带有与每个cpu对应的偏移量,其中,所述偏移量用于指示每个cpu的所述系统更新版本在所述版本更新包中的存储位置;所述主控cpu还用于,依据所述偏移量从所述版本更新包中获取所述多个cpu各自对应的系统更新版本。

根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:

主控中央处理器cpu获取多个cpu分别对应的系统的系统更新版本,其中,所述多个cpu包括所述主控cpu,且所述多个cpu配置在嵌入式设备中,每个cpu分别配置两个系统版本存储区域;

所述主控cpu将所述多个cpu的所述系统更新版本分别存储至所述多个cpu各自对应的第一系统版本存储区域,以使所述多个cpu分别按照各自对应的所述第一系统版本存储区域中存储的所述系统更新版本进行升级更新,其中,所述第一系统版本存储区域为与每个cpu对应的所述至少两个系统版本存储区域中未存储cpu当前所运行的系统版本的版本区域。

通过本发明,在复杂嵌入式设备的升级过程中,主控cpu将各个cpu对应的系统更新版本存储在各个cpu当前未使用的版本区域中,而不是替换之前的系统版本,以使每个cpu同时拥有新版本和旧版本,在这种情况下,如果由断电等突发情况导致某些cpu没有完成更新,该设备中的所有cpu也可以使用旧版本来完成启动,后续进行重新升级更新。在版本升级最后一步,切换主控cpu运行版本区域标志;在版本升级后,通过“二元法”,判断各个cpu的版本是否一致,如不一致,说明升级过程出现异常,主控cpu切换从cpu版本区域标志,使该设备中的所有cpu使用旧版本,为后续进行重新升级做准备。采用上述技术方案,避免了相关技术中复杂嵌入式设备升级过程中,可能会出现由于多个cpu之间的版本不一致,而导致系统某些功能无法使用或者无法正常启动的问题,实现了复杂嵌入式设备在升级失败的情况下,可以正常启动。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的复杂嵌入式设备的升级方法的流程图;

图2是根据本发明优选实施例的双cpu双版本软硬件的结构图;

图3是根据本发明优选实施例的双cpu双版本组成结构图;

图4是根据本发明优选实施例的双cpu双版本升级流程图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例一

本申请文件中的技术方案可以运行于复杂嵌入式设备,即包含有多个cpu的嵌入式设备,在本发明的优选实施例中,可以为两个cpu,当然不局限于两个cpu。

在本实施例中提供了一种运行于复杂嵌入式设备的多cpu嵌入式设备的升级,图1是根据本发明实施例的复杂嵌入式设备的升级方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,主控中央处理器cpu获取多个cpu分别对应的系统的系统更新版本,其中,该多个cpu包括该主控cpu,且该多个cpu配置在嵌入式设备中,每个cpu分别配置两个系统版本存储区域;

步骤s104,该主控cpu将该多个cpu的该系统更新版本分别存储至该多个cpu各自对应的第一系统版本存储区域,以使该多个cpu分别按照各自对应的该第一系统版本存储区域中存储的该系统更新版本进行升级更新,其中,该第一系统版本存储区域为与每个cpu对应的该至少两个系统版本存储区域中未存储cpu当前所运行的系统版本的版本区域。

需要说明的是,本申请文件中的二元法是指通过设置第一系统版本区域或第二系统版本区域的标志来识别当前设备中的多个cpu是否均已经升级系统。例如,在系统更新完毕后,如果检测到某个cpu的运行版本区域标志指示为第二系统版本区域,与其他cpu的运行版本区域标志为第一系统版本区域,则确定设备升级失败,所有cpu均运行旧系统版本。

通过上述步骤,在复杂嵌入式设备的升级过程中,主控cpu将各个cpu对应的系统更新版本存储在各个cpu当前未使用的版本区域中,而不是替换之前的系统版本,以使每个cpu同时拥有新版本和旧版本,在这种情况下,如果由断电等突发情况导致某些cpu没有完成更新,该设备中的所有cpu也可以使用旧版本来完成启动,后续进行重新升级更新。在版本升级最后一步,切换主控cpu运行版本区域标志;在版本升级后,通过“二元法”,判断各个cpu的版本是否一致,如不一致,说明升级过程出现异常,主控cpu切换从cpu版本区域标志,使该设备中的所有cpu使用旧版本,为后续进行重新升级做准备。采用上述技术方案,避免了相关技术中复杂嵌入式设备升级过程中,可能会出现由于多个cpu之间的版本不一致,而导致系统无法正常启动的问题,实现了复杂嵌入式设备在升级失败的情况下,可以正常启动。

可选地,该主控cpu将该多个cpu的该系统更新版本分别存储至该多个cpu各自对应的第一系统版本存储区域之后,该主控cpu将该多个cpu的运行版本区域标志分别更新为该第一系统版本存储区域,其中,该运行版本区域标志用于指示cpu当前所运行的系统版本所存储的系统版本存储区域。

可选地,该主控cpu在更新完该多个cpu中的其他cpu的运行版本区域标志之后,更新自身的运行版本区域标志。

可选地,该主控cpu将该多个cpu的运行版本区域标志分别更新为该第一系统版本存储区域之后,重启该嵌入式设备,该主控cpu检测该主控cpu的该运行版本区域标志与该多个cpu分别对应的该运行版本区域标志是否一致;在该主控cpu的该运行版本区域标志与该多个cpu中至少一个cpu的该运行版本区域标志不一致的情况下,该主控cpu修改该至少一个cpu的运行版本标识与该主控cpu的运行版本区域标志相同,并向网页和/或网管升级媒介发送通知消息,该通知消息用于通知该嵌入式设备升级失败。

可选地,主控cpu获取多个cpu分别对应的系统的系统更新版本,包括:该主控cpu获取版本更新包,该版本更新包中包含:与该多个cpu分别对应的该系统更新版本,和版本头;其中,该版本头中携带有与每个cpu对应的偏移量,其中,该偏移量用于指示每个cpu的该系统更新版本在该版本更新包中的存储位置;该主控cpu依据该偏移量从该版本更新包中获取该多个cpu各自对应的系统更新版本。

可选地,该版本更新包还携带有校验码,该主控cpu通过该校验码验证该版本更新包是否完整。

可选地,该主控cpu通过远程过程调用rpc连接至该多个cpu。

以下结合本发明的优选实施例进行详细说明。

本发明优选实施例所要解决的技术问题是提供一种解决复杂嵌入式设备升级过程中出现随时断电,导致复杂嵌入式设备无法正常启动或版本启动,复杂嵌入式设备双cpu版本不一致问题的软件解决方法。

本优选实施例中采用的具体解决技术问题可以为以下三种情况:

1)升级主控cpu版本一半时,突然断电,导致主控cpu版本无法启动

2)升级从cpu版本一半时,突然断电,导致从cpu版本无法启动

3)升级时,主控cpu和从cpu版本升级成功,主控cpu切换从cpu运行版本区域标志成功,突然断电,主控cpu自身运行版本区域标志无法切换,导致系统重启后,双cpu之间版本不一致,进而引起主控cpu下某些从cpu功能无法使用。

本发明优选实施例包括以下技术方案:

1)嵌入式设备主控cpu通过远程过程调用(remoteprocedurecall,简称为rpc)的client端,利用网络接口访问从cpu的rpc(remoteprocedurecall)的server端,利用自定义的控制和状态应用程序界面csapi(controlandstatusapi)命令控制从cpu版本升级,更新从cpu运行版本区域标志。

2)主控cpu直接获取双cpu双版本,该双cpu双版本制作中包含主cpu版本,从cpu版本和版本头。版本头中的crc校验保证了双版本的完整性。版本头中的主cpu偏移量和从cpu偏移量定位了主从cpu版本在双cpu双版本中的位置。

3)网页,网管升级媒介升级设备时,主控cpu负责下载双cpu双版本;主控cpu负责解析双cpu双版本,分解出主cpu版本和从cpu版本;主从cpu把各自的版本升级到flash的另外一个分区,避免掉电引起系统无法启动;升级成功后,首先更新从cpu的运行版本区域标志,再更新主控cpu的运行版本区域标志;

4)每个cpu的运行版本区域标志在设备出厂时是相同值,而且只有a和b两个值,即本优选实施例中采用二元法进行双cpu版本同步。版本重启后,判断主从cpu运行版本区域标志,如果主控cpu运行版本区域标志和从cpu运行版本区域标志不一致,纠正从cpu的运行版本区域标志。避免在更新主从cpu运行版本区域标志时出现断电,双cpu版本不一致导致复杂嵌入式设备不能正常工作。

5)在出现上述运行版本区域标志不一致的情况下,确定升级失败,告知网页和/或网管升级媒介,由网页,网管升级媒介负责重新进行升级。

6)上述步骤的主要包括如下部分:双版本制作,双版本中包含主cpu版本,从cpu版本和版本头;主控cpu负责解析双版本,分离出主cpu版本和从cpu版本;主控cpu负责主cpu版本和从cpu版本升级;主控cpu负责切换从cpu运行版本区域标志和主控cpu运行版本区域标志;重启后,主控cpu采用二元法负责同步双cpu版本,保证版本一致性;升级失败,启动定时器,告知网页,网管升级媒介;网页,网管升级媒介负责重新进行升级。

以下是本发明优选实施例的具体实施方式

本发明优选实施例是要实现双cpu下版本升级成功且能保证运行版本一致性的方法。由于现网中的设备升级要求非常高,一旦升级失败就会面临设备无法正常启动,而对于双cpu的版本升级提出了更高的要求,不仅要升级成功,而且要保证双cpu版本的一致性,所以发明双cpu双版本升级软件方法。

图2是根据本发明优选实施例的双cpu双版本软硬件的结构图,如图2所示,每个cpu都要有自己的flash,每个flash都要有flasha区,flashb区,运行版本区域标志(独立于flash的a区和b区的另外一个flash分区);主控cpu控制从cpu的网络接口,基于rpc的csapi的命令。运行版本区域标志指明版本是从flash的a区或flash的b区启动。

图3是根据本发明优选实施例的双cpu双版本组成结构图,如图3所示,此双cpu双版本包含幻头,主控cpu版本头部,从cpu版本头部,主控cpu版本,从cpu版本。版本头部主要用来确认主从版本偏移量,版本校验,版本号。

本发明优选实施例的双cpu双版本升级流程,包括如下步骤:

步骤1:嵌入式设备boot启动,复位从cpu。之后转步骤2。

步骤2:主控cpu的boot获取运行版本区域标志(默认值为flash的a区),选择flash的a区(或b区)版本启动,版本启动后,启动csapirpcclient;从cpu的boot获取运行版本区域标志(默认值为flash的a区),选择flash的a区(或b区)版本启动,版本启动后,启动csapirpcserver。之后转步骤3。

步骤3:通过csapi命令,主控cpu获取从cpu运行区域标志;主控cpu获取主cpu运行区域标志。比较主从cpu运行版本区域标志,主控cpu运行版本区域标志和从cpu运行版本区域标志一致,版本正常运行,之后转步骤4;主控cpu运行版本区域标志和从cpu运行版本区域标志不一致,说明设备进行过升级版本,但出现了异常,主控cpu需要通过csapi命令切换从cpu运行版本区域标志,使主从cpu运行版本区域标志一致。从cpu根据主控cpu命令更新运行版本区域标志。之后转到步骤13。

步骤4:网页,网管升级媒介升级设备,设备下载双cpu双版本,双cpu双版本下载成功,之后转步骤5;双cpu双版本下载失败,转到步骤13。

步骤5:双cpu双版本校验,双cpu双版本crc校验成功,之后转步骤6;双cpu双版本校验失败,转到步骤13。

步骤6:主控cpu利用双cpu双版本的版本头,通过版本头中的主cpu偏移量和从cpu偏移量定位了主从cpu版本在双cpu双版本中的位置,解析主cpu版本和从cpu版本。之后转步骤7。

步骤7:主控cpu获取当前主控cpu运行flash分区。如果当前分区是a区,则主控cpu用主cpu版本更新自身flash的b区。如果当前分区是b区,则主控cpu用主cpu版本更新自身flash的a区。之后转步骤8。

步骤8:更新主控flash版本成功,之后转步骤9;更新主控flash版本失败,转到步骤13。

步骤9:主控cpu获取从cpu运行flash分区。如果当前分区是a区,则主控cpu用从cpu版本更新从cpu的flash的b区;如果当前分区是b区,则主控cpu用从cpu版本更新从cpu的flash的a区。从cpu根据主控cpu升级命令升级a区或b区,之后转步骤10。

步骤10:更新从cpu的flash版本成功,之后转步骤11;更新从cpu的flash版本失败,转到步骤13。

步骤11:主控cpu更新从cpu运行版本区域标志。从cpu根据主控cpu命令更新运行版本区域标志。

步骤12:主控cpu更新自身运行版本区域标志。结束。

步骤13:通知网页,网管升级媒介,同时主控cpu启动10s定时器。如果网页,网管升级媒介继续升级设备,关闭10s定时器,之后转步骤4;如果网页,网管升级媒介不重新升级设备,定时器时间到,重启设备。结束。

图4是根据本发明优选实施例的双cpu双版本升级流程图,图4展示了双cpu双版本升级流程,图4展示了上述13个步骤中更为详细的流程。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例二

根据本发明的另一个实施例,还提供了一种嵌入式设备,包括:多个cpu,该多个cpu中包括主控制cpu,且每个cpu分别配置两个系统版本存储区域;该嵌入式设备还包括:

通信装置,用于获取该多个cpu分别对应的系统的系统更新版本;

该主控cpu,用于将该多个cpu的该系统更新版本分别存储至该多个cpu各自对应的第一系统版本存储区域,以使该多个cpu分别按照各自对应的该第一系统版本存储区域中存储的该系统更新版本进行升级更新,其中,该第一系统版本存储区域为与每个cpu对应的该至少两个系统版本存储区域中未存储cpu当前所运行的系统版本的版本区域。

可选地,该主控cpu,还用于在将该多个cpu的该系统更新版本分别存储至该多个cpu各自对应的第一系统版本存储区域之后,将该多个cpu的运行版本区域标志分别更新为该第一系统版本存储区域,其中,该运行版本区域标志用于指示cpu当前所运行的系统版本所存储的系统版本存储区域。

可选地,该主控cpu还用于,在该主控cpu将该多个cpu的运行版本区域标志分别更新为该第一系统版本存储区域之后,重启该嵌入式设备,并检测该主控cpu的该运行版本区域标志与该多个cpu分别对应的该运行版本区域标志是否一致;

该主控cpu还用于,在该主控cpu的该运行版本区域标志与该多个cpu中至少一个cpu的该运行版本区域标志不一致的情况下,修改该至少一个cpu的运行版本标识与该主控cpu的运行版本区域标志相同,并向网页和/或网管升级媒介发送通知消息,该通知消息用于通知该嵌入式设备升级失败。

可选地,该通信装置还用于,获取版本更新包,该版本更新包中包含:与该多个cpu分别对应的该系统更新版本,和版本头;其中,该版本头中携带有与每个cpu对应的偏移量,其中,该偏移量用于指示每个cpu的该系统更新版本在该版本更新包中的存储位置;该主控cpu还用于,依据该偏移量从该版本更新包中获取该多个cpu各自对应的系统更新版本。

实施例三

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s1,主控中央处理器cpu获取多个cpu分别对应的系统的系统更新版本,其中,该多个cpu包括该主控cpu,且该多个cpu配置在嵌入式设备中,每个cpu分别配置至少两个系统版本存储区域;

s2,该主控cpu将该多个cpu的该系统更新版本分别存储至该多个cpu各自对应的第一系统版本存储区域,以使该多个cpu分别按照各自对应的该第一系统版本存储区域中存储的该系统更新版本进行升级更新,其中,该第一系统版本存储区域为与每个cpu对应的该至少两个系统版本存储区域中未存储cpu当前所运行的系统版本的版本区域。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例中的方法步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1