基于nandflash的启动加载方法和装置制造方法

文档序号:6619947阅读:162来源:国知局
基于nand flash的启动加载方法和装置制造方法
【专利摘要】本发明公开了一种基于NAND?FLASH的启动加载方法和装置。在本发明中,引导程序的可执行代码被分段存储在由Block0之后的多个连续Block构成的存储空间中,因而消除了单个Block的物理空间对可执行代码的限制;而且,存储空间的起始Block及Block数量均以配置信息的形式存放在可靠性最高的Block0中,因而能够确保分段存储的可执行代码的高可靠性寻址。而且,存储空间中的连续多个Block的物理空间之和可以大于可执行代码首次写入NAND?FLASH时的代码数据量大小,因而,存储空间也能够满足可执行代码由于升级更新而增加的代码数据量,从而不会因为可执行代码的代码数据量增加而重新进行存储空间的Block划分,相应地,也就无需更新Block0中记录的配置信息,进而实现了Block0在出厂后免更新。
【专利说明】基于NAND FLASH的启动加载方法和装置

【技术领域】
[0001]本发明涉及启动加载技术,特别涉及一种基于NAND FLASH(与非闪存)的启动加载方法和装置。

【背景技术】
[0002]Bootloader (启动加载)引导程序是CPU复位后首先需要被执行的一段代码,用以初始化CPU和周边外设,从而正确地启动操作系统。其中,Bootloader引导程序一般分为Stagel (第一阶段)和Stage2 (第二阶段)两部分;Stagel负责小系统初始化,主要包括CPU、Boot启动介质和内存初始化,以便于为Stage2的执行准备正确的环境;Stage2则负责基础硬件的初始化、为内核执行准备基本的软硬件坏境、提供符合规范的扩展菜单、实现增强的用户交互能力、并从文件系统的存储介质中加载并启动操作系统。
[0003]Bootloader引导程序的可执行代码都是保存在非易失存储介质中,如NORFLASH(或非闪存)、NAND FLASH、SPI (Serial Peripheral Interface,串行外设接口)FLASH等,这些可用于保存Bootloader引导程序的FLASH可称为Boot FLASH(启动闪存)。相应地,当CPU启动后,由集成在CPU内部、或独立于CPU之外的启动加载装置从Boot FLASH中读取Stage 1、以供CPU执行并引导CPU启动。
[0004]目前,NAND FLASH越来越频繁地被用为Boot FLASH。其中,NAND FLASH的物理空间是由多个Block(块)组成,其中的BlockO具有高可靠性、且不会出现坏块,因而Bootloader引导程序的Stagel可执行代码会保存在BlockO中,而从Blockl开始的至少一个Block中会保存Stagel的可执行代码的备份。
[0005]然而,在上述方案中,Stagel的可执行代码被限制在一个Block的物理空间内、通常为128KB,但随着硬件系统的不断升级,初始化的配置过程越来越复杂,Stagel的可执行代码的大小也会随之增加,这就导致一个Block的物理空间不足以保存Stagel的可执行代码。


【发明内容】

[0006]有鉴于此,本发明提供了一种基于NAND FLASH的启动加载方法和装置。
[0007]本发明提供的一种基于NAND FLASH的启动加载方法,
[0008]NAND FLASH中为引导程序的可执行代码分配有对应的存储空间,引导程序可执行代码在NAND FLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NAND FLASH的BlockO中,该存储空间包括BlockO之后的多个连续Block ;以及,该启动加载方法包括:
[0009]在CPU 开始从 NAND FLASH 启动时,读取 NAND FLASH 的 BlockO ;
[0010]在从BlockO中读取到配置信息后,从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于I ;
[0011]在完成对配置信息的解析后,从解析得到的起始Block开始连续读取Z个Block、且读取到的引导程序可执行代码用于引导CPU启动。
[0012]优选地,引导程序可执行代码对应的存储空间的所有Block的物理空间之和,大于该引导程序可执行代码的数据大小。
[0013]优选地,该启动加载方法进一步包括:对读取的引导程序可执行代码进行ECC纠错。
[0014]优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在缓存中以页为单位被执行ECC纠错。
[0015]优选地,引导程序可执行代码被复制为多份存储在NAND FLASH中,以及,从配置信息中解析得到的存储空间的起始Block及Block数量Z包括每份引导程序可执行代码对应的存储空间的起始Block及Block数量Z。
[0016]优选地,多份引导程序可执行代码分别对应的存储空间连续排列。
[0017]优选地,在完成对配置信息的解析后,先从解析得到位置最靠前的起始Block开始连续读取Z个Block。
[0018]优选地,该启动加载方法进一步包括:每当从当前的起始Block开始连续读取Z个Block后,对引导程序可执行代码进行坏块检测和数据校验;当检测到坏块或或数据校验失败时,跳转至解析得到的下一个起始Block开始连续读取Z个Block。
[0019]优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在汇总至RAM之后被执行坏块校验和数据校验。
[0020]本发明提供的一种基于NAND FLASH的启动加载装置,
[0021]引导程序可执行代码在NAND FLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NAND FLASH的BlockO中,该存储空间包括BlockO之后的多个连续Block ;以及,该启动加载装置包括NAND FLASH控制模块和配置信息解析模块,其中:
[0022]当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的BlockO ;
[0023]当从BlockO中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于I ;
[0024]在完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取Z个Block、且读取到的引导程序可执行代码用于引导CPU启动。
[0025]优选地,引导程序可执行代码对应的存储空间的所有Block的物理空间之和,大于该引导程序可执行代码的数据大小。
[0026]优选地,该启动加载装置进一步包括:ECC纠错模块,对读取的引导程序可执行代码进行ECC纠错。
[0027]优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在缓存中以页为单位被执行ECC纠错。
[0028]优选地,引导程序可执行代码被复制为多份存储在NAND FLASH中,以及,从配置信息中解析得到的存储空间的起始Block及Block数量Z包括每份引导程序可执行代码对应的存储空间的起始Block及Block数量Z。
[0029]优选地,多份引导程序可执行代码分别对应的存储空间连续排列。
[0030]优选地,在完成对配置信息的解析后,配置信息解析模块先从解析得到位置最靠前的起始Block开始连续读取Z个Block。
[0031]优选地,该启动加载装置进一步包括:坏块检测模块和数据校验模块;每当从当前的起始Block开始连续读取Z个Block后,坏块检测模块和数据校验模块分别对引导程序可执行代码进行坏块检测和数据校验;当检测到坏块或或数据校验失败时,NAND FLASH控制模块跳转至解析得到的下一个起始Block开始连续读取Z个Block。
[0032]优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在汇总至RAM之后被执行坏块校验和数据校验。
[0033]由此可见,在本发明中,引导程序可执行代码被分段存储在由BlockO之后的多个连续Block构成的存储空间中,因而消除了单个Block的物理空间对可执行代码的限制;而且,存储空间的起始Block及Block数量均以配置信息的形式存放在可靠性最高的BlockO中,因而能够确保分段存储的可执行代码的高可靠性寻址。
[0034]而且,存储空间中的连续多个Block的物理空间之和可以大于引导程序可执行代码首次写入NAND FLASH时的代码数据量大小,此时,就相当于为引导程序可执行代码的后续升级更新预留了空闲Block,因而,即便引导程序可执行代码的代码数据量由于升级更新而增加,预留的空闲Block也能够满足可执行代码的代码数据量增加,从而不会因为引导程序可执行代码的代码数据量增加而重新进行存储空间的Block划分,相应地,也就无需更新BlockO中记录的配置信息,进而实现了 BlockO在出厂后免更新。
[0035]另外,在本发明中,还可以对读取到的引导程序可执行代码进行ECC纠错,以提高启动加载的可靠性。
[0036]以及,在本发明中,NAND FLASH中所存放的引导程序可执行代码可以包括多份、且存储空间的Block排序最靠前的一份被优先读取,相应地,在读取Block时,还可以进一步引入坏块检测以及数据校验,当坏块检测以及数据校验中的任一环节失败时,可以直接跳转至下一个份引导程序可执行代码对应的连续多个Block,以实现对引导程序可执行代码的加载备份。

【专利附图】

【附图说明】
[0037]图1为本发明实施例中实现的启动加载的基本原理的不意图;
[0038]图2为本发明实施例中实现的启动加载的扩展原理的示意图;
[0039]图3为本发明实施例中基于NAND FLASH的启动加载方法的示例性流程示意图;
[0040]图4为本发明实施例中基于NAND FLASH的启动加载方法的扩展流程示意图;
[0041]图5为本发明实施例中基于NAND FLASH的启动加载装置的示例性结构示意图;
[0042]图6为本发明实施例中基于NAND FLASH的启动加载装置的优选结构示意图。

【具体实施方式】
[0043]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
[0044]在本实施例中,Bootloader引导程序的Stagel可执行代码可以被分段存储在由BlockO之后的多个连续Block构成的存储空间中,即,利用在多个Block中的分段存储来消除单个Block的物理空间对Stagel可执行代码的限制;而且,存储空间的起始Block及Block数量均可以以配置信息的形式存放在可靠性最高的BlockO中,以确保对分段存储的Stagel可执行代码的高可靠性寻址。
[0045]请参见图1,在NAND FLASH中,Block m至Block η构成Stagel可执行代码对应的存储空间,m为大于等于I的正整数、η为大于m的正整数,其中:
[0046]对于Block m至Block η构成的存储空间,其起始的Block m以及Block数量n_m+l均以配置信息的形式存放在BlockO ;
[0047]当CPU启动时,启动加载装置可以从BlockO中读取到配置信息,并解析得到上述存储空间的起始Block和Block数量,然后再从Block m开始读取Block m至Block η,此后,被读取到的Stagel可执行代码可以供CPU加载运行。
[0048]另外,为了提高CPU启动加载的可靠性,Stagel可执行代码可以被复制为多份存储在 NAND FLASH 中。
[0049]请参见图2,以Stagel可执行代码被复制为两份保存在NAND FLASH为例,在NANDFLASH中,Block m至Block η构成一份Stage I可执行代码对应的存储空间,Block p至Blockq构成另一份Stagel可执行代码对应的存储空间,m为大于等于I的正整数、η为大于m的正整数、P为大于η的正整数、q为大于P的正整数,其中:
[0050]对于Block m至Block η构成的存储空间,其起始的Block m以及Block数量n_m+l均以配置信息的形式存放在BlockO,同理,对于Block p至Block q构成的存储空间,其起始的Block p、以及Block数量q-ρ+Ι同样以配置信息的形式存放在BlockO ;其中,上述的Block数量n-m+1和q-ρ+Ι均可以统一地被表示为大于I的正整数Z。
[0051]当CPU启动时,启动加载装置可以从BlockO中读取到配置信息,并解析得到上述两个存储空间的起始Block和Block数量;
[0052]由于Block m至Block η位于Block p至Block q之前,因而,当CPU启动时,启动加载装置会优先读取Block m至Block η,即,在Block m至Block η构成的存储空间中保存的该份Stagel可执行代码会被作为主用的可执行代码而被启动加载装置优先读取、供CPU加载运行;
[0053]而对于在Block P至Block q构成的存储空间中保存的另一份Stagel可执行代码则可以作为备用的可执行代码,待读取主用的可执行代码出错时,例如坏块检测、数据校验失败,在Block P至Blockq构成的存储空间中保存的备用可执行代码再被启动加载装置读取。本实施例中,Block m至Block η构成的存储空间可以与Block P至Block q构成的存储空间连续排列,即,P可以等于n+1 ;并且,Stagel可执行代码可以仅在NAND FLASH中保存一份、或者在NAND FLASH中保存多于两份,但其实现原理不变。
[0054]并且,为了提高启动加载的可靠性,本实施例可以对读取到的代码数据进行ECC(Error Correcting Code,错误检查纠正)纠错。
[0055]另外,不论Block m至Block η构成的存储空间还是Block p至Block q构成的存储空间,其所有Block的物理空间之和可以大于Stagel可执行代码首次写入NAND FLASH时的代码数据量大小,此时,就相当于为Bootloader引导程序的Stagel可执行代码的后续升级更新预留了空闲Block,因而,即便Bootloader引导程序的Stagel可执行代码的代码数据量由于后续的升级更新而增加,存储空间中预留的空闲Block也能够满足Bootloader引导程序的Stagel可执行代码的代码数据量增加,从而不会因为Stagel可执行代码的代码数据量增加而重新进行存储空间的Block划分,相应地,也就无需更新BlockO中记录的配置信息,进而实现了 BlockO在出厂后免更新。
[0056]基于上述原理,本实施例提供了一种基于NAND FLASH的启动加载方法。
[0057]请参见图3,以Bootloader引导程序的Stagel可执行代码被复制为多份存储在NAND FLASH中为例,该启动加载方法包括由启动加载装置执行的如下步骤:
[0058]步骤301,在 CPU 开始从 NAND FLASH 启动时,读取 NAND FLASH 的 BlockO。
[0059]本实施例中,本步骤可以通过向NAND FLASH发送对应的读命令来实现。
[0060]步骤302,在从BlockO中读取到配置信息后,从配置信息中解析得到Stagel可执行代码对应的存储空间的起始Block及Block数量,即,解析得到每份Stagel可执行代码对应的存储空间的起始Block及Block数量。
[0061]步骤303,在完成对配置信息的解析后,从解析得到的起始Block开始连续读取相应数量的Block。
[0062]本实施例中,本步骤与步骤301的实现方式相同,同样是可以通过向NAND FLASH发送对应的读命令来实现。
[0063]步骤304,当开始连续读取相应数量的Block后,对读取到的Stagel可执行代码的代码数据进行ECC纠错。
[0064]本实施例中,从每个Block以页为单位读取Stagel可执行代码的代码数据,读取到的Stagel可执行代码的代码数据以页为单位被缓存汇总至与CPU连接的RAM中。相应地,Stagel可执行代码的代码数据可以在缓存中以页为单位执行ECC纠错。
[0065]至此,本流程结束,相应地,利用本流程成功读取到的Bootloader引导程序的Stagel可执行代码引导CPU启动。
[0066]如前文所述,为了提高CPU启动加载的可靠性,Stagel可执行代码可以被复制为多份存储在NAND FLASH中。针对Stagel可执行代码被复制为多份存储的情况,本实施例中的启动加载方法需要进行相应的扩展。
[0067]请参见图4,以Bootloader引导程序的Stagel可执行代码被复制为多份存储在NAND FLASH中为例,该启动加载方法包括由启动加载装置执行的如下步骤:
[0068]步骤401,在 CPU 开始从 NAND FLASH 启动时,读取 NAND FLASH 的 BlockO。
[0069]本实施例中,本步骤可以通过向NAND FLASH发送对应的读命令来实现。
[0070]步骤402,在从BlockO中读取到配置信息后,从配置信息中解析得到Stagel可执行代码对应的存储空间的起始Block及Block数量,即,解析得到每份Stagel可执行代码对应的存储空间的起始Block及Block数量。
[0071]步骤403,在完成对配置信息的解析后,从解析得到的起始Block开始连续读取相应数量的Block。
[0072]其中,当首次执行本步骤时,从解析得到位置最靠前的起始Block开始连续读取相应数量的Block,当再次执行本步骤时,则跳转至解析得到的下一个起始Block开始连续读取相应数量的Block。
[0073]本实施例中,本步骤与步骤401的实现方式相同,同样是可以通过向NAND FLASH发送对应的读命令来实现。
[0074]步骤404,当开始连续读取相应数量的Block后,对读取到的Stage I可执行代码的代码数据进行ECC纠错。
[0075]本实施例中,从每个Block以页为单位读取Stagel可执行代码的代码数据,读取到的Stagel可执行代码的代码数据以页为单位被缓存汇总至与CPU连接的RAM中。相应地,Stagel可执行代码的代码数据可以在缓存中以页为单位执行ECC纠错。
[0076]步骤405,对读取的代码数据进行坏块检测,若未检测到坏块则执行步骤406,否则返回步骤203。
[0077]步骤406,对读取的代码数据进行数据校验,若校验成功则结束本流程,否则返回步骤403。
[0078]本实施例中,上述的步骤405和406可以同时执行、也可以调换执行顺序,只要满足在未检测到坏块且数据校验成功时结束本流程、在检测到坏块或数据校验失败时返回步骤403即可。并且,由于读取到的Stagel可执行代码的代码数据能够以页为单位被读取并缓存、然后被汇总至与CPU连接的RAM中,因此,Stagel可执行代码的代码数据在汇总至RAM之后被上述的步骤405和406可以分别执行坏块校验和数据校验。
[0079]至此,本流程结束,相应地,利用本流程成功读取到的Bootloader引导程序的Stagel可执行代码引导CPU启动。以上是对本实施例中NAND FLASH的启动加载方法的详细说明。本实施例还提供了一种基于NAND FLASH的启动加载装置,该启动加载装置可以集成于CPU中、也可以独立于CPU之外单独存在,以下以该启动加载装置与CPU —体集成为例进行说明。
[0080]请参见图5,本实施例中基于NAND FLASH的启动加载装置包括NAND FLASH控制模块、配置信息解析模块、以及ECC纠错模块,其中,NAND FLASH控制模块为启动加载装置中的核心模块,NAND FLASH控制模块既负责发起对NAND FLASH的读操作、又负责其他模块的协调控制;ECC纠错模块则为可选的模块、而非必须包括在启动加载装置中的模块。
[0081]当CPU 开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH 的 BlockO。
[0082]实际应用中,NAND FLASH控制模块可以通过启动加载装置中的NAND FLASH接口向NAND FLASH发送对应的读命令、以实现对BlockO的读取。
[0083]当从BlockO中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到Stagel可执行代码对应的存储空间的起始Block 及 Block 数量。
[0084]当完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取相应数量的Block,读取到的引导程序可执行代码供引导CPU启动时使用。
[0085]当开始连续读取相应数量的Block后,ECC纠错模块在NAND FLASH控制模块的控制下对读取到的Stagel可执行代码的代码数据进行ECC纠错。
[0086]实际应用中,从每个Block都是以页为单位读取Stagel可执行代码的代码数据,并且,读取到的Stagel可执行代码的代码数据也会以页为单位被缓存、然后被汇总至与CPU连接的RAM中。相应地,Stagel可执行代码的代码数据可以在缓存中以页为单位被ECC纠错模块执行ECC纠错。
[0087]与方法部分同理,为了提高CPU启动加载的可靠性,Stagel可执行代码可以被复制为多份存储在NAND FLASH中,相应地,针对Stagel可执行代码被复制为多份存储的情况,本实施例中的启动加载装置需要进行相应的扩展。
[0088]请参见图6,本实施例中基于NAND FLASH的启动加载装置包括NAND FLASH控制模块、配置信息解析模块、ECC纠错模块、坏块检测模块、以及数据校验模块,其中,NAND FLASH控制模块为启动加载装置中的核心模块,NAND FLASH控制模块既负责发起对NAND FLASH的读操作、又负责其他模块的协调控制;ECC纠错模块则为可选的模块、而非必须包括在启动加载装置中的模块。
[0089]当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的BlockO。
[0090]实际应用中,NAND FLASH控制模块可以通过启动加载装置中的NAND FLASH接口向NAND FLASH发送对应的读命令、以实现对BlockO的读取。
[0091]当从BlockO中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到Stagel可执行代码对应的存储空间的起始Block 及 Block 数量。
[0092]其中,对于Bootloader引导程序的Stage I可执行代码被复制为多份存储在NANDFLASH中的情况,配置信息解析模块解析得到每份Stagel可执行代码对应的存储空间的起始Block及Block数量。
[0093]当完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取相应数量的Block,读取到的引导程序可执行代码供引导CPU启动时使用。
[0094]其中,对于Bootloader引导程序的Stage I可执行代码被复制为多份存储在NANDFLASH中的情况,当NAND FLASH控制模块首次发起对多个连续Block的读取时,从解析得到位置最靠前的起始Block开始连续读取相应数量的Block,当再次发起对多个连续Block的读取时,则跳转至解析得到的下一个起始Block开始连续读取相应数量的Block。NAND FLASH控制模块可以通过启动加载装置中的NAND FLASH接口向NANDFLASH发送对应的读命令,以实现对BlockO之后的连续多个Block的读取。
[0095]当开始连续读取相应数量的Block后,ECC纠错模块在NAND FLASH控制模块的控制下对读取到的Stagel可执行代码的代码数据进行ECC纠错。
[0096]实际应用中,从每个Block都是以页为单位读取Stagel可执行代码的代码数据,并且,读取到的Stagel可执行代码的代码数据也会以页为单位被缓存、然后被汇总至与(PU连接的RAM中。相应地,Stagel可执行代码的代码数据可以在缓存中以页为单位被ECC纠错模块执行ECC纠错。
[0097]以及,对于ECC纠错后的代码数据,还可以由坏块检测模块和数据校验模块在NAND FLASH控制模块的控制下分别进行坏块检测和数据校验;
[0098]若坏块检测模块未检测到坏块、且数据校验模块进行数据校验成功,则完成了对Stagel可执行代码的读取,并可以利用成功读取到的Bootloader引导程序的Stagel可执行代码引导CPU启动;
[0099]但若坏块检测模块检测到坏块、或数据校验模块进行的数据校验失败,则需要由NAND FLASH控制模块跳转至解析得到的下一个起始Block重新开始连续读取相应数量的Block。
[0100]由于读取到的Stagel可执行代码的代码数据能够以页为单位被读取并缓存、然后被汇总至与CPU连接的RAM中,因此,Stagel可执行代码的代码数据在汇总至RAM之后被上述的坏块检测模块和数据校验模块分别执行坏块校验和数据校验,若坏块检测模块未检测到坏块、且数据校验模块进行数据校验成功,则CPU通过访问RAM即可在Stagel可执行代码的引导下完成启动。
[0101]需要说明是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据具体情况忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
[0102]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种基于NAND FLASH的启动加载方法,其特征在于,引导程序可执行代码在NANDFLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NANDFLASH的BlockO中,该存储空间包括BlockO之后的多个连续Block ;以及,该启动加载方法包括: 在CPU开始从NAND FLASH启动时,读取NAND FLASH的BlockO ; 在从BlockO中读取到配置信息后,从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于I ; 在完成对配置信息的解析后,从解析得到的起始Block开始连续读取Z个Block、且读取到的引导程序可执行代码用于引导CPU启动。
2.根据权利要求1所述的启动加载方法,其特征在于,引导程序可执行代码对应的存储空间的所有Block的物理空间之和,大于该引导程序可执行代码的数据大小。
3.根据权利要求1所述的启动加载方法,其特征在于,该启动加载方法进一步包括: 对读取的引导程序可执行代码进行ECC纠错。
4.根据权利要求1至3中任一项所述的启动加载方法,其特征在于,引导程序可执行代码被复制为多份存储在NAND FLASH中,以及,从配置信息中解析得到的存储空间的起始Block及Block数量Z包括每份引导程序可执行代码对应的存储空间的起始Block及Block数量Z。
5.根据权利要求4所述的启动加载方法,其特征在于,在完成对配置信息的解析后,先从解析得到位置最靠前的起始Block开始连续读取Z个Block。
6.根据权利要求5所述的启动加载方法,其特征在于,该启动加载方法进一步包括: 每当从当前的起始Block开始连续读取Z个Block后,对引导程序可执行代码进行坏块检测和数据校验; 当检测到坏块或或数据校验失败时,跳转至解析得到的下一个起始Block开始连续读取 Z 个 Block。
7.一种基于NAND FLASH的启动加载装置,其特征在于,引导程序可执行代码在NANDFLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NANDFLASH的BlockO中,该存储空间包括BlockO之后的多个连续Block ;以及,该启动加载装置包括NAND FLASH控制模块和配置信息解析模块,其中: 当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的BlockO ;当从BlockO中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于I ; 在完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取Z个Block、且读取到的引导程序可执行代码用于引导CPU启动。
8.根据权利要求7所述的启动加载装置,其特征在于,引导程序可执行代码对应的存储空间的所有Block的物理空间之和,大于该引导程序可执行代码的数据大小。
9.根据权利要求7所述的启动加载装置,其特征在于,该启动加载装置进一步包括: ECC纠错模块,对读取的引导程序可执行代码进行ECC纠错。
10.根据权利要求7至9中任一项所述的启动加载装置,其特征在于,引导程序可执行代码被复制为多份存储在NAND FLASH中,以及,从配置信息中解析得到的存储空间的起始Block及Block数量Z包括每份引导程序可执行代码对应的存储空间的起始Block及Block数量Z。
11.根据权利要求10所述的启动加载装置,其特征在于,在完成对配置信息的解析后,配置信息解析模块先从解析得到位置最靠前的起始Block开始连续读取Z个Block。
12.根据权利要求11所述的启动加载装置,其特征在于,该启动加载装置进一步包括:坏块检测模块和数据校验模块; 每当从当前的起始Block开始连续读取Z个Block后,坏块检测模块和数据校验模块分别对引导程序可执行代码进行坏块检测和数据校验; 当检测到坏块或或数据校验失败时,NAND FLASH控制模块跳转至解析得到的下一个起始Block开始连续读 取Z个Block。
【文档编号】G06F9/445GK104077167SQ201410332155
【公开日】2014年10月1日 申请日期:2014年7月11日 优先权日:2014年7月11日
【发明者】赵志宇, 康向艳 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1