一种双CPU系统客户机程序的升级方法及系统
【技术领域】
本发明涉及计算机领域,尤其涉及一种双CPU系统客户机程序的升级方法及系统。
【背景技术】
为了提高计算机的处理性能,可在客户机上有安装两个CPU(Central Processing Unit,中央处理器),客户机上的两个CPU相互兼容并可同时工作。传统的对客户机上的程序(包括引导程序和应用程序等)进行升级包括离线升级和在线升级两种方式。其中,离线升级采取人工手动的方式,事先下载升级的引导程序到存储器中,再将存储器中的引导程序转存到客户机内,然后再升级客户机内的应用程序,该升级方式需要其它辅助设备来辅助程序升级,如存储卡、串口设备等。在线升级是客户机在线下载升级的引导程序和应用程序,之后进行引导程序和应用程序的升级。
然而,这两种传统的升级方式都有各自的缺陷,离线升级由于需要人工手动参与,因此效率低,并且对传统的单CPU系统,如果不从RAM区启动是不能升级自身的引导程序的,如果从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系统将所述新的第二应用程序烧入所述第二CPU系统中。
所述服务器用于为所述客户机提供新的引导程序、新的第一应用程序和新的第二应用程序。
在优选的实施例中,所述客户机还用于判断所述引导程序、第一应用程序或第二应用程序升级是否成功,若不成功,则继续从所述服务器下载新的引导程序、新的第一应用程序或新的第二应用程序。
在优选的实施例中,所述系统还包括用于存储下载的新的引导程序、新的第一应用程序和新的第二应用程序的存储器。
在优选的实施例中,所述客户机用于采用在线系统可编程的方式将所述新的引导程序烧入所述第一CPU系统中;所述客户机还用于采用在线系统可编程的方式将所述新的第二应用程序烧入所述第二CPU系统中。上述双CPU系统客户机程序的升级方法,使得在双CPU系统客户机中,各个CPU的引导程序和应用程序可以进行在线互相升级,避免了客户机程序升级失败时必须以特殊方式重新烧入引导程序才能恢复正常的风险,因此能够实现双CPU系统客户机中引导程序和应用程序升级无风险,无死区。
【附图说明】
图1为本发明实施例中的双CPU系统客户机程序的升级方法的流程示意图;
图2为本发明实施例中的双CPU系统客户机与服务器连接的示意图;
图3为本发明实施例中的双CPU系统客户机中引导程序和应用程序互相升级的示意图。
【具体实施方式】
在一个实施例中,如图1所示,一种双CPU系统客户机程序的升级方法,包括以下步骤:
步骤S102,与服务器建立连接。
如图2所示,该实施例中,客户机包括第一CPU系统(即CPU1)和第二CPU系统(即CPU2),客户机在出厂时,第一CPU系统的程序存储器(flash)中烧录有引导程序BOOT1和第一应用程序APP1,第二CPU系统的程序存储器(flash)中烧录有第二应用程序APP2。设置通信模块挂载在第一CPU系统上。因此客户机可以通过通信模块与服务器建立连接,在升级过程中可通过通信模块从服务器下载新的程序。
步骤S104,判断第一CPU系统中的引导程序、第一应用程序和第二CPU系统中的第二应用程序是否需要升级,若引导程序需要升级,则进入步骤S106,若第一应用程序需要升级,则进入步骤S108,若第二应用程序需要升级,则进入步骤S110。
步骤S106,从服务器下载新的引导程序,通过第二CPU系统将新的引导程序烧入第一CPU系统中。
该实施例中,第一CPU系统通过通信模块从服务器下载新的引导程序,新的引导程序可存储在客户机的内置存储器中。升级时,第二CPU系统将新的引导程序烧入第一CPU系统中。在一个优选的实施例中,采用在线系统可编程(In-System Programming,ISP)的方式将新的引导程序烧入第一CPU系统中。
在对第一CPU系统中的引导程序BOOT1进行升级时,升级失败或系统遭到破坏,使得第一CPU系统中的BOOT1被损坏,造成第一CPU系统不能正常工作时,由于第二CPU系统依然能正常工作,此时新的引导程序已存储在客户机的内置存储器中,通过第二CPU系统即可将新的引导程序烧入第一CPU系统的相应位置,完成引导程序的升级。
这样,通过第二CPU系统实现对第一CPU系统中的引导程序的升级,当引导程序升级失败时,也不需要将客户机返厂重新烧录,直接通过第二CPU系统即可完成引导程序的升级。
步骤S108,从服务器下载新的第一应用程序,通过第一CPU系统将新的第一应用程序写入第一CPU系统中。
该实施例中,第一CPU系统通过通信模块从服务器下载新的第一应用程序,新的第一应用程序可存储在客户机的内置存储器中。升级时,第一CPU系统将新的应用程序写入第一CPU系统中。在一个优选的实施例中,下载新的第一应用程序和将新的第一应用程序写入第一CPU系统可以同时进行,即边下载新的第一应用程序边将下载的新的第一应用程序写入。
在对第一CPU系统中的第一应用程序APP1进行升级时,若升级失败或系统遭到破坏,使得第一CPU系统中的APP1被损坏,由于此时第一CPU系统运行引导程序仍然能正常工作,第一CPU系统可重新下载新的第一应用程序,将新的APP1写入第一CPU系统的相应位置,完成APP1的升级。
因此,当APP1升级失败时,第一CPU系统可以重新下载新的APP1并完成升级,避免了第一应用程序升级失败时需要返厂重新烧录的风险。
步骤S110,从服务器下载新的第二应用程序,通过第一CPU系统将新的第二应用程序烧入第二CPU系统中。
该实施例中,第一CPU系统通过通信模块从服务器下载新的第二应用程序,新的第二应用程序可存储在客户机的内置存储器中。升级时,第一CPU系统将新的第二应用程序烧入第二CPU系统中。在一个优选的实施例中,下载新的第二应用程序和将新的第二应用程序烧入第二CPU系统可以同时进行,即边下载新的第二应用程序边烧入。在一个优选的实施例中,采用ISP的方式将新的第二应用程序烧入第二CPU系统中。
在对第二CPU系统中的第二应用程序APP2进行升级时,升级失败或系统遭到破坏,使得第二CPU系统中的APP2被损坏,但由于第一CPU系统仍然能正常工作,因此通过第一CPU系统可以重新下载新的APP2,并烧入到第二CPU系统的相应位置,完成APP2的升级。
在一个实施例中,上述双CPU系统客户机程序的升级方法还包括:判断引导程序、第一应用程序或第二应用程序升级是否成功,若成功,则结束,若没有成功,则返回至从服务器下载新的引导程序、新的第一应用程序或新的第二应用程序的步骤,继续进行程序的升级。
如图3所示,本发明提供的双CPU客户机程序的升级方法,第一CPU系统中的引导程序BOOT1、第一应用程序APP1和第二CPU系统中的第二应用程序APP2能够进行相互升级。在升级过程中,当第一CPU系统对第二CPU系统中的APP2进行升级时,第一CPU系统充当烧录工具;当第二CPU系统对第一CPU系统中的BOOT1进行升级时,第二CPU系统充当烧录工具。
由于双CPU系统客户机中各CPU的引导程序和应用程序能够进行在线互相升级,能够避免升级失败时必须返厂重新烧入引导程序和应用程序的风险。即使对第一CPU系统中的BOOT1升级失败,客户机中的引导程序也能够恢复正常,实现了客户机引导程序和应用程序升级无风险,无死区。
如图2所示,一种双CPU系统客户机程序的升级系统,包括客户机与服务器,所述客户机包括第一CPU系统(即CPU1)和第二CPU系统(即CPU2),客户机在出厂时,第一CPU系统的程序存储器(flash)中烧录有引导程序BOOT1和第一应用程序APP1,第二CPU系统的程序存储器(flash)中烧录有第二应用程序APP2。
该实施例中,客户机包括通信模块,客户机通过通信模块与服务器建立连接,客户机用于判断第一CPU系统中的引导程序、第一应用程序和所述第二CPU系统中的第二应用程序是否需要升级。
客户机还用于若所述引导程序需要升级,则从服务器下载新的引导程序,通过第二CPU系统将新的引导程序烧入第一CPU系统中。
所述客户机还用于若第一应用程序需要升级,则从服务器下载新的第一应用程序,通过第一CPU系统将新的第一应用程序写入第一CPU系统中;客户机还用于若第二应用程序需要升级,则从服务器下载新的第二应用程序,通过第一CPU系统将新的第二应用程序烧入第二CPU系统中。
服务器用于为客户机提供新的引导程序、新的第一应用程序和新的第二应用程序。
在一个优选的实施例中,客户机还用于判断引导程序、第一应用程序或第二应用程序升级是否成功,若不成功,则继续从服务器下载新的引导程序、新的第一应用程序或新的第二应用程序。
如图2所示,系统还包括用于存储下载的新的引导程序、新的第一应用程序和新的第二应用程序的存储器。
在一个优选的实施例中,客户机用于采用在线系统可编程的方式将新的引导程序烧入第一CPU系统中,以及采用在线系统可编程的方式将新的第二应用程序烧入第二CPU系统中。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。