一种基于多重镜像的系统启动方法及装置制造方法

文档序号:6551658阅读:110来源:国知局
一种基于多重镜像的系统启动方法及装置制造方法
【专利摘要】本发明适用于计算机【技术领域】,提供了一种基于多重镜像的系统启动方法及装置,所述方法包括:镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能;系统启动时,执行镜像校验区的镜像校验代码对所述多重镜像进行校验;当其中的任一重镜像校验正确时,根据分配的所述启动地址启动所述镜像;当所述多重镜像均校验失败时,将系统复位。从而提高了嵌入式系统运行的可靠性,尤其是存储设备不完全可靠下嵌入式系统运行的可靠性,可降低存储设备维护的成本。进一步地,镜像校验所使用的代码通过汇编语言实现,并存储在存储空间起始处设置的镜像校验区中,使得镜像校验过程不影响系统异常向量的响应处理。
【专利说明】—种基于多重镜像的系统启动方法及装置【技术领域】
[0001]本发明属于计算机【技术领域】,尤其涉及一种基于多重镜像的系统启动方法及装置。
【背景技术】
[0002]在嵌入式系统中,代码一般可分为引导代码和内核代码。嵌入式系统启动时首先运行引导代码,引导代码的作用一般是初始化硬件环境,为运行内核代码做好准备。内核代码出现问题时一般通过引导代码来实现更新。而当引导代码出现问题时,将导致系统无法启动,只能通过硬件重新编程或更换存储芯片的方式进行修复。
[0003]然而在现有技术中,嵌入式系统为保证可靠性,一般在存储设备中通过双代码备份的方式满足系统对可靠性的要求。双代码备份一般是将内核和文件系统部分作为镜像进行备份。然而在这种双代码备份下,当引导代码或者配置数据区发生损坏时,例如,当异常发生在bootloader区域、nvram区域或者config区域时,也必将导致设备无法正常工作,需要更换存储设备或者重新编程存储设备,系统启动仍然不可靠。

【发明内容】
[0004]本发明的目的在于提供一种基于多重镜像的系统启动方法及装置,以提高系统启动运行的可靠性,以及降低存储设备的维护成本。
[0005]本发明是这样实现的,一种基于多重镜像的系统启动方法,所述方法包括:
[0006]镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能;
[0007]系统启动时,进入镜像校验区,通过镜像校验区的镜像校验代码对所述多重镜像进行校验;
[0008]当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动所述校验正确的镜像;
[0009]当所述多重镜像均校验失败时,将系统复位。
[0010]进一步地,所述镜像编译时,为多重镜像中的每重镜像分配启动地址之后还包括:
[0011]分别计算每重镜像的校验码,并将计算的所述校验码存储至指定位置。
[0012]进一步地,所述镜像校验代码通过汇编语言编写;并且存储至镜像校验区中,所述镜像校验区位于存储空间的起始处。
[0013]本发明的第二方面,提供了一种基于多重镜像的系统启动装置,所述装置包括:
[0014]镜像编译模块,用于镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能;
[0015]镜像校验模块,用于系统启动时,进入镜像校验区,通过镜像校验区的镜像校验代码对所述多重镜像进行校验;[0016]启动模块,用于当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动所述校验正确的镜像;
[0017]复位模块,用于当所述多重镜像均校验失败时,将系统复位。
[0018]进一步地,所述镜像编译模块还用于:
[0019]分别计算每重镜像的校验码,并将计算的所述校验码存储至指定位置。
[0020]进一步地,所述镜像校验代码通过汇编语言编写;并且存储至镜像校验区中,所述镜像校验区位于存储空间的起始处。
[0021]与现有技术相比,本发明预先将系统打包成多个镜像,获得多重镜像,并为每重镜像分配启动地址;通过汇编语言编写所述多重镜像的校验代码,并存储在镜像校验区。系统启动时,首先进入镜像校验区,执行镜像校验代码;当所述多重镜像中的任一重镜像校验正确时,则根据分配的启动地址启动所述校验正确的镜像;当所述多重镜像均校验失败时,将系统复位,从而提高了嵌入式系统运行的可靠性,尤其是存储设备不完全可靠的场合下嵌入式系统运行的可靠性,可降低存储设备不完全可靠而导致的返工返修成本,从而降低存储设备维护的成本。进一步地,所述镜像校验代码通过汇编语言实现,并且存储在存储空间起始处设置的镜像校验区中,所述镜像校验区占用的存储空间小,使得镜像校验过程不影响系统异常向量的响应处理。
【专利附图】

【附图说明】
[0022]图1是本发明实施例一提供的基于多重镜像的系统启动方法的第一实现流程图;
[0023]图2是本发明实施例一提供的基于多重镜像的系统启动方法中镜像校验区的设置不意图;
[0024]图3是本发明图1实施例提供的基于多重镜像的系统启动方法中步骤SlOl的具体实现流程;
[0025]图4是本发明图1实施例提供的基于多重镜像的系统启动方法中步骤S103的具体实现流程;
[0026]图5是本发明实施例二提供的基于多重镜像的系统启动装置的组成结构图。【具体实施方式】
[0027]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0028]与现有技术相比,本发明预先将系统打包成多个镜像,获得多重镜像,并为每重镜像分配启动地址;通过汇编语言编写所述多重镜像的校验代码,并存储在镜像校验区。系统启动时,首先进入镜像校验区,执行镜像校验代码;当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动该镜像;当所述多重镜像均校验失败时,将系统复位。由于每重镜像均能实现完整的系统功能,从而提高了嵌入式系统运行的可靠性,尤其是存储设备不完全可靠的场合下嵌入式系统运行的可靠性,可降低存储设备不完全可靠而导致的返工返修成本,从而降低存储设备维护的成本。进一步地,所述镜像校验代码通过汇编语言实现,并且存储在存储空间起始处设置的镜像校验区中,所述镜像校验区占用的存储空间小,使得镜像校验过程不影响系统异常向量的响应处理。
[0029]实施例一
[0030]图1示出了本发明实施例一提供的基于多重镜像的系统启动方法的实现流程。所述方法应用于嵌入式系统。
[0031]如图1所示,所述方法包括:
[0032]在步骤SlOl中,镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能。
[0033]在本实施例中,预先根据实际需求,设置两重或以上的镜像。其中,每一重镜像均包含完整的系统软件,从而可实现完整的系统功能,使得系统选择其中任一重镜像时,能够运行完整的系统软件。
[0034]嵌入式系统中软件一般需要进过编译、汇编和连接后才可生成可执行文件,在链接时通过链接脚本根据分配的启动地址对目标文件执行重定位、建立符号引用,同时为变量函数等分配运行地址,使得镜像可加载在指定的存储空间上。本实施例中,多重镜像在编译连接过程中,根据嵌入式系统的存储空间和存储设备的存储空间分配各镜像的启动地址,并将所述多重镜像进行合并,在合并的同时添加各镜像的校验码,从而完成了多重镜像的设置。
[0035]在步骤S102中,系统启动时,进入镜像校验区,通过镜像校验区的镜像校验代码对所述多重镜像进行校验。
[0036]本实施例在引导程序的启动过程中,增加了一个镜像校验过程。所述镜像校验过程对应的镜像校验代码预先通过汇编语言编写,并且存储在镜像校验区中
[0037]由于嵌入式系统的异常向量地址往往为固定的地址,例如嵌入式系统中发生异常时跳转到引导程序,为了不影响异常向量的响应处理,本发明在存储空间的起始处设置一镜像校验区,以存储所述储镜像校验代码,从而使得增加的镜像校验不会影响系统对异常向量的响应处理,并且使得系统启动时可尽快地执行镜像校验代码。进一步地,所述镜像校验区占用的内存空间极小,有利于提闻系统运行的可罪性。
[0038]示例性的,图2示出了镜像校验区的一个设置示意图。由图中可知,嵌入式系统和存储设备的存储空间中存放了四重镜像,从存储空间的起始处起分别为的第一重镜像、第二重镜像、第三重镜像、第四重镜像。镜像校验区stage则设置在第一重镜像中。
[0039]系统启动时,首先跳转进入到镜像校验区,执行镜像校验代码。针对每一重镜像,计算该镜像对应的校验码;从当前重镜像指定的位置中读取当前镜像预存的校验码,判断所述计算得到的校验码和读取到的所述预存的校验码是否相同;若相同,则该镜像校验正确;否则,该镜像校验失败,计算下一重镜像对应的校验码,以进行下一重镜像的校验。
[0040]由于累加和校验算法的容量小,使得镜像校验区占用的存储空间小,因此本实施例中优选采用累加和校验算法计算当前镜像对应的校验码,以提高系统的可靠性。
[0041]在步骤S103中,当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动所述校验正确的镜像。
[0042]在本实施例中,当所述多重镜像中的任一重镜像校验正确时,根据分配的该校验正确的镜像对应的启动地址启动该镜像,即启动系统。由于每一重镜像均能实现完整的系统功能,因此,某个或者某些镜像在任何位置(如bootloader区域)出现问题或者数据破坏时,嵌入式系统可选择另外一个完整的镜像启动,从而提高了系统运行的可靠性。
[0043]在步骤S104中,当所述多重镜像均校验失败时,将系统复位。
[0044]在本实施例中,前一重镜像校验失败时,则计算下一重镜像对应的校验码,以进行下一重镜像的校验。在所设置的多重镜像均校验不正确时,则将系统复位。
[0045]本发明实施例预先将系统打包成多个镜像,获得多重镜像,并为每重镜像分配启动地址;通过汇编语言编写所述多重镜像的校验代码,并存储在镜像校验区中。系统启动时,首先进入镜像校验区,执行镜像校验代码;当所述多重镜像中的任一重镜像校验正确时,则根据分配的启动地址启动该镜像;当所述多重镜像均校验失败时,则将系统复位。由于每重镜像均能实现完整的系统功能,从而提高了嵌入式系统运行的可靠性,尤其是存储设备不完全可靠的场合下嵌入式系统运行的可靠性,可降低存储设备不完全可靠而导致的返工返修成本,从而降低存储设备维护的成本。进一步地,所述镜像校验代码通过汇编语言实现,并且存储在存储空间起始处设置的镜像校验区中,所述镜像校验区占用的存储空间小,使得镜像校验过程不影响系统异常向量的响应处理。
[0046]图3示出了本发明图1实施例提供的基于多重镜像的系统启动方法中步骤SlOl的具体实现流程。
[0047]如图3所示,步骤SlOl具体包括:
[0048]在步骤S301中,预先设置多重镜像,所述多重镜像中的每重镜像均可实现完整的系统功能。
[0049]在本实施例中,预先根据实际需求,设置两重或以上的镜像。其中,每一重镜像均包含完整的系统软件,能实现完整的系统功能,使得系统选择其中任一重镜像时,能够运行完整的系统软件。
[0050]在步骤S302中,镜像编译时,根据嵌入式系统和/或存储设备的存储空间,为每重镜像分配启动地址。
[0051]在步骤S303中,分别计算每重镜像的校验码,并将计算的所述校验码存储至指定位置。
[0052]在本实施例中,优选采用累加和校验算法计算每重镜像对应的校验码,并将所述校验代码预先存储在对应镜像的指定位置上,用作系统启动过程中进行镜像校验时判断镜像是否完整的依据。
[0053]在步骤S304中,将所述多重镜像进行合并。
[0054]需要说明的是,这里的将所述多重镜像进行合并,是指将所述多重叠加起来,统一进行存储,以便于后续的校验与启动。
[0055]图4示出了本发明图1实施例提供的基于多重镜像的系统启动方法中步骤S103的具体实现流程。在本实施例中,所述多重镜像为四重镜像,从存储空间的起始地址位置算起分别为第一重镜像、第二重镜像、第三重镜像、第四重镜像,所述方法详述如下:
[0056]在步骤S401中,系统启动时,跳转至第一重镜像的起始位置,执行镜像校验代码。
[0057]本实施例在常规的引导程序的启动过程增加了一个镜像校验过程,所述镜像校验过程通过汇编语言实现,镜像校验代码存储在第一重镜像的起始处。系统启动时,首先跳转至第一重镜像的起始位置执行镜像校验代码。
[0058]在步骤S402,计算镜像对应的校验码。[0059]本实施例优选采用累加和校验算法计算镜像对应的校验码。
[0060]在步骤S403中,从镜像的指定位置中读取预存的校验码,判断所述计算得到的校验码和读取到的所述预存的校验码是否相同。
[0061]所述计算得到的校验码和读取到的所述预存的校验码相同时,则所述镜像校验正确,执行步骤S404 ;否则,所述镜像校验失败,返回步骤S402,计算下一重镜像对应的校验码,以进行下一重镜像的校验。
[0062]在步骤S404中,在所述镜像校验正确时,根据分配的启动地址启动所述校验正确的镜像。
[0063]在镜像校验正确时,则启动所述校验正确的镜像,否则开始执行下一重镜像的镜像校验。在所设置的四重镜像均校验失败时,则将系统复位,结束镜像校验的过程。
[0064]实施例二
[0065]图5示出了本发明实施例二提供的基于多重镜像的系统启动装置,为了便于说明,仅不出了与本发明相关的部分。
[0066]如图5所示,所述装置包括:
[0067]镜像编译模块51,用于镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能。
[0068]镜像校验模块52,用于系统启动时,进入镜像校验区,通过镜像校验区的镜像校验代码对所述多重镜像进行校验。
[0069]启动模块53,用于当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动所述校验正确的镜像。
[0070]复位模块54,用于当所述多重镜像均校验失败时,将系统复位。
[0071]其中,所述镜像编译模块51具体用于:
[0072]预先设置多重镜像,所述多重镜像中的每重镜像均可实现完整的系统功能;
[0073]根据嵌入式系统和/或存储设备的存储空间,为每重镜像分配启动地址;
[0074]分别计算每重镜像的校验码,并将所述校验码存储至对应镜像中指定的位置上;
[0075]将所述多重镜像进行合并。
[0076]在本实施例中,预先根据实际需求,设置两重或以上的镜像。其中,每一重镜像均包含完整的系统软件,能实现完整的系统功能,使得系统选择其中任一重镜像时,能够运行完整的系统软件。
[0077]本实施例优选采用累加和校验算法计算每重镜像对应的校验码,并将所述校验代码预先存储在对应镜像指定的位置上,用作启动过程中镜像校验时判断镜像是否完整的依据。
[0078]进一步地,所述镜像校验代码通过汇编语言编写;并存储在镜像校验区中,所述镜像校验区位于存储空间的起始处。
[0079]本实施例中,所述镜像校验代码是通过汇编语言来编写的,存储在存储空间起始处设置的镜像校验区中,能够避开嵌入式系统的异常向量地址,不影响异常向量的响应处理。进一步地,所述镜像校验区占用的存储空间极小,有利于提高系统运行的可靠性。
[0080]在具体实现时,所述镜像校验模块52具体用于:
[0081]计算当前镜像对应的校验码;[0082]从当前镜像指定的位置中读取当前镜像预存的校验码,判断所述计算得到的校验码和读取到的所述预存的校验码是否相同;
[0083]若相同,则该镜像校验正确;否则,该镜像校验失败,计算下一重镜像对应的校验码,以进行下一重镜像的校验。
[0084]本发明实施例预先将系统打包成多个镜像,获得多重镜像,并为每重镜像分配启动地址;通过汇编语言编写所述多重镜像的校验代码,并存储在镜像校验区中。系统启动时,首先进入镜像校验区,执行镜像校验代码;当所述多重镜像中的任一重镜像校验正确时,则根据分配的启动地址启动该镜像;当所述多重镜像均校验失败时,将系统复位,从而提高了嵌入式系统运行的可靠性,尤其是存储设备不完全可靠的场合下嵌入式系统运行的可靠性,可降低存储设备不完全可靠而导致的返工返修成本,从而降低存储设备维护的成本。进一步地,所述镜像校验代码通过汇编语言实现,并且存储在存储空间起始处设置的镜像校验区中,所述镜像校验去占用的内存区域小,使得镜像校验过程不影响系统异常向量的响应处理。
[0085]本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括R0M/RAM、磁盘、光盘等。
[0086]以上所述仅为本发明的优选实施例而已,并不用于限制本发明。例如,各个模块只是按照功能逻辑进 行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可?’另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0087]凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于多重镜像的系统启动方法,其特征在于,所述方法包括: 镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能; 系统启动时,进入镜像校验区,通过镜像校验区的镜像校验代码对所述多重镜像进行校验; 当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动所述校验正确的镜像; 当所述多重镜像均校验失败时,将系统复位。
2.如权利要求1所述的基于多重镜像的系统启动方法,其特征在于,所述镜像编译时,为多重镜像中的每重镜像分配启动地址之后还包括: 分别计算每重镜像的校验码,并将计算的所述校验码存储至指定位置。
3.如权利要求1所述的基于多重镜像的系统启动方法,其特征在于,所述镜像校验代码通过汇编语言编写;并且存储在镜像校验区中,所述镜像校验区位于存储空间的起始处。
4.如权利要求1所 述的基于多重镜像的系统启动方法,其特征在于,所述执行镜像校验的步骤具体为: 计算当前镜像对应的校验码; 从当前镜像的指定位置中读取预存的校验码,判断所述计算得到的校验码和读取到的所述预存的校验码是否相同; 若相同,则该镜像校验正确;否则,该镜像校验失败,并计算下一重镜像对应的校验码,以进行下一重镜像的校验。
5.如权利要求2或4所述的基于多重镜像的系统启动方法,其特征在于,计算镜像对应的校验码时采用累加和校验算法。
6.一种基于多重镜像的系统启动装置,其特征在于,所述装置包括: 镜像编译模块,用于镜像编译时,为多重镜像中的每重镜像分配启动地址,所述多重镜像中的每重镜像均可实现完整的系统功能; 镜像校验模块,用于系统启动时,进入镜像校验区,通过镜像校验区的镜像校验代码对所述多重镜像进行校验; 启动模块,用于当所述多重镜像中的任一重镜像校验正确时,则根据分配的所述启动地址启动所述校验正确的镜像; 复位模块,用于当所述多重镜像均校验失败时,将系统复位。
7.如权利要求6所述的基于多重镜像的系统启动装置,其特征在于,镜像编译模块还用于: 分别计算每重镜像的校验码,并将计算的所述校验码存储至指定位置。
8.如权利要求6所述的基于多重镜像的系统启动装置,其特征在于,所述镜像校验代码通过汇编语言编写;并且存储至镜像校验区中,所述镜像校验区位于存储空间的起始处。
9.如权利要求6所述的基于多重镜像的系统启动装置,其特征在于,所述镜像校验模块具体用于: 计算当前镜像对应的校验码; 从当前镜像指定的位置中读取预存的校验码,判断所述计算得到的校验码和读取到的所述预存的校验码是否相同; 若相同,则该镜像校验正确;否则,该镜像校验失败,并计算下一重镜像对应的校验码,以进行下一重镜像的校验。
10.如权利要求7或9所述的基于多重镜像的系统启动装置,其特征在于,计算镜像对应的校验码时采用累 加和校验算法。
【文档编号】G06F9/445GK104035806SQ201410305786
【公开日】2014年9月10日 申请日期:2014年6月30日 优先权日:2014年6月30日
【发明者】陈保林, 沈浩 申请人:普联技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1