CN104077167A - 基于nand flash的启动加载方法和装置 - Google Patents
基于nand flash的启动加载方法和装置 Download PDFInfo
- Publication number
- CN104077167A CN104077167A CN201410332155.5A CN201410332155A CN104077167A CN 104077167 A CN104077167 A CN 104077167A CN 201410332155 A CN201410332155 A CN 201410332155A CN 104077167 A CN104077167 A CN 104077167A
- Authority
- CN
- China
- Prior art keywords
- block
- executable code
- nand flash
- configuration information
- storage space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于NAND FLASH的启动加载方法和装置。在本发明中,引导程序的可执行代码被分段存储在由Block0之后的多个连续Block构成的存储空间中,因而消除了单个Block的物理空间对可执行代码的限制;而且,存储空间的起始Block及Block数量均以配置信息的形式存放在可靠性最高的Block0中,因而能够确保分段存储的可执行代码的高可靠性寻址。而且,存储空间中的连续多个Block的物理空间之和可以大于可执行代码首次写入NAND FLASH时的代码数据量大小,因而,存储空间也能够满足可执行代码由于升级更新而增加的代码数据量,从而不会因为可执行代码的代码数据量增加而重新进行存储空间的Block划分,相应地,也就无需更新Block0中记录的配置信息,进而实现了Block0在出厂后免更新。
Description
技术领域
本发明涉及启动加载技术,特别涉及一种基于NAND FLASH(与非闪存)的启动加载方法和装置。
背景技术
Bootloader(启动加载)引导程序是CPU复位后首先需要被执行的一段代码,用以初始化CPU和周边外设,从而正确地启动操作系统。其中,Bootloader引导程序一般分为Stage1(第一阶段)和Stage2(第二阶段)两部分;Stage1负责小系统初始化,主要包括CPU、Boot启动介质和内存初始化,以便于为Stage2的执行准备正确的环境;Stage2则负责基础硬件的初始化、为内核执行准备基本的软硬件坏境、提供符合规范的扩展菜单、实现增强的用户交互能力、并从文件系统的存储介质中加载并启动操作系统。
Bootloader引导程序的可执行代码都是保存在非易失存储介质中,如NOR FLASH(或非闪存)、NAND FLASH、SPI(Serial Peripheral Interface,串行外设接口)FLASH等,这些可用于保存Bootloader引导程序的FLASH可称为Boot FLASH(启动闪存)。相应地,当CPU启动后,由集成在CPU内部、或独立于CPU之外的启动加载装置从Boot FLASH中读取Stage1、以供CPU执行并引导CPU启动。
目前,NAND FLASH越来越频繁地被用为Boot FLASH。其中,NAND FLASH的物理空间是由多个Block(块)组成,其中的Block0具有高可靠性、且不会出现坏块,因而Bootloader引导程序的Stage1可执行代码会保存在Block0中,而从Block1开始的至少一个Block中会保存Stage1的可执行代码的备份。
然而,在上述方案中,Stage1的可执行代码被限制在一个Block的物理空间内、通常为128KB,但随着硬件系统的不断升级,初始化的配置过程越来越复杂,Stage1的可执行代码的大小也会随之增加,这就导致一个Block的物理空间不足以保存Stage1的可执行代码。
发明内容
有鉴于此,本发明提供了一种基于NAND FLASH的启动加载方法和装置。
本发明提供的一种基于NAND FLASH的启动加载方法,
NAND FLASH中为引导程序的可执行代码分配有对应的存储空间,引导程序可执行代码在NAND FLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NAND FLASH的Block0中,该存储空间包括Block0之后的多个连续Block;以及,该启动加载方法包括:
在CPU开始从NAND FLASH启动时,读取NAND FLASH的Block0;
在从Block0中读取到配置信息后,从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于1;
在完成对配置信息的解析后,从解析得到的起始Block开始连续读取Z个Block、且读取到的引导程序可执行代码用于引导CPU启动。
优选地,引导程序可执行代码对应的存储空间的所有Block的物理空间之和,大于该引导程序可执行代码的数据大小。
优选地,该启动加载方法进一步包括:对读取的引导程序可执行代码进行ECC纠错。
优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在缓存中以页为单位被执行ECC纠错。
优选地,引导程序可执行代码被复制为多份存储在NAND FLASH中,以及,从配置信息中解析得到的存储空间的起始Block及Block数量Z包括每份引导程序可执行代码对应的存储空间的起始Block及Block数量Z。
优选地,多份引导程序可执行代码分别对应的存储空间连续排列。
优选地,在完成对配置信息的解析后,先从解析得到位置最靠前的起始Block开始连续读取Z个Block。
优选地,该启动加载方法进一步包括:每当从当前的起始Block开始连续读取Z个Block后,对引导程序可执行代码进行坏块检测和数据校验;当检测到坏块或或数据校验失败时,跳转至解析得到的下一个起始Block开始连续读取Z个Block。
优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在汇总至RAM之后被执行坏块校验和数据校验。
本发明提供的一种基于NAND FLASH的启动加载装置,
引导程序可执行代码在NAND FLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NAND FLASH的Block0中,该存储空间包括Block0之后的多个 连续Block;以及,该启动加载装置包括NAND FLASH控制模块和配置信息解析模块,其中:
当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的Block0;
当从Block0中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于1;
在完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取Z个Block、且读取到的引导程序可执行代码用于引导CPU启动。
优选地,引导程序可执行代码对应的存储空间的所有Block的物理空间之和,大于该引导程序可执行代码的数据大小。
优选地,该启动加载装置进一步包括:ECC纠错模块,对读取的引导程序可执行代码进行ECC纠错。
优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在缓存中以页为单位被执行ECC纠错。
优选地,引导程序可执行代码被复制为多份存储在NAND FLASH中,以及,从配置信息中解析得到的存储空间的起始Block及Block数量Z包括每份引导程序可执行代码对应的存储空间的起始Block及Block数量Z。
优选地,多份引导程序可执行代码分别对应的存储空间连续排列。
优选地,在完成对配置信息的解析后,配置信息解析模块先从解析得到位置最靠前的起始Block开始连续读取Z个Block。
优选地,该启动加载装置进一步包括:坏块检测模块和数据校验模块;每当从当前的起始Block开始连续读取Z个Block后,坏块检测模块和数据校验模块分别对引导程序可执行代码进行坏块检测和数据校验;当检测到坏块或或数据校验失败时,NAND FLASH控制模块跳转至解析得到的下一个起始Block开始连续读取Z个Block。
优选地,读取到的引导程序可执行代码以页为单位被缓存、然后被汇总至与CPU连接的RAM中,其中,引导程序可执行代码在汇总至RAM之后被执行坏块校验和数据校验。
由此可见,在本发明中,引导程序可执行代码被分段存储在由Block0之后的多个连续Block构成的存储空间中,因而消除了单个Block的物理空间对可执行代码的限制;而且,存储空间的起始Block及Block数量均以配置信息的形式存放在可靠性最高的Block0中,因而能够确保分段存储的可执行代码的高可靠性寻址。
而且,存储空间中的连续多个Block的物理空间之和可以大于引导程序可执行代码首次 写入NAND FLASH时的代码数据量大小,此时,就相当于为引导程序可执行代码的后续升级更新预留了空闲Block,因而,即便引导程序可执行代码的代码数据量由于升级更新而增加,预留的空闲Block也能够满足可执行代码的代码数据量增加,从而不会因为引导程序可执行代码的代码数据量增加而重新进行存储空间的Block划分,相应地,也就无需更新Block0中记录的配置信息,进而实现了Block0在出厂后免更新。
另外,在本发明中,还可以对读取到的引导程序可执行代码进行ECC纠错,以提高启动加载的可靠性。
以及,在本发明中,NAND FLASH中所存放的引导程序可执行代码可以包括多份、且存储空间的Block排序最靠前的一份被优先读取,相应地,在读取Block时,还可以进一步引入坏块检测以及数据校验,当坏块检测以及数据校验中的任一环节失败时,可以直接跳转至下一个份引导程序可执行代码对应的连续多个Block,以实现对引导程序可执行代码的加载备份。
附图说明
图1为本发明实施例中实现的启动加载的基本原理的示意图;
图2为本发明实施例中实现的启动加载的扩展原理的示意图;
图3为本发明实施例中基于NAND FLASH的启动加载方法的示例性流程示意图;
图4为本发明实施例中基于NAND FLASH的启动加载方法的扩展流程示意图;
图5为本发明实施例中基于NAND FLASH的启动加载装置的示例性结构示意图;
图6为本发明实施例中基于NAND FLASH的启动加载装置的优选结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
在本实施例中,Bootloader引导程序的Stage1可执行代码可以被分段存储在由Block0之后的多个连续Block构成的存储空间中,即,利用在多个Block中的分段存储来消除单个Block的物理空间对Stage1可执行代码的限制;而且,存储空间的起始Block及Block数量均可以以配置信息的形式存放在可靠性最高的Block0中,以确保对分段存储的Stage1可执行代码的高可靠性寻址。
请参见图1,在NAND FLASH中,Block m至Block n构成Stage1可执行代码对应的存储空间,m为大于等于1的正整数、n为大于m的正整数,其中:
对于Block m至Block n构成的存储空间,其起始的Block m以及Block数量n-m+1均以配置信息的形式存放在Block0;
当CPU启动时,启动加载装置可以从Block0中读取到配置信息,并解析得到上述存储空间的起始Block和Block数量,然后再从Block m开始读取Block m至Block n,此后,被读取到的Stage1可执行代码可以供CPU加载运行。
另外,为了提高CPU启动加载的可靠性,Stage1可执行代码可以被复制为多份存储在NAND FLASH中。
请参见图2,以Stage1可执行代码被复制为两份保存在NAND FLASH为例,在NAND FLASH中,Block m至Block n构成一份Stage1可执行代码对应的存储空间,Block p至Block q构成另一份Stage1可执行代码对应的存储空间,m为大于等于1的正整数、n为大于m的正整数、p为大于n的正整数、q为大于p的正整数,其中:
对于Block m至Block n构成的存储空间,其起始的Block m以及Block数量n-m+1均以配置信息的形式存放在Block0,同理,对于Block p至Block q构成的存储空间,其起始的Block p、以及Block数量q-p+1同样以配置信息的形式存放在Block0;其中,上述的Block数量n-m+1和q-p+1均可以统一地被表示为大于1的正整数Z。
当CPU启动时,启动加载装置可以从Block0中读取到配置信息,并解析得到上述两个存储空间的起始Block和Block数量;
由于Block m至Block n位于Block p至Block q之前,因而,当CPU启动时,启动加载装置会优先读取Block m至Block n,即,在Block m至Block n构成的存储空间中保存的该份Stage1可执行代码会被作为主用的可执行代码而被启动加载装置优先读取、供CPU加载运行;
而对于在Block p至Block q构成的存储空间中保存的另一份Stage1可执行代码则可以作为备用的可执行代码,待读取主用的可执行代码出错时,例如坏块检测、数据校验失败,在Block p至Block q构成的存储空间中保存的备用可执行代码再被启动加载装置读取。本实施例中,Block m至Block n构成的存储空间可以与Block p至Block q构成的存储空间连续排列,即,p可以等于n+1;并且,Stage1可执行代码可以仅在NAND FLASH中保存一份、或者在NAND FLASH中保存多于两份,但其实现原理不变。
并且,为了提高启动加载的可靠性,本实施例可以对读取到的代码数据进行ECC(Error Correcting Code,错误检查纠正)纠错。
另外,不论Block m至Block n构成的存储空间还是Block p至Block q构成的存储 空间,其所有Block的物理空间之和可以大于Stage1可执行代码首次写入NAND FLASH时的代码数据量大小,此时,就相当于为Bootloader引导程序的Stage1可执行代码的后续升级更新预留了空闲Block,因而,即便Bootloader引导程序的Stage1可执行代码的代码数据量由于后续的升级更新而增加,存储空间中预留的空闲Block也能够满足Bootloader引导程序的Stage1可执行代码的代码数据量增加,从而不会因为Stage1可执行代码的代码数据量增加而重新进行存储空间的Block划分,相应地,也就无需更新Block0中记录的配置信息,进而实现了Block0在出厂后免更新。
基于上述原理,本实施例提供了一种基于NAND FLASH的启动加载方法。
请参见图3,以Bootloader引导程序的Stage1可执行代码被复制为多份存储在NAND FLASH中为例,该启动加载方法包括由启动加载装置执行的如下步骤:
步骤301,在CPU开始从NAND FLASH启动时,读取NAND FLASH的Block0。
本实施例中,本步骤可以通过向NAND FLASH发送对应的读命令来实现。
步骤302,在从Block0中读取到配置信息后,从配置信息中解析得到Stage1可执行代码对应的存储空间的起始Block及Block数量,即,解析得到每份Stage1可执行代码对应的存储空间的起始Block及Block数量。
步骤303,在完成对配置信息的解析后,从解析得到的起始Block开始连续读取相应数量的Block。
本实施例中,本步骤与步骤301的实现方式相同,同样是可以通过向NAND FLASH发送对应的读命令来实现。
步骤304,当开始连续读取相应数量的Block后,对读取到的Stage1可执行代码的代码数据进行ECC纠错。
本实施例中,从每个Block以页为单位读取Stage1可执行代码的代码数据,读取到的Stage1可执行代码的代码数据以页为单位被缓存汇总至与CPU连接的RAM中。相应地,Stage1可执行代码的代码数据可以在缓存中以页为单位执行ECC纠错。
至此,本流程结束,相应地,利用本流程成功读取到的Bootloader引导程序的Stage1可执行代码引导CPU启动。
如前文所述,为了提高CPU启动加载的可靠性,Stage1可执行代码可以被复制为多份存储在NAND FLASH中。针对Stage1可执行代码被复制为多份存储的情况,本实施例中的启动加载方法需要进行相应的扩展。
请参见图4,以Bootloader引导程序的Stage1可执行代码被复制为多份存储在NAND FLASH中为例,该启动加载方法包括由启动加载装置执行的如下步骤:
步骤401,在CPU开始从NAND FLASH启动时,读取NAND FLASH的Block0。
本实施例中,本步骤可以通过向NAND FLASH发送对应的读命令来实现。
步骤402,在从Block0中读取到配置信息后,从配置信息中解析得到Stage1可执行代码对应的存储空间的起始Block及Block数量,即,解析得到每份Stage1可执行代码对应的存储空间的起始Block及Block数量。
步骤403,在完成对配置信息的解析后,从解析得到的起始Block开始连续读取相应数量的Block。
其中,当首次执行本步骤时,从解析得到位置最靠前的起始Block开始连续读取相应数量的Block,当再次执行本步骤时,则跳转至解析得到的下一个起始Block开始连续读取相应数量的Block。
本实施例中,本步骤与步骤401的实现方式相同,同样是可以通过向NAND FLASH发送对应的读命令来实现。
步骤404,当开始连续读取相应数量的Block后,对读取到的Stage1可执行代码的代码数据进行ECC纠错。
本实施例中,从每个Block以页为单位读取Stage1可执行代码的代码数据,读取到的Stage1可执行代码的代码数据以页为单位被缓存汇总至与CPU连接的RAM中。相应地,Stage1可执行代码的代码数据可以在缓存中以页为单位执行ECC纠错。
步骤405,对读取的代码数据进行坏块检测,若未检测到坏块则执行步骤406,否则返回步骤203。
步骤406,对读取的代码数据进行数据校验,若校验成功则结束本流程,否则返回步骤403。
本实施例中,上述的步骤405和406可以同时执行、也可以调换执行顺序,只要满足在未检测到坏块且数据校验成功时结束本流程、在检测到坏块或数据校验失败时返回步骤403即可。并且,由于读取到的Stage1可执行代码的代码数据能够以页为单位被读取并缓存、然后被汇总至与CPU连接的RAM中,因此,Stage1可执行代码的代码数据在汇总至RAM之后被上述的步骤405和406可以分别执行坏块校验和数据校验。
至此,本流程结束,相应地,利用本流程成功读取到的Bootloader引导程序的Stage1可执行代码引导CPU启动。以上是对本实施例中NAND FLASH的启动加载方法的详细说明。本实施例还提供了一种基于NAND FLASH的启动加载装置,该启动加载装置可以集成于CPU中、也可以独立于CPU之外单独存在,以下以该启动加载装置与CPU一体集成为例进行说明。
请参见图5,本实施例中基于NAND FLASH的启动加载装置包括NAND FLASH控制模块、配置信息解析模块、以及ECC纠错模块,其中,NAND FLASH控制模块为启 动加载装置中的核心模块,NAND FLASH控制模块既负责发起对NAND FLASH的读操作、又负责其他模块的协调控制;ECC纠错模块则为可选的模块、而非必须包括在启动加载装置中的模块。
当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的Block0。
实际应用中,NAND FLASH控制模块可以通过启动加载装置中的NAND FLASH接口向NAND FLASH发送对应的读命令、以实现对Block0的读取。
当从Block0中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到Stage1可执行代码对应的存储空间的起始Block及Block数量。
当完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取相应数量的Block,读取到的引导程序可执行代码供引导CPU启动时使用。
当开始连续读取相应数量的Block后,ECC纠错模块在NAND FLASH控制模块的控制下对读取到的Stage1可执行代码的代码数据进行ECC纠错。
实际应用中,从每个Block都是以页为单位读取Stage1可执行代码的代码数据,并且,读取到的Stage1可执行代码的代码数据也会以页为单位被缓存、然后被汇总至与CPU连接的RAM中。相应地,Stage1可执行代码的代码数据可以在缓存中以页为单位被ECC纠错模块执行ECC纠错。
与方法部分同理,为了提高CPU启动加载的可靠性,Stage1可执行代码可以被复制为多份存储在NAND FLASH中,相应地,针对Stage1可执行代码被复制为多份存储的情况,本实施例中的启动加载装置需要进行相应的扩展。
请参见图6,本实施例中基于NAND FLASH的启动加载装置包括NAND FLASH控制模块、配置信息解析模块、ECC纠错模块、坏块检测模块、以及数据校验模块,其中,NAND FLASH控制模块为启动加载装置中的核心模块,NAND FLASH控制模块既负责发起对NAND FLASH的读操作、又负责其他模块的协调控制;ECC纠错模块则为可选的模块、而非必须包括在启动加载装置中的模块。
当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的Block0。
实际应用中,NAND FLASH控制模块可以通过启动加载装置中的NAND FLASH接口向NAND FLASH发送对应的读命令、以实现对Block0的读取。
当从Block0中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到Stage1可执行代码对应的存储空间的起始 Block及Block数量。
其中,对于Bootloader引导程序的Stage1可执行代码被复制为多份存储在NANDFLASH中的情况,配置信息解析模块解析得到每份Stage1可执行代码对应的存储空间的起始Block及Block数量。
当完成对配置信息的解析后,NAND FLASH控制模块从解析得到的起始Block开始连续读取相应数量的Block,读取到的引导程序可执行代码供引导CPU启动时使用。
其中,对于Bootloader引导程序的Stage1可执行代码被复制为多份存储在NANDFLASH中的情况,当NAND FLASH控制模块首次发起对多个连续Block的读取时,从解析得到位置最靠前的起始Block开始连续读取相应数量的Block,当再次发起对多个连续Block的读取时,则跳转至解析得到的下一个起始Block开始连续读取相应数量的Block。NAND FLASH控制模块可以通过启动加载装置中的NAND FLASH接口向NANDFLASH发送对应的读命令,以实现对Block0之后的连续多个Block的读取。
当开始连续读取相应数量的Block后,ECC纠错模块在NAND FLASH控制模块的控制下对读取到的Stage1可执行代码的代码数据进行ECC纠错。
实际应用中,从每个Block都是以页为单位读取Stage1可执行代码的代码数据,并且,读取到的Stage1可执行代码的代码数据也会以页为单位被缓存、然后被汇总至与CPU连接的RAM中。相应地,Stage1可执行代码的代码数据可以在缓存中以页为单位被ECC纠错模块执行ECC纠错。
以及,对于ECC纠错后的代码数据,还可以由坏块检测模块和数据校验模块在NAND FLASH控制模块的控制下分别进行坏块检测和数据校验;
若坏块检测模块未检测到坏块、且数据校验模块进行数据校验成功,则完成了对Stage1可执行代码的读取,并可以利用成功读取到的Bootloader引导程序的Stage1可执行代码引导CPU启动;
但若坏块检测模块检测到坏块、或数据校验模块进行的数据校验失败,则需要由NAND FLASH控制模块跳转至解析得到的下一个起始Block重新开始连续读取相应数量的Block。
由于读取到的Stage1可执行代码的代码数据能够以页为单位被读取并缓存、然后被汇总至与CPU连接的RAM中,因此,Stage1可执行代码的代码数据在汇总至RAM之后被上述的坏块检测模块和数据校验模块分别执行坏块校验和数据校验,若坏块检测模块未检测到坏块、且数据校验模块进行数据校验成功,则CPU通过访问RAM即可在Stage1可执行代码的引导下完成启动。
需要说明是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根 据具体情况忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (12)
1.一种基于NAND FLASH的启动加载方法,其特征在于,引导程序可执行代码在NANDFLASH中对应的存储空间的起始Block及包含的Block数量以配置信息的形式存放在NANDFLASH的Block0中,该存储空间包括Block0之后的多个连续Block;以及,该启动加载方法包括:
在CPU开始从NAND FLASH启动时,读取NAND FLASH的Block0;
在从Block0中读取到配置信息后,从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于1;
在完成对配置信息的解析后,从解析得到的起始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的Block0中,该存储空间包括Block0之后的多个连续Block;以及,该启动加载装置包括NAND FLASH控制模块和配置信息解析模块,其中:
当CPU开始从NAND FLASH启动时,NAND FLASH控制模块读取NAND FLASH的Block0;
当从Block0中读取到配置信息后,NAND FLASH控制模块通知配置信息解析模块,使配置信息解析模块从配置信息中解析得到引导程序可执行代码对应的存储空间的起始Block及Block数量Z,其中Z大于等于1;
在完成对配置信息的解析后,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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410332155.5A CN104077167A (zh) | 2014-07-11 | 2014-07-11 | 基于nand flash的启动加载方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410332155.5A CN104077167A (zh) | 2014-07-11 | 2014-07-11 | 基于nand flash的启动加载方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104077167A true CN104077167A (zh) | 2014-10-01 |
Family
ID=51598438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410332155.5A Pending CN104077167A (zh) | 2014-07-11 | 2014-07-11 | 基于nand flash的启动加载方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104077167A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105225696A (zh) * | 2015-10-15 | 2016-01-06 | 广东九联科技股份有限公司 | 一种机顶盒nandflash芯片的坏块检测方法 |
CN105488419A (zh) * | 2015-12-09 | 2016-04-13 | 上海斐讯数据通信技术有限公司 | 一种固件安全升级方法及路由设备 |
CN107015817A (zh) * | 2017-05-25 | 2017-08-04 | 孙文现 | 一种设备固件空中升级的方法 |
CN108255526A (zh) * | 2016-12-28 | 2018-07-06 | 深圳市中兴微电子技术有限公司 | 一种系统启动及运行的方法、装置 |
CN108897576A (zh) * | 2018-06-19 | 2018-11-27 | 上海繁易信息科技股份有限公司 | 一种基于arm芯片的快速启动boot的方法 |
CN109582370A (zh) * | 2018-11-01 | 2019-04-05 | 浙江大华技术股份有限公司 | 一种nor flash嵌入式设备的启动方法及装置 |
CN109634674A (zh) * | 2018-12-06 | 2019-04-16 | 深圳忆联信息系统有限公司 | 芯片boot启动方法、装置、计算机设备和存储介质 |
CN111078307A (zh) * | 2019-12-19 | 2020-04-28 | 迈普通信技术股份有限公司 | 一种嵌入式设备的启动方法、装置、嵌入式设备及存储介质 |
WO2020107469A1 (zh) * | 2018-11-30 | 2020-06-04 | 深圳市大疆创新科技有限公司 | 程序处理方法、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1405683A (zh) * | 2001-09-18 | 2003-03-26 | 华为技术有限公司 | Flash存储文件管理方法 |
CN101500069A (zh) * | 2008-12-30 | 2009-08-05 | 深圳市同洲电子股份有限公司 | 适用不同型号数字电视接收终端的控制方法、装置及系统 |
CN101944051A (zh) * | 2010-09-29 | 2011-01-12 | 山东大学 | 片上多备份的高可靠嵌入式系统固件及其工作方法 |
CN102637461A (zh) * | 2012-03-07 | 2012-08-15 | 山东华芯半导体有限公司 | 支持坏块闪存扫描的启动方法 |
CN103135995A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 一种BootLoader的备份管理方法及装置 |
US20140181495A1 (en) * | 2012-12-26 | 2014-06-26 | Samsung Electronics Co., Ltd. | System on chip including boot shell debugging hardware and driving method thereof |
-
2014
- 2014-07-11 CN CN201410332155.5A patent/CN104077167A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1405683A (zh) * | 2001-09-18 | 2003-03-26 | 华为技术有限公司 | Flash存储文件管理方法 |
CN101500069A (zh) * | 2008-12-30 | 2009-08-05 | 深圳市同洲电子股份有限公司 | 适用不同型号数字电视接收终端的控制方法、装置及系统 |
CN101944051A (zh) * | 2010-09-29 | 2011-01-12 | 山东大学 | 片上多备份的高可靠嵌入式系统固件及其工作方法 |
CN103135995A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 一种BootLoader的备份管理方法及装置 |
CN102637461A (zh) * | 2012-03-07 | 2012-08-15 | 山东华芯半导体有限公司 | 支持坏块闪存扫描的启动方法 |
US20140181495A1 (en) * | 2012-12-26 | 2014-06-26 | Samsung Electronics Co., Ltd. | System on chip including boot shell debugging hardware and driving method thereof |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105225696A (zh) * | 2015-10-15 | 2016-01-06 | 广东九联科技股份有限公司 | 一种机顶盒nandflash芯片的坏块检测方法 |
CN105488419A (zh) * | 2015-12-09 | 2016-04-13 | 上海斐讯数据通信技术有限公司 | 一种固件安全升级方法及路由设备 |
CN108255526A (zh) * | 2016-12-28 | 2018-07-06 | 深圳市中兴微电子技术有限公司 | 一种系统启动及运行的方法、装置 |
CN107015817A (zh) * | 2017-05-25 | 2017-08-04 | 孙文现 | 一种设备固件空中升级的方法 |
CN107015817B (zh) * | 2017-05-25 | 2021-06-01 | 北京君泊网络科技有限责任公司 | 一种设备固件空中升级的方法 |
CN108897576A (zh) * | 2018-06-19 | 2018-11-27 | 上海繁易信息科技股份有限公司 | 一种基于arm芯片的快速启动boot的方法 |
CN108897576B (zh) * | 2018-06-19 | 2021-06-22 | 上海繁易信息科技股份有限公司 | 一种基于arm芯片的快速启动boot的方法 |
CN109582370A (zh) * | 2018-11-01 | 2019-04-05 | 浙江大华技术股份有限公司 | 一种nor flash嵌入式设备的启动方法及装置 |
CN109582370B (zh) * | 2018-11-01 | 2022-07-19 | 浙江大华技术股份有限公司 | 一种nor flash嵌入式设备的启动方法及装置 |
CN111356982A (zh) * | 2018-11-30 | 2020-06-30 | 深圳市大疆创新科技有限公司 | 程序处理方法、设备及存储介质 |
WO2020107469A1 (zh) * | 2018-11-30 | 2020-06-04 | 深圳市大疆创新科技有限公司 | 程序处理方法、设备及存储介质 |
CN109634674B (zh) * | 2018-12-06 | 2022-03-29 | 深圳忆联信息系统有限公司 | 芯片boot启动方法、装置、计算机设备和存储介质 |
CN109634674A (zh) * | 2018-12-06 | 2019-04-16 | 深圳忆联信息系统有限公司 | 芯片boot启动方法、装置、计算机设备和存储介质 |
CN111078307A (zh) * | 2019-12-19 | 2020-04-28 | 迈普通信技术股份有限公司 | 一种嵌入式设备的启动方法、装置、嵌入式设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077167A (zh) | 基于nand flash的启动加载方法和装置 | |
CN105700901B (zh) | 一种启动方法、装置和计算机系统 | |
US9880754B2 (en) | System and method for enabling transportability of a non volatile dual inline memory module | |
US8812910B2 (en) | Pilot process method for system boot and associated apparatus | |
US9286164B2 (en) | Electronic device to restore MBR, method thereof, and computer-readable medium | |
CN103473067A (zh) | 嵌入式Linux分区与数据还原方法、系统及系统开发方法 | |
US8055948B2 (en) | Resilient software-controlled redundant array of independent disks (RAID) | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN102331958A (zh) | Linux系统下硬盘启动的方法 | |
US20140089653A1 (en) | Electronic apparatus, method of restoring guid partition table (gpt) and computer-readable recording medium | |
US20130166893A1 (en) | Auxiliary card initialization routine | |
US8583959B2 (en) | System and method for recovering data of complementary metal-oxide semiconductor | |
US8788800B2 (en) | OS processing method, system and non-transitory computer readable storage medium thereof | |
US20100293418A1 (en) | Memory device, data transfer control device, data transfer method, and computer program product | |
US10824517B2 (en) | Backup and recovery of configuration files in management device | |
CN108958814B (zh) | 一种多模冗余的嵌入式操作系统启动方法 | |
US20130151886A1 (en) | Computing device and method for switching physical links of a sas expander of the computing device | |
US8504869B2 (en) | Kernel swapping systems and methods for recovering a network device | |
CN106843764B (zh) | 软独立冗余磁盘阵列创建方法及系统 | |
CN104035776A (zh) | 一种操作系统的启动方法 | |
US20200341911A1 (en) | Method, device, and computer program product for managing storage system | |
CN111258617B (zh) | 一种电子设备 | |
WO2014024279A1 (ja) | メモリ障害リカバリ装置、方法、及びプログラム | |
CN112540799A (zh) | 启动数据的管理方法、系统、终端设备及存储介质 | |
CN104750617A (zh) | 电子装置及其数据维护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant after: Xinhua three Technology Co., Ltd. Address before: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Applicant before: Huasan Communication Technology Co., Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141001 |