本发明涉及嵌入式软件领域,特别是涉及一种引导加载程序启动升级的方法和装置。
背景技术:
1、通信产品的高可靠性是生产厂家追求的目标之一,保证通信产品中程序加载和升级的可靠性也是其中极其重要的方面。在嵌入式系统的启动过程中,由复杂可编程逻辑器件(complex programmable logic device,简写为cpld)负责初始化硬件环境,并控制启动流程,确保嵌入式系统从正确的存储介质中加载引导程序;例如,确保嵌入式系统从flash存储器中加载通用引导加载(universal bootloader,简写为uboot)程序等。
2、现有技术中,受限于成本资源等因素,嵌入式系统中往往只会放置一片flash存储器,uboot程序也只会存放一份。当唯一的flash存储器损坏时,或者当uboot程序存在升级需求时,单flash存储器方案的缺陷就暴露出来:在flash存储器损坏的情况下,整个嵌入式系统的数据均可能丢失或损坏;在uboot程序存在升级需求时,升级过程中如果出现任何问题,都可能导致系统无法启动甚至瘫痪。且uboot程序升级需求可以在单flash前提下,通过两级uboot程序来实现第二级uboot程序的升级,然而,在这种方案下第一级uboot程序可以升级,但风险较高,导致uboot程序升级的可靠性较低,以及程序引导的安全性较低。因此,亟需一种保证uboot程序升级的可靠性及程序引导的安全性的方案。
3、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
技术实现思路
1、本发明要解决的技术问题是提供一种引导加载程序启动升级的方法和装置,其目的在于,通过放置两片flash用来存储引导加载程序,并提供一种基于cpld实现切换两片flash存储器加载相应的引导加载程序的方案,从硬件设计及软件控制的角度解决现有技术中uboot程序升级的可靠性及程序引导的安全性问题。
2、本发明采用如下技术方案:
3、第一方面,本发明提供了一种引导加载程序启动升级的方法,包括:
4、在默认flash存储器中和备份flash存储器中分别存储相同的原始引导加载程序;
5、当需要对所述原始引导加载程序进行升级时,在所述备份flash存储器中尝试加载目标引导加载程序;
6、当在所述备份flash存储器中成功启动所述目标引导加载程序时,将目标引导加载程序写入所述默认flash存储器中,以完成将所述原始引导加载程序升级至所述目标引导加载程序。
7、进一步地,所述当需要对所述原始引导加载程序进行升级时,在所述备份flash存储器中尝试加载目标引导加载程序包括:
8、当嵌入式系统需要升级所述原始引导加载程序时,将所述目标引导加载程序写入所述备份flash存储器;
9、修改cpld程序,以引导所述嵌入式系统从所述备份flash存储器加载所述目标引导加载程序;
10、当所述嵌入式系统重新启动时,完成在所述备份flash存储器中启动所述目标引导加载程序。
11、进一步地,所述当所述嵌入式系统重新启动时,完成在所述备份flash存储器中启动所述目标引导加载程序包括:
12、通过所述cpld程序加载所述备份flash存储器中的目标引导加载程序;
13、当所述备份flash存储器中的目标引导加载程序启动成功时,确定所述备份flash存储器中的引导加载程序完成升级。
14、进一步地,所述当所述嵌入式系统重新启动时,完成在所述备份flash存储器中启动所述目标引导加载程序还包括:
15、当所述备份flash存储器中的目标引导加载程序启动失败时,通过cpld程序在所述默认flash存储器中加载所述目标引导加载程序,以在所述默认flash存储器中成功启动所述目标引导加载程序;
16、在所述嵌入式系统正常运行后,将所述默认flash存储器中的数据拷贝至备份flash存储器中,以使所述备份flash存储器与所述默认flash存储器中的数据保持一致。
17、进一步地,所述通过cpld程序在所述默认flash存储器中加载所述目标引导加载程序包括:
18、引导所述默认flash存储器加载所述目标引导加载程序;
19、在所述默认flash存储器中所述目标引导加载程序开始加载运行时,启动计时器;
20、若所述目标引导加载程序在第一预设时间内启动,则所述目标引导加载程序加载成功;
21、若所述目标引导加载程序未在第一预设时间内启动,则所述目标引导加载程序加载失败;
22、当所述目标引导加载程序未加载成功时,计时器的使用所述备份flash存储器完成所述目标引导加载程序的启动。
23、进一步地,所述若所述目标引导加载程序在第一预设时间内启动,则所述目标引导加载程序加载成功包括:
24、若在第一预设时间内所述计时器接收到第一成功信号,则所述目标引导加载程序在所述默认flash存储器中加载成功。
25、进一步地,所述当所述目标引导加载程序未加载成功时,使用所述备份flash存储器完成所述目标引导加载程序的启动包括:
26、在所述备份flash存储器中所述目标引导加载程序开始加载运行时,启动计时器;
27、若在第二预设时间内所述计时器接收到第二成功信号,完成在所述嵌入式系统启动所述目标引导加载程序。
28、进一步地,还包括:
29、当所述默认flash存储器或所述备份flash存储器运行异常时,从正常运行的flash存储器中加载目标引导加载程序;
30、当在所述正常运行的flash存储器中,相应的目标引导加载程序启动成功时,将所述正常运行的flash存储器中的数据拷贝至运行异常的flash存储器中。
31、第二方面,本发明还提供了一种引导加载程序启动升级的装置,用于实现第一方面所述的引导加载程序启动升级的方法,所述引导加载程序启动升级的装置包括:
32、至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的引导加载程序启动升级的方法。
33、第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的引导加载程序启动升级的方法。
34、第四方面,提供了一种芯片,包括:处理器和接口,用于从存储器中调用并运行存储器中存储的计算机程序,执行如第一方面中的引导加载程序启动升级的方法。
35、第五方面,提供了一种包含指令的计算机程序产品,当该指令在计算机或处理器上运行时,使得计算机或处理器执行如第一方面至第四方面及其任一项的引导加载程序启动升级的方法。
36、第六方面,提供了一种引导加载程序启动升级的方法系统,包括如第二方面的引导加载程序启动升级的装置,并使用如第一方面所述的引导加载程序启动升级的方法,完成第二方面的引导加载程序启动升级的装置的交互。
37、区别于现有技术,本发明至少具有以下有益效果:
38、本发明通过在嵌入式系统中的默认flash存储器中和备份flash存储器中分别存储相同的原始引导加载程序,当需要对嵌入式系统的原始引导加载程序进行升级时,在备份flash存储器中尝试加载目标引导加载程序;当在备份flash存储器中成功启动目标引导加载程序时,将目标引导加载程序写入默认flash存储器中,实现在嵌入式系统中将原始引导加载程序升级至目标引导加载程序;当其中一个flash存储器损坏时,由于备份flash存储器中也有引导加载程序,所以某一个flash存储器在升级过程中问题时,嵌入式系统能够正常启动并运行,极大地提高了在嵌入式系统升级引导加载程序的可靠性及安全性,实用性较强,从硬件设计及软件控制的角度,解决了现有技术中uboot程序升级的可靠性及程序引导的安全性问题。
1.一种引导加载程序启动升级的方法,其特征在于,包括:
2.根据权利要求1所述的引导加载程序启动升级的方法,其特征在于,所述当需要对所述原始引导加载程序进行升级时,在所述备份flash存储器中尝试加载目标引导加载程序包括:
3.根据权利要求2所述的引导加载程序启动升级的方法,其特征在于,所述当所述嵌入式系统重新启动时,完成在所述备份flash存储器中启动所述目标引导加载程序包括:
4.根据权利要求2所述的引导加载程序启动升级的方法,其特征在于,所述当所述嵌入式系统重新启动时,完成在所述备份flash存储器中启动所述目标引导加载程序还包括:
5.根据权利要求4所述的引导加载程序启动升级的方法,其特征在于,所述通过cpld程序在所述默认flash存储器中加载所述目标引导加载程序包括:
6.根据权利要求5所述的引导加载程序启动升级的方法,其特征在于,所述若所述目标引导加载程序在第一预设时间内启动,则所述目标引导加载程序加载成功包括:
7.根据权利要求5所述的引导加载程序启动升级的方法,其特征在于,所述当所述目标引导加载程序未加载成功时,使用所述备份flash存储器完成所述目标引导加载程序的启动包括:
8.根据权利要求1-7任一所述的引导加载程序启动升级的方法,其特征在于,还包括:
9.一种引导加载程序启动升级的装置,其特征在于,所述引导加载程序启动升级的装置包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于实现权利要求1-8任一所述的引导加载程序启动升级的方法。
10.一种非易失性计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令被一个或多个处理器执行,用于完成权利要求1-8任一所述的引导加载程序启动升级的方法。