从一非就地执行内存进行开机的方法与装置的制作方法

文档序号:6562527阅读:230来源:国知局
专利名称:从一非就地执行内存进行开机的方法与装置的制作方法
技术领域
本发明有关于从一非就地执行内存进行开机的技术,尤指利用在开机过程中不具有错误校正能力的一开机引擎来从一非就地执行内存进行开机的方法与装置。
背景技术
NOR型闪存(flash)与NAND型闪存是两种常见的闪存架构。NOR型闪存是一种具备就地执行(Execution in Place,XIP)功能的内存(以下简称XIP内存),不仅支持开机且存储于其中的程序代码可直接执行而无需先加载到其它内存中。然而,NOR型闪存的缺点之一是容量过于受限。要存储图像与内容的话,NAND型闪存是较佳的选择,特别是对高阶的通讯装置而言。NAND型闪存优于NOR型闪存的地方,在于程序执行与数据写入速度较快且容量较高。由于NAND型闪存是一种非就地执行内存(non-XIPmemory,以下简称非XIP内存),因此要开机前必须先将开机程序代码映射(即加载)到一XIP内存当中,例如一动态存取内存(RAM)。非XIP内存常会面临位翻转(bit-flipping)的问题,即内存中的位会有反转或被记述成反转的情形。位翻转的问题会对中央处理单元造成严重的后果。因此,当要从一非XIP内存开机时,系统会于程序代码映射(Code Shadowing)的过程中进行错误检测(EDC)及错误校正(ECC)处理。
从一非XIP内存来开机的方式,可以完全用硬件方式来进行,也可以用软件搭配硬件的方式来实现。以硬件方式来进行的方法又称为开机引擎(bootengine)法。开机引擎会由现有的技术来暂停中央处理单元的运作(例如栅控输入中央处理单元的时间脉冲信号或传送一重置信号给中央处理单元等等),并将非XIP内存中所存储的一开机引导程序(boot loader code)映射至XIP内存中。接着,开机引擎会执行该开机引导程序以将存储于非XIP内存中的操作系统映像文件(OS image)映射到XIP内存中,并同时进行错误检测及错误校正的动作。程序代码映射、错误检测及错误校正等处理都是由开机引擎来进行。等到所有开机码都映射到XIP内存之后,开机引擎会重新使能中央处理单元,使中央处理单元执行XIP内存中所存储的操作系统映像文件。简言之,现有的开机引擎法是利用不同于以往的中央处理单元的一硬件组件(即开机引擎),来处理包括硬件初始化、程序代码映射、错误检测、错误校正及操作系统激活在内的所有开机程序。
至于软件开机法则会利用存储有开机引导程序的一只读存储器(ROM)。该只读存储器会映射到中央处理单元的地址空间的最前端,并包含有一重置程序代码(Reset Code)。中央处理单元会先执行该重置程序代码以对硬件进行初始化作业,接着再执行该只读存储器中的开机引导程序。该开机引导程序用来将非XIP内存中的操作系统映像文件映射至该XIP内存中。与前述的开机引擎的功能相类似,该中央处理单元也会执行该开机引导程序以同时进行错误检测及错误校正的程序。等到所有的映像文件都映射完成后,该中央处理单元便会开始执行该XIP内存中的操作系统映像文件。简言之,现有的软件开机法是利用一中央处理单元来处理包括硬件初始化、程序代码映射、错误检测、错误校正及操作系统激活在内的所有开机程序。
现有的软件开机法需要较长的时间才能完成开机程序,但实施起来较为容易。而现有的硬件开机法所需的开机时间较短,但由于需要使用复杂的错误检测/错误校正电路,故硬件复杂度较高。由上述可知,如何降低开机程序所需的时间又同时能减低硬件的复杂度,实为业界有待解决的问题。

发明内容
因此本发明的目的之一在于提供由一非就地执行内存进行开机的系统及方法,以解决上述问题。
本发明提供了一种开机系统的实施例,其包含有一非就地执行内存,用来存储多个操作系统映像文件以及一开机引导程序;一就地执行内存,耦接于该非就地执行内存;以及一程序代码映射模块,耦接于该非就地执行内存及该就地执行内存,用来将该开机引导程序映射至该就地执行内存中并加以执行,以对存储于该非就地执行内存中的至少一操作系统映像文件进行错误检测,若一特定操作系统映像文件经该错误检测判定为无误,则该程序代码映射模块会将该特定操作系统映像文件映射至该就地执行内存中,其中该程序代码映射模块在开机过程中不具有错误校正能力。
本发明另提供了一种从一非就地执行内存进行开机的方法的实施例,其中该非就地执行内存存储有多个操作系统映像文件及一开机引导程序。该方法包含有提供一就地执行内存;将该非就地执行内存中的该开机引导程序映射至该就地执行内存中;执行映射至该就地执行内存中的开机引导程序以对存储于该非就地执行内存中的至少一操作系统映像文件进行错误检测;以及若一特定操作系统映像文件经该错误检测判定为无误,则将该特定操作系统映像文件映射至该就地执行内存中;其中在开机过程中未进行任何错误校正程序。


图1为本发明的开机系统的第一实施例的示意图。
图2为描述本发明从一非XIP内存进行开机的方法的第一实施例的流程图。
图3为描述本发明从一非XIP内存进行开机的方法的第二实施例的流程图。
主要组件符号说明100开机系统
20中央处理单元30非就地执行内存40非XIP内存接口50开机引擎60就地执行内存70时间脉冲信号80与门具体实施方式
请参考图1,其是依据本发明的第一实施例所表示的一开机系统100的示意图。开机系统100用来从一非就地执行内存(以下简称非XIP内存)进行开机。在本实施例中,开机系统100包含有一中央处理单元20、一就地执行内存(以下简称XIP内存)60、一开机引擎50、一时间脉冲信号70、一非XIP内存30、以及一非XIP内存接口40。本实施例中的非XIP内存30以一非挥发性内存来实现,例如一NAND型序列式闪存,而XIP内存60则以一挥发性内存来实现,例如一随机存取内存(RAM),但此仅为一实施例,而非局限本发明的实际实施方式。非XIP内存30中会存储一开机引导程序以及多个操作系统映像文件(OS images)。由于非XIP内存30并不支持就地执行(Execution in Place)功能,故这些操作系统映像文件及该开机引导程序必须先映射至XIP内存60中才能加以执行。请注意,本实施例中的开机引擎50在开机过程中仅具有错误检测的能力,但无法进行错误校正的动作,故每一操作系统映像文件会复制成多个复制文件(duplicate),而每一复制文件都存储在非XIP内存30中的不同区块。将所述操作系统映像文件存储在非XIP内存30的不同区域中来作为备份映像文件的方式,可大幅降低前述位翻转的问题。这是因为非XIP内存30中同时存储有多个备份文件,故可增加完全无误的操作系统映像文件存在的机率。请注意,每一操作系统映像文件的备份文件个数可由系统设计者自行决定,而非开机系统100的限制条件。
当开机系统100初始化之后,开机引擎50便会被激活,以将该开机引导程序映射至XIP内存60中。在开机过程中,开机引擎50会利用现有的技术来暂停中央处理单元20的运作,例如,开机引擎50可利用栅控时间脉冲的方式来暂停中央处理单元的运作。如图1所示,本实施例中利用一与门(AND gate)80来作为时间脉冲栅控单元。因此,只要开机引擎50输出一逻辑低信号(亦即“0”)至与门80,与门80的输出便会被迫变成“0”,进而栅除或隔绝中央处理单元20的时间脉冲输入。一旦开机引擎50输出逻辑高信号(亦即“1”)时,中央处理单元20又会重新激活。请注意,如所属技术领域中具有通常知识者所知,前述的时间脉冲栅控单元也可用其它逻辑栅来实现,图1中的与门80仅为用来方便说明的一实施例。
接着,开机引擎50会执行映射至XIP内存60中的该开机引导程序,以对所选定的一操作系统映像文件进行错误检测的动作,并将该选定的操作系统映像文件映射至XIP内存60中。开机引擎50会对非XIP内存30中存储一第一操作系统映像文件的一第一区块(即一预设区块)进行前述的动作。在本实施例中,开机引擎50在开机过程中仅具有错误检测的能力,而无法进行错误校正处理。倘若该错误检测未检测出任何错误,则该第一操作系统映像文件便会被映射至XIP内存60中,以作为一检测无误的操作系统映像文件。然而,若该错误检测发现有错误存在,由于开机引擎50无法进行错误校正处理,故开机引擎50会对非XIP内存30中存储该第一操作系统映像文件的一第一复制文件的区块进行错误检测。倘若该第一复制文件也被检测出错误,则开机引擎50会再对非XIP内存30中存储该第一操作系统映像文件的一第二复制文件的区块进行错误检测。将操作系统映像文件进行多次备份的方式可大幅降低该操作系统映像文件内容出错的可能性。一旦该操作系统映像文件的其中一复制文件被检测为正确无误,则该检测无误的复制文件便会被映射至XIP内存60中。简言的,开机引擎50会重复进行错误检测的动作,以找到完全无误的操作系统映像文件,并将其映射至XIP内存60。此时,中央处理单元20会被激活,以便开始执行映射于XIP内存60当中的操作系统映像文件。
在一较佳实施例中,开机引擎50并不具有用来进行错误校正的硬件,故可大幅降低硬件的复杂度。然而,在另一实施例中,开机引擎50仍可具备错误校正的能力,但会在开机程序当中将其错误校正硬件的功能关闭(disabled)。如此一来,前述的映像文件映射程序仍可正常进行,故这类的开机引擎架构仍属于本发明的范围。此外,图1中所示的非XIP内存接口40内建(embedded)于开机引擎50中,并耦接于非XIP内存30。开机引擎50与非XIP内存30两者间透过非XIP内存接口40来进行数据交流。实际上,如所属技术领域中具有通常知识者所熟知,XIP内存接口也可以是位于开机引擎50与非XIP内存30间的一独立组件,而不限定于要内建在开机引擎50中。
本发明的第二实施例考虑到当一个操作系统映像文件中有错误存在时,便必须舍弃(discard)整个操作系统映像文件的问题。一般而言,操作系统映像文件愈大,被检测出错误的机会也愈高。假使一操作系统映像文件中的最后一小部分无法通过错误检测,便必须将整个操作系统映像文件包含已顺利通过错误检测的先前部分都舍弃,这会造成开机引擎50耗费过多的时间在进行错误检测的动作上。因此,在本发明的开机系统100的第二实施例中,每一操作系统映像文件都会再划分成多个部分,且每一部分都会复制成数个复制数据。所有的复制数据会被存储在非XIP内存30中的不同区域。本实施例的错误检测程序会对一操作系统映像文件的多个部分逐一进行错误检测,被检测出有误的部分会被舍弃,而检测无误的部分则会被映射至XIP内存60中。
举例而言,倘若有一操作系统映像文件被划分成十个部分,而其中有两个部分被检测出有错误存在,则其它八个检测无误的部分会被映射至XIP内存60中。开机引擎50会进一步对该两个检测有误部分的复制数据进行错误检测,而错误检测的方式与前述实施例相类似。即,开机引擎50会对非XIP内存30中存储该操作系统映像文件的一复制文件的区块进行错误检测。在本实施例中,开机引擎50仅需对与该两个检测有误部分相对应的复制数据进行错误检测即可,而无须对整个操作系统映像文件都进行错误检测。若该两个检测有误部分的复制数据经检测无误,便会被映射至XIP内存60中。由这样的方式,可大幅节省开机引擎50执行错误检测所需的时间。
请参考图2,其表示本发明从一非XIP内存进行开机的方法的第一实施例的流程图。图2中的步骤由前述的开机系统100所执行,具体步骤如下步骤200开始。
步骤201初始化系统。
步骤202映射开机引导程序至XIP内存。
步骤203执行映射至该XIP内存中的开机引导程序。
步骤204对非XIP内存中存储有操作系统映像文件的区块进行处理。
步骤205对指定区块中的操作系统映像文件进行错误检测,并将其映射至XIP内存。
步骤206判断是否检测出错误。若检测出错误,则进行步骤207;否则,进行步骤210。
步骤207判断该指定区块是否为存储该操作系统映像文件的最后一区块。若该指定区块为最后一区块,则进行步骤208;否则,进行步骤209。
步骤208开机失败。进行步骤213。
步骤209对存储有该操作系统映像文件的下一区块进行处理,并回到步骤205。
步骤210判断程序代码映射程序是否完成。若已完成,则进行步骤211;否则,回到步骤205。
步骤211激活中央处理单元。
步骤212完成开机。
步骤213结束。
当整个流程开始后(步骤200),开机系统100会进行初始化动作(步骤201),而开机引擎50则会将该开机引导程序映射至XIP内存中(步骤202)。接着,开机引擎50会执行该开机引导程序以对非XIP内存中的一操作系统映像文件进行错误检测及程序代码映射程序(步骤203)。开机引擎50会对非XIP内存中存储有操作系统映像文件的一区块进行处理(步骤204),并开始对该操作系统映像文件进行错误检测及映射该操作系统映像文件至该非XIP内存(步骤205)。倘若检测出错误(步骤206),开机系统100会先判断所指定的区块是否为包含该操作系统映像文件的最后一区块、即是否已无其它的复制文件存在(步骤207)。若该指定区块为包含该操作系统映像文件的最后一区块,则代表开机失败(步骤208)。若该非XIP内存中还有其它尚未存取的操作系统映像文件的复制文件,则开机系统100会对下一个复制文件进行处理(步骤209),以对该复制文件重新进行程序代码映射及错误检测的动作(步骤205)。若检测不出任何错误存在,开机系统100会判断该程序代码映射程序是否已完成(步骤210)。若还没完成,则会继续对该操作系统映像文件进行错误检测及程序代码映射的动作(步骤205)。若程序代码映射程序已完成、即经检测无误的一操作系统映像文件已顺利映射至该XIP内存中,则开机系统100会激活中央处理单元20(步骤211)。此时,便完成开机的程序(212),而结束整个流程(步骤213)。
请参考图3,其表示本发明从一非XIP内存进行开机的方法的第二实施例的流程图。图3中的步骤由前述的开机系统100所执行,具体步骤如下步骤300开始。
步骤301初始化系统。
步骤302映射开机引导程序至XIP内存。
步骤303执行映射至该XIP内存中的开机引导程序。
步骤304对非XIP内存中存储有操作系统映像文件的区块进行处理。
步骤305对指定的操作系统映像文件的多个部分逐一进行错误检测,并将其逐一映射至XIP内存。
步骤306判断是否检测出错误。若检测出错误,则进行步骤312;否则,进行步骤307。
步骤307纪录此一部分已顺利映射至该XIP内存。
步骤308判断该操作系统映像文件的所有部分是否都已完成错误检测。若都已完成,则进行步骤309;否则,进行步骤315。
步骤309判断该操作系统映像文件的所有部分是否都已顺利完成映射。若都已完成,则进行步骤310;否则,进行步骤313。
步骤310激活中央处理单元。
步骤311完成开机。进行步骤317。
步骤312判断指定的部分是否为该操作系统映像文件的最后一部分。若指定的部分为最后一部分,则进行步骤313;否则,进行步骤315。
步骤313判断指定的区块是否为存储该操作系统映像文件的最后一区块。若该指定区块为最后一区块,则进行步骤316;否则,进行步骤314。
步骤314对存储有该操作系统映像文件的下一区块进行处理,并进行步骤305。
步骤315对该操作系统映像文件的下一部分进行处理,并进行步骤305。
步骤316开机失败。
步骤317结束。
当整个流程开始后(步骤300),开机系统100会进行初始化动作(步骤301),而开机引擎50则会将该开机引导程序映射至XIP内存中(步骤302)。接着,开机引擎50会执行该开机引导程序(步骤303),并开始对非XIP内存中存储有操作系统映像文件的一区块进行处理(步骤304)。开机引擎50会对该操作系统映像文件的多个部分逐一进行错误检测,并将该多个部分逐一映射至该非XIP内存(步骤305)。倘若检测出错误(步骤306),开机系统100会判断指定的部分是否为当前指定的该操作系统映像文件的最后一部分(步骤312)。若该指定的部分为最后一部分,开机系统100会判断指定的区块是否为存储该操作系统映像文件的最后一区块、即是否已无其它的复制文件存在(步骤313)。倘若已无其它复制文件,则代表开机失败(步骤316)。倘若该指定部分并非该操作系统映像文件的最后一部分,开机系统100会对该操作系统映像文件的下一部分进行处理(步骤315),以对该部分进行程序代码映射及错误检测的程序(步骤305)。若该指定部分已是该操作系统映像文件的最后一部分,但该非XIP内存中还有该操作系统映像文件的其它复制文件尚未存取,则开机系统100会对下一个复制文件进行处理(步骤314)。若步骤306中检测不出任何错误存在,开机系统100会判断该部分是否已顺利映射至该XIP内存(步骤307)。接着,开机系统100会判断该操作系统映像文件的所有部分是否都已完成错误检测(步骤308)。若尚未全部完成,开机系统100会继续进行步骤315。若该操作系统映像文件的所有部分都已完成错误检测,开机系统100会判断该操作系统映像文件的所有部分是否都已顺利映射完成(步骤309)。若还没完成,则会进行步骤313。若该操作系统映像文件的所有部分都已顺利映射至该XIP内存,则开机系统100会激活中央处理单元20(步骤310)。此时,便完成了开机的程序(311),而结束整个流程(步骤317)。
由上述可知,前述开机系统的优点之一,在于所使用的开机引擎于开机过程中只需具有错误检测的能力即可,而无须具备错误校正的功能,故可大幅降低硬件的复杂度。前述开机系统的另一项优点,则是因每一操作系统映像文件都会有多个复制文件,故可降低错误发生的机率。此外,在前述的第二实施例当中,每一操作系统映像文件划分成多个部分,故只需对该操作系统映像文件的一部分进行错误检测,可简化错误检测的程序,并可避免因局部的错误而舍弃整个操作系统映像文件的情况。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求范围所做的均等变化与修饰,都应属本发明的涵盖范围。
权利要求
1.一种开机系统,其包含有一非就地执行内存,用来存储多个操作系统映像文件以及一开机引导程序;一就地执行内存,耦接于所述非就地执行内存;以及一程序代码映射模块,耦接于所述非就地执行内存及所述就地执行内存,用来将所述开机引导程序映射至所述就地执行内存中并加以执行,以对存储于所述非就地执行内存中的至少一操作系统映像文件进行错误检测,若一特定操作系统映像文件经所述错误检测判定为无误,则所述程序代码映射模块会将所述特定操作系统映像文件映射至所述就地执行内存中,其中所述程序代码映射模块在开机过程中不具有错误校正能力。
2.如权利要求1所述的开机系统,其特征在于,存储于所述非就地执行内存中的所述操作系统映像文件包含一来源映像文件与多个该来源映像文件的复制文件。
3.如权利要求2所述的开机系统,其特征在于,所述程序代码映射模块会对存储于所述非就地执行内存中的一操作系统映像文件进行错误检测,而若所述操作系统映像文件未通过所述错误检测,则所述程序代码映射模块会对所述操作系统映像文件的一复制文件进行错误检测。
4.如权利要求2所述的开机系统,其特征在于,每一操作系统映像文件另区分成多个部分,而所述程序代码映射模块会逐一对所述多个部分进行错误检测。
5.如权利要求4所述的开机系统,其特征在于,若一操作系统映像文件中有一特定部分未通过所述错误检测,所述程序代码映射模块会将所述操作系统映像文件中其它没有错误的部分映射至所述就地执行内存中,并对所述特定部分的至少一复制数据进行错误检测,以及将对应于所述特定部分的一检测无误的复制数据映射至所述就地执行内存中。
6.如权利要求1所述的开机系统,其特征在于,另包含有一中央处理单元,耦接于所述就地执行内存,用来执行映射至所述就地执行内存中的操作系统映像文件,其中所述程序代码映射模块为一开机引擎。
7.如权利要求1所述的开机系统,其特征在于,所述程序代码映射模块为一中央处理单元。
8.如权利要求1所述的开机系统,其特征在于,所述非就地执行内存为一NAND型闪存。
9.如权利要求8所述的开机系统,其特征在于,所述NAND型闪存为一序列式闪存。
10.如权利要求1所述的开机系统,其特征在于,所述程序代码映射模块不具备错误校正能力。
11.一种从一非就地执行内存进行开机的方法,该非就地执行内存存储有多个操作系统映像文件及一开机引导程序,所述方法包含有提供一就地执行内存;将所述非就地执行内存中的所述开机引导程序映射至所述就地执行内存中;执行映射至所述就地执行内存中的开机引导程序以对存储于所述非就地执行内存中的至少一操作系统映像文件进行错误检测;以及若一特定操作系统映像文件经所述错误检测判定为无误,则将所述特定操作系统映像文件映射至所述就地执行内存中;其中在开机过程中未进行任何错误校正程序。
12.如权利要求11所述的方法,其特征在于,存储于所述非就地执行内存中的所述操作系统映像文件包含一来源映像文件与多个所述来源映像文件的复制文件。
13.如权利要求12所述的方法,其特征在于,对至少一操作系统映像文件进行错误检测的步骤包含有若一操作系统映像文件未通过所述错误检测,则对所述操作系统映像文件的一复制文件进行错误检测。
14.如权利要求13所述的方法,其特征在于,每一操作系统映像文件另区分成多个部分,而对所述操作系统映像文件进行错误检测的步骤包含有对所述多个部分逐一进行错误检测。
15.如权利要求14所述的方法,其特征在于,另包含有若一操作系统映像文件中有一特定部分未通过所述错误检测,则将所述操作系统映像文件中其它没有错误的部分映射至所述就地执行内存中;对所述特定部分的至少一复制数据进行错误检测;以及将对应于所述特定部分的一检测无误的复制数据映射至所述就地执行内存中。
16.如权利要求12所述的方法,其特征在于,所述非就地执行内存系为一NAND型闪存。
17.如权利要求16所述的方法,其特征在于,所述NAND型闪存系为一序列式闪存。
全文摘要
本发明提供了从一非就地执行内存进行开机的方法与装置,其利用不具有错误校正功能的一开机引擎来从一非就地执行内存进行开机。该装置包含有一非就地执行内存,用来存储多个操作系统映像文件以及一开机引导程序;一就地执行内存;以及一程序代码映射模块,用来将该开机引导程序映射至该就地执行内存中并加以执行,以对该非就地执行内存中的至少一操作系统映像文件进行错误检测,若一特定操作系统映像文件经该检测无误,则将该特定操作系统映像文件映射至该就地执行内存中,其中该程序代码映射模块在开机过程中不具有错误校正能力。
文档编号G06F11/36GK101042654SQ20061014312
公开日2007年9月26日 申请日期2006年11月1日 优先权日2006年3月23日
发明者赖明祥, 雷永群 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1