基于NAND闪存的动态分区搜索装置及其方法.pdf

上传人:a3 文档编号:6160935 上传时间:2019-05-13 格式:PDF 页数:12 大小:642.71KB
返回 下载 相关 举报
摘要
申请专利号:

CN201310720438.2

申请日:

2013.12.24

公开号:

CN103744694A

公开日:

2014.04.23

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/445申请日:20131224|||公开

IPC分类号:

G06F9/445; G06F12/02; G06F11/10

主分类号:

G06F9/445

申请人:

武汉烽火众智数字技术有限责任公司

发明人:

曹木莲

地址:

430074 湖北省武汉市洪山区邮科院路88号

优先权:

专利代理机构:

北京汇泽知识产权代理有限公司 11228

代理人:

刘淑敏

PDF下载: PDF下载
内容摘要

本发明公开一种基于Nand闪存的动态分区搜索装置及其方法,包括:版本升级模块,将预存储在动态分区的各分区的二进制执行部件按序组装合并成一个文件加入版本头信息;可烧录版本模块,将Nand闪存中实际存储的N个分区的顺序依次进行烧录版本组装;烧录模块:需要烧录版本文件到Nand闪存时,将带ECC算法的可烧录版本烧录到Nand闪存中;动态分区解析模块:用于在引导程序启动时搜索版本头,根据版本头记录的信息和Nand闪存依次搜索到的块状态构造出动态分区表,内核通过引导程序传递环境变量的方式或通过将动态分区表共享到同一段未使用的内存的方式获取来构造内核分区表。采用本发明,能够在解决坏块的同时减少冗余块,提高存储介质的利用率。

权利要求书

权利要求书
1.  一种基于Nand闪存的动态分区搜索装置,其特征在于,该装置包括版本升级模块、可烧录版本模块、烧录模块以及动态分区解析模块;其中:
版本升级模块,用于将预存储在动态分区的各分区的二进制执行部件按序组装合并成一个文件,并加入版本头信息部件;
可烧录版本模块,用于将Nand闪存中实际存储的N个分区的顺序依次进行烧录版本组装;由N-M个静态分区预存储的二进制执行部件和版本升级模块进行组装合并;
烧录模块:用于当需要烧录版本文件到Nand闪存中时,将所述带ECC算法的可烧录版本提供给烧录器,由所述烧录器将所述可烧录版本文件烧录到Nand闪存中;
动态分区解析模块:用于在引导程序启动时搜索版本头,根据版本头记录的信息和Nand闪存依次搜索到的块状态构造出动态分区表,内核通过引导程序传递环境变量的方式或者通过将动态分区表共享到同一段未使用的内存的方式获取来构造内核分区表。

2.  根据权利要求1所述基于Nand闪存的动态分区搜索装置,其特征在于,所述的版本升级模块,用于按照块对齐的方式记录各动态分区存储文件的实际大小。

3.  根据权利要求1或2所述基于Nand闪存的动态分区搜索装置,其特征在于,还用于在Nand闪存中的引导程序能正常启动的情况下,将该版本升级文件用于通过软件的方式进行版本的在线升级更新。

4.  根据权利要求1所述基于Nand闪存的动态分区搜索装置,其特征在于,在所述可烧录版本模块中,如果N-M个静态分区预存储的二进制执行部件未达到该分区大小,则所述未达到的部分需要按0xFF进行填充。

5.  根据权利要求1或4所述基于Nand闪存的动态分区搜索装置,其特征在于,在所述可烧录版本模块中,各部件组装合并完毕,再根据具体的硬件电路加入相应ECC算法进行填充。

6.  一种基于Nand闪存的动态分区搜索方法,其特征在于,该方法包括:
A、获取原始分区信息,所述原始分区信息包括N个分区及每个所述分区的空间大小,其中N为正整数;
B、将需要运用动态构造分区搜索方法的分区数M合并成一个大的静态分区C;其中M为正整数,且1<M<N;
C、根据分区C的起始地址和分区大小,通过从分区C的起始地址开始搜索特定的软件版本头信息,并根据版本头信息和块状态确定各分区起始地址和动态分区大小;通过版本头中记录的各分区存储的实际二进制文件大小信息和检测C分区的块状态,生成M个分区的动态分区表;
D、将所述的动态分区表通过环境变量的方式或将动态分区表共享同一段未使用的内存的方式传递给内核构造内核分区表信息。

7.  根据权利要求6所述基于Nand闪存的动态分区搜索方法,其特征在于,步骤C所述根据版本头信息和块状态确定各分区起始地址和动态分区大小的过程,具体包括:
C1、从所述的C分区的起始地址开始搜索特定的软件版本头信息,当检测到当前的块状态为坏块,则将坏块加1;当检测到当前的块状态为好,则读取该块特定软件版本头结构大小的数据内容判断是否为版本头;如果该块存储的不是版本头,则继续依次检测下一块的状态;如果是版本头,则根据版本头的信息获取各分区实际存储的二进制文件大小的相关信息;
C2、当搜到的是存储版本头信息的块时,继续检测下一块的状态,如果是坏块,则将坏块加1;当检测到的块状态为好,则此块存储的就是M分区里面的第1个动态分区的起始地址;根据版本头信息记录的该分区的大小和依次搜索到的块状态即可确定第1个动态分区的终止地址。

8.  根据权利要求1所述基于Nand闪存的动态分区搜索方法,其特征在于,进一步包括:在改变内核原有构造内核分区表的方式时,引导程序将动态分区表通过环境变量的方式或将动态分区表共享同一段未使用的内存的方式传递给内核构造内核分区表信息。

9.  根据权利要求6或7所述基于Nand闪存的动态分区搜索方法,其特征在于,依据所述版本头信息,按第i个动态分区的起始地址和版本头信息记录的第i个动态分区实际存储文件大小的块数能够确定第i+1个动态分区的起始地址,其中1<=i<=M;具体为:第i+1个动态分区的起始地址=第i个动态分区的起始地址+(第i个动态分区坏块数+第i个动态分区存储的实际文件内容所占的块数)*块大小。

10.  根据权利要求6~9任一项所述的基于Nand闪存的动态分区搜索方法,其特征在于,所述执行动态分区搜索之前,还包括:
生成带特定版本头信息的升级版本文件;所述升级版本文件由版本头结构体和需要构造M个动态分区的所对应存储的二进制执行文件组成;依次读取编译生成的预存储在第i(1<=i<=M)个动态分区二进制文件,并按照实际的分区顺序进行组装合并,并将各分区实际存储的文件大小记录到版本头对应的结构体中,各部件按照块的方式进行对齐。

11.  根据权利要求6~9任一项所述的基于Nand闪存的动态分区搜索方法,其特征在于,在所述执行动态分区搜索之前,还包括:将动态分区构造搜索算法放在引导程序中执行,并在引导程序引导内核之前执行;并且在所述Nand 闪存的第一个分区的第一个块写入引导程序。

说明书

说明书基于Nand闪存的动态分区搜索装置及其方法
技术领域
 本发明涉及数据存储技术,尤其涉及一种基于Nand闪存(Flash)的动态分区搜索装置及其方法,属于将Nand Flash作为存储介质的Unix/Linux终端产品使用烧录器烧录二进制版本文件时,在出现坏块(Bad Block)的情况下系统无法正常运行的防护机制。
背景技术
随着用户对终端产品所具备的功能需求越来越多,其对应的软件版本也成递增的趋势。作为大多数基于Linux操作系统的终端设备 ,传统的存储方式都是以Nor Flash作为存储介质。但由于Nor Flash容量较小,或者成本太高等原因已经慢慢变得不适用起来。与此相反,以Nand Flash作为存贮介质由于容量大、读写速度快、成本低等优势开始成为家庭网关,机顶盒,监控前端产品等终端设备的首选存贮介质。
在大规模产品批量出厂的过程中,为了提高效率,一般使用专门的烧录器将需要烧录的数据写入Nand Flash中,因此需要为烧录器提供专门的烧录文件,烧录文件的好块直接影响着产品量产的效率和良率。
现有技术中,一般有两种方法生成烧录文件。一种简单的方法是先通过常规的方式,借助网络,串口或USB等方式完成一台产品的升级,再从升级好的产品中将Nand Flash中的所有数据读出来,生成烧录版本文件。另一种方法是将编译生成的各二进制文件按照他们在Nand Flash上实际存储的分区位置进行组装合并,未达到实际分区大小的进行0xFF填充,最后生成烧录版本文件。
Nand Flash 的特性决定了在出厂时或者在使用过程中都有可能产生坏块。如果烧录器在烧录之前Nand Flash已产生了坏块,或者在烧录过程中产生了坏块,烧录器将二进制烧录版本文件全部烧录到Flash上后,Nand Flash上实际存储的分区内容将和原始规划的分区内容将产生相应的偏移,如图1所示。而Linux终端设备的系统启动和文件系统的挂载都是按照分区的方式进行的,那么内核或文件系统可能就面临无法正常启动的问题。
目前,很多厂家为了避免由于坏块原因导致系统无法启动问题,比较普遍使用的一种方法是将uboot引导程序通过烧录器或其他方法先烧录到Nand Flash中,然后通过uboot引导程序以软件的方式下载烧录其他的部分,如内核,文件系统等。这种方法虽然能够避免由于坏块的原因导致系统起不来的问题,但生产效率低下。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于Nand Flash的动态分区搜索装置及其方法,用以解决现有技术不能实现简单、高效的烧录Nand Flash版本文件,烧录的版本文件可启动概率低的问题。以及用于解决为规避由于Nand Flash存储介质存在坏块的特性必须为每个分区预留一定数量的多余的冗余块而引起的存储空间浪费的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于Nand闪存的动态分区搜索装置,该装置包括版本升级模块、可烧录版本模块、烧录模块以及动态分区解析模块;其中:
版本升级模块,用于将预存储在动态分区的各分区的二进制执行部件按序组装合并成一个文件,并加入版本头信息部件;
可烧录版本模块,用于将Nand闪存中实际存储的N个分区的顺序依次进行烧录版本组装;由N-M个静态分区预存储的二进制执行部件和版本升级模块进行组装合并;
烧录模块:用于当需要烧录版本文件到Nand闪存中时,将所述带ECC算法的可烧录版本提供给烧录器,由所述烧录器将所述可烧录版本文件烧录到Nand闪存中;
动态分区解析模块:用于在引导程序启动时搜索版本头,根据版本头记录的信息和Nand闪存依次搜索到的块状态构造出动态分区表,内核通过引导程序传递环境变量的方式或者通过将动态分区表共享到同一段未使用的内存的方式获取来构造内核分区表。
其中,所述的版本升级模块,用于按照块对齐的方式记录各动态分区存储文件的实际大小。
还用于在Nand闪存中的引导程序能正常启动的情况下,将该版本升级文件用于通过软件的方式进行版本的在线升级更新。
在所述可烧录版本模块中,如果N-M个静态分区预存储的二进制执行部件未达到该分区大小,则所述未达到的部分需要按0xFF进行填充。
在所述可烧录版本模块中,各部件组装合并完毕,再根据具体的硬件电路加入相应ECC算法进行填充。
一种基于Nand闪存的动态分区搜索方法,该方法包括:
A、获取原始分区信息,所述原始分区信息包括N个分区及每个所述分区的空间大小,其中N为正整数;
B、将需要运用动态构造分区搜索方法的分区数M合并成一个大的静态分区C;其中M为正整数,且1<M<N;
C、根据分区C的起始地址和分区大小,通过从分区C的起始地址开始搜索特定的软件版本头信息,并根据版本头信息和块状态确定各分区起始地址和动态分区大小;通过版本头中记录的各分区存储的实际二进制文件大小信息和检测C分区的块状态,生成M个分区的动态分区表;
D、将所述的动态分区表通过环境变量的方式或将动态分区表共享同一段未使用的内存的方式传递给内核构造内核分区表信息。
其中:步骤C所述根据版本头信息和块状态确定各分区起始地址和动态分区大小的过程,具体包括:
C1、从所述的C分区的起始地址开始搜索特定的软件版本头信息,当检测到当前的块状态为坏块,则将坏块加1;当检测到当前的块状态为好,则读取该块特定软件版本头结构大小的数据内容判断是否为版本头;如果该块存储的不是版本头,则继续依次检测下一块的状态;如果是版本头,则根据版本头的信息获取各分区实际存储的二进制文件大小的相关信息;
C2、当搜到的是存储版本头信息的块时,继续检测下一块的状态,如果是坏块,则将坏块加1;当检测到的块状态为好,则此块存储的就是M分区里面的第1个动态分区的起始地址;根据版本头信息记录的该分区的大小和依次搜索到的块状态即可确定第1个动态分区的终止地址。
该方法进一步包括:在改变内核原有构造内核分区表的方式时,引导程序将动态分区表通过环境变量的方式或将动态分区表共享同一段未使用的内存的方式传递给内核构造内核分区表信息。
所述依据所述版本头信息,按第i个动态分区的起始地址和版本头信息记录的第i个动态分区实际存储文件大小的块数能够确定第i+1个动态分区的起始地址,其中1<=i<=M;具体为:第i+1个动态分区的起始地址=第i个动态分区的起始地址+(第i个动态分区坏块数+第i个动态分区存储的实际文件内容所占的块数)*块大小。
所述执行动态分区搜索之前,还包括:
生成带特定版本头信息的升级版本文件;所述升级版本文件由版本头结构体和需要构造M个动态分区的所对应存储的二进制执行文件组成;依次读取编译生成的预存储在第i(1<=i<=M)个动态分区二进制文件,并按照实际的分区顺序进行组装合并,并将各分区实际存储的文件大小记录到版本头对应的结构体中,各部件按照块的方式进行对齐。
在所述执行动态分区搜索之前,还包括:将动态分区构造搜索算法放在引导程序中执行,并在引导程序引导内核之前执行;并且在所述Nand 闪存的第一个分区的第一个块写入引导程序。
本发明所提供的基于Nand 闪存(Flash)的动态分区搜索装置及其方法,具有以下优点:
本发明的装置,采用通过软件的方式将要单独在线升级烧录到各分区的二进制文件进行创造性的组装合并成可以直接使用Nand Flash烧录器直接烧写的烧录版本文件;在引导程序引导内核代码之前加入动态分区搜索算法,可在每次系统时实时构造动态分区表;每个动态分区的大小为实际存储的二进制文件大小,不需要预留冗余的块,节省了Nand Flash的存储空间,提高了存储的利用率。而且不需要使用传统的比较繁琐的流程就可以实现Nand Flash版本文件的烧录,实现简单,且适用于产品的批量生产应用。加快了产品的出货速度,提高了产线的生产效率,降低了生产的人力成本。由于使用了实时的动态分区构造算法,烧录的版本文件可启动概率为100%,不会出现系统无法正常启动的问题。
附图说明
图1为使用现有技术通过烧录器烧录版本文件的结构示意图;
图2为本发明实施例基于Nand Flash的动态分区装置的结构示意图;
图3为本发明实施例基于Nand Flash的动态分区搜索算法的实现流程图;
图4为本发明实施例基于Nand Flash的动态分区装置的烧录版本结构以及在Nand Flash上的存储结构示意图。
【主要部件符号说明】
401:uboot区
402:用户配置区
403:firware区
404:版本头
405:内核
406:文件系统
407:firware文件系统
408:burnrom版本
409:NAND Flash物理区域。
具体实施方式
下面结合附图及本发明的实施例对本发明的动态分区搜索装置及其方法作进一步详细的说明。
现有技术中无法根据实际各分区存储的文件大小来进行构造动态分区,每个分区都会预留一定的冗余块作为坏块损耗用。在大部分情况下这些冗余块基本都在空闲状态,浪费了大量的存储资源。而且现有技术中使用烧录器烧录的版本文件经常由于Nand Flash存在坏块的情况导致系统可启动的概率很低。
本发明提供的基于Nand Flash的动态分区搜索方法,能够根据存储在Nand Flash芯片文件中的实际大小来构造动态分区,每个构造的动态分区大小为实际的存储二进制文件大小。而且不需要将动态分区信息存储到相关的存储介质上,直接通过引导程序的环境变量的方式或共享内存的方式传递给内核来构造内核的动态分区信息。
图4为本发明实施例基于Nand Flash的动态分区装置的烧录版本结构以及在Nand Flash上的存储结构示意图。本发明以单版本的结构为例对所述的搜索方法进行说明。
如图4所示,为一个单版本Linux系统在Nand Flash上的物理存储结构。该系统的Nand Flash物理区域409本来由uboot区401、用户配置区402、内核405和文件系统406组成。
现将原始的内核405和文件系统406的分区合并成一个静态分区fireware区403。其目的之一是为了不用从存储介质的第一块开始搜索版本头信息,能够节省分区搜索的时间。目的二是为了便于firmware版本文件407的在线软件升级。
修改uboot引导代码,可以将内核区和文件系统区合并成一个大的静态分区,并增加基于合并的静态分区构造动态分区的搜索算法。
图3为本发明实施例基于Nand Flash的动态分区搜索算法的实现流程图。如图3所示,该步骤包括:
步骤301:初始化变量。内核起始之前的坏块数bad_block=0,内核起始到内核终止之间的坏块数kbad_block=0,内核终止到文件系统起始之间的坏块数fbad_block=0 ;好块:block=0;
步骤302:从静态分区fireware区403的第0块开始搜索。静态分区的大小是由内核405,文件系统406和冗余块决定的。冗余块的大小需要根据芯片厂家的建议百分比值来设置。
步骤303:判断是否为坏块。如果是坏块,bad_block++,搜索下一块并重新回到步骤303。
步骤304:判断是否是版本头,如果不是,block++,回到步骤303。
步骤305:根据版本头信息获取内核和文件系统的大小。
步骤306:搜索下一块,判断是否为坏块,如果是坏块,bad_block++,搜索下一块并重新回到步骤306。
步骤307:找到kernel的起始地址,继续搜索下一块。
步骤308:判断是否为坏块,如果是坏块,kbad_block++;搜索下一块并回到步骤308。
步骤309:判断所搜索的块是否在内核区,如果--kernel_blocks!=1说明所在块还是属于内核区,继续搜索下一块,回到步骤308。
步骤310:得到内核区的终止块地址。从而就可以计算出动态内核分区的起止区间。
步骤311:搜索下一块,判断是否为坏块,如果是坏块,fbad_block++;跳转到步骤311。
步骤312:得到文件系统的起始地址。可以将静态分区剩余的块全部作为文件系统区。该方法的好处是可以减少分区数量。不用将剩余的块作为一个独立的分区进行设置。同时提高了搜索速度,得到文件系统的起始地址后就不用搜索了。此外还可以提高Flash的利用率。
步骤313:将Linux内核静态的分区方式修改为动态的分区方式,即采用uboot中动态搜索方法计算出的新的分区表通过环境变量的方式或通过将动态分区表共享到同一段未使用的内存中进行获取。此时内核启动的分区信息就是最新的使用动态分区搜索算法的实时分区信息。
为了实现步骤301~步骤313所述的动态分区搜索方法,合并后的静态分区必须存储如图4所示的firmware版本文件407。该升级版本文件是由版本头404,Linux内核405、根文件系统40以块大小对齐的方式进行组装合并而成。版本头404用于识别firmware版本文件407和记录Linux内核405、根文件系统406等二进制文件大小等信息的数据结构。
对于需要构造N个动态分区的实施例时,N>=2,前N-1个分区的搜索过程按步骤302~步骤312的顺序进行。第i+1个分区的起始地址=第i个分区的起始地址+(第i个分区坏块数+第i个分区存储的实际文件内容所占的块数)*块大小。其中,动态分区之前的静态分区个数<i<N+动态分区之前的静态分区个数。当搜索到最后一个动态分区的起始地址时,就可以把剩下的存储空间作为该动态分区的大小。
图2为本发明实施例基于Nand Flash的动态分区的装置结构示意图。如图2所示,该基于Nand Flash的动态分区的装置,主要包括:版本升级模块201,可烧录版本模块202,烧录模块203及动态分区解析模块204。其中:
版本升级模块201:用于将预存储在动态各分区的二进制执行部件按序组装合并成一个文件,并加入版本头信息部件;还用于记录各动态分区存储文件的实际大小。并且各部件按照块对齐的方式进行。不需要进行校验和纠错(ECC)算法进行填充。所述模块的一个作用是可以方便可烧录版本的制作,另一个作用是可用来作为软件的在线升级版本文件。
可烧录版本模块202:用于将Nand存储介质上实际存储的N个分区的顺序依次进行烧录版本组装。如图4所示,burnrom版本408是由uboot二进制文件、用户配置文件、fireware版本407组装合并而成。其中,fireware版本407文件是由版本头、内核和文件系统组装合并而成。如果uboot二进制文件的大小未达到uboot区401的大小时,需要进行0xFF进行填充,用户配置需要使用0xFF填充用户配置区402的区域大小。fireware版本407组装版本头404,内核405和文件系统406时需要进行块对齐,大小未达到的部分使用0xFF进行填充。
这里,根据不同的硬件设计方案,Nand Flash所采用的ECC纠错编码方式可能有所不同,确定自己所采用的ECC编码方式后,根据芯片厂家提供的ECC算法,对上面组装成的烧录版本文件burnrom版本408加入ECC算法进行相应的填充处理。
烧录模块203:用于当需要烧录版本文件到Nand Flash芯片中时,将所述带ECC算法的可烧录版本burnrom版本408提供给烧录器,由所述烧录器将所述可烧录版本文件烧录到Nand闪存芯片中。
动态分区解析模块204:用于在引导程序启动时搜索版本头,根据版本头信息和Nand闪存的块状态构造出动态分区表,并向动态分区表通过环境变量的方式或将动态分区表共享同一段未使用的内存的方式传递给内核构造内核分区表。
对于双版本、备份版本等存储结构的应用场合,本发明的上述搜索方法和装置也同样适用。
本发明实施例提供的上述基于Nand闪存的动态分区搜索装置及其方法,适用于各种支持Nand闪存的烧录器。应用该搜索方法可以减少Nand存储介质预留的冗余块,提高Nand存储介质的存储空间利用率。同时,运用上述方法和装置,能够改变生产线原有的生产方式,通过使用烧录器直接烧录可烧录版本文件,能够简化操作人员对烧录器软件的复杂操作,通过简单配置即可完成烧录过程。此外,还可以解决对于Nand Flash存在坏块的情况下,在使用现有技术的烧录方式可能导致系统无法正常运行的问题。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

基于NAND闪存的动态分区搜索装置及其方法.pdf_第1页
第1页 / 共12页
基于NAND闪存的动态分区搜索装置及其方法.pdf_第2页
第2页 / 共12页
基于NAND闪存的动态分区搜索装置及其方法.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《基于NAND闪存的动态分区搜索装置及其方法.pdf》由会员分享,可在线阅读,更多相关《基于NAND闪存的动态分区搜索装置及其方法.pdf(12页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103744694 A (43)申请公布日 2014.04.23 CN 103744694 A (21)申请号 201310720438.2 (22)申请日 2013.12.24 G06F 9/445(2006.01) G06F 12/02(2006.01) G06F 11/10(2006.01) (71)申请人 武汉烽火众智数字技术有限责任公 司 地址 430074 湖北省武汉市洪山区邮科院路 88 号 (72)发明人 曹木莲 (74)专利代理机构 北京汇泽知识产权代理有限 公司 11228 代理人 刘淑敏 (54) 发明名称 基于 Nand 闪存的动态分区搜索装置。

2、及其方 法 (57) 摘要 本发明公开一种基于 Nand 闪存的动态分区 搜索装置及其方法, 包括 : 版本升级模块, 将预存 储在动态分区的各分区的二进制执行部件按序组 装合并成一个文件加入版本头信息 ; 可烧录版本 模块, 将 Nand 闪存中实际存储的 N 个分区的顺序 依次进行烧录版本组装 ; 烧录模块 : 需要烧录版 本文件到 Nand 闪存时, 将带 ECC 算法的可烧录版 本烧录到 Nand 闪存中 ; 动态分区解析模块 : 用于 在引导程序启动时搜索版本头, 根据版本头记录 的信息和 Nand 闪存依次搜索到的块状态构造出 动态分区表, 内核通过引导程序传递环境变量的 方式或通。

3、过将动态分区表共享到同一段未使用的 内存的方式获取来构造内核分区表。 采用本发明, 能够在解决坏块的同时减少冗余块, 提高存储介 质的利用率。 (51)Int.Cl. 权利要求书 2 页 说明书 6 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图3页 (10)申请公布号 CN 103744694 A CN 103744694 A 1/2 页 2 1. 一种基于 Nand 闪存的动态分区搜索装置, 其特征在于, 该装置包括版本升级模块、 可烧录版本模块、 烧录模块以及动态分区解析模块 ; 其中 : 版本升级模块, 用于将预存储在动态。

4、分区的各分区的二进制执行部件按序组装合并成 一个文件, 并加入版本头信息部件 ; 可烧录版本模块, 用于将Nand闪存中实际存储的N个分区的顺序依次进行烧录版本组 装 ; 由 N-M 个静态分区预存储的二进制执行部件和版本升级模块进行组装合并 ; 烧录模块 : 用于当需要烧录版本文件到 Nand 闪存中时, 将所述带 ECC 算法的可烧录版 本提供给烧录器, 由所述烧录器将所述可烧录版本文件烧录到 Nand 闪存中 ; 动态分区解析模块 : 用于在引导程序启动时搜索版本头, 根据版本头记录的信息和 Nand 闪存依次搜索到的块状态构造出动态分区表, 内核通过引导程序传递环境变量的方式 或者通过。

5、将动态分区表共享到同一段未使用的内存的方式获取来构造内核分区表。 2. 根据权利要求 1 所述基于 Nand 闪存的动态分区搜索装置, 其特征在于, 所述的版本 升级模块, 用于按照块对齐的方式记录各动态分区存储文件的实际大小。 3. 根据权利要求 1 或 2 所述基于 Nand 闪存的动态分区搜索装置, 其特征在于, 还用于 在 Nand 闪存中的引导程序能正常启动的情况下, 将该版本升级文件用于通过软件的方式 进行版本的在线升级更新。 4. 根据权利要求 1 所述基于 Nand 闪存的动态分区搜索装置, 其特征在于, 在所述可烧 录版本模块中, 如果 N-M 个静态分区预存储的二进制执行部。

6、件未达到该分区大小, 则所述 未达到的部分需要按 0xFF 进行填充。 5. 根据权利要求 1 或 4 所述基于 Nand 闪存的动态分区搜索装置, 其特征在于, 在所述 可烧录版本模块中, 各部件组装合并完毕, 再根据具体的硬件电路加入相应 ECC 算法进行 填充。 6. 一种基于 Nand 闪存的动态分区搜索方法, 其特征在于, 该方法包括 : A、 获取原始分区信息, 所述原始分区信息包括 N 个分区及每个所述分区的空间大小, 其中 N 为正整数 ; B、 将需要运用动态构造分区搜索方法的分区数 M 合并成一个大的静态分区 C ; 其中 M 为正整数, 且 1=2, 前 N-1 个分区的。

7、搜索过程按步骤 302 步骤 312 的顺序进行。第 i+1 个分区的起始地址 = 第 i 个分区的起始地址 + (第 i 个 分区坏块数 + 第 i 个分区存储的实际文件内容所占的块数) * 块大小。其中, 动态分区之前 的静态分区个数 iN+ 动态分区之前的静态分区个数。当搜索到最后一个动态分区的起始 地址时, 就可以把剩下的存储空间作为该动态分区的大小。 0043 图 2 为本发明实施例基于 Nand Flash 的动态分区的装置结构示意图。如图 2 所 示, 该基于 Nand Flash 的动态分区的装置, 主要包括 : 版本升级模块 201, 可烧录版本模块 202, 烧录模块 20。

8、3 及动态分区解析模块 204。其中 : 版本升级模块 201 : 用于将预存储在动态各分区的二进制执行部件按序组装合并成一 个文件, 并加入版本头信息部件 ; 还用于记录各动态分区存储文件的实际大小。 并且各部件 按照块对齐的方式进行。不需要进行校验和纠错 (ECC) 算法进行填充。所述模块的一个作 用是可以方便可烧录版本的制作, 另一个作用是可用来作为软件的在线升级版本文件。 0044 可烧录版本模块 202 : 用于将 Nand 存储介质上实际存储的 N 个分区的顺序依次进 行烧录版本组装。如图 4 所示, burnrom 版本 408 是由 uboot 二进制文件、 用户配置文件、 f。

9、ireware 版本 407 组装合并而成。其中, fireware 版本 407 文件是由版本头、 内核和文件 说 明 书 CN 103744694 A 8 6/6 页 9 系统组装合并而成。如果 uboot 二进制文件的大小未达到 uboot 区 401 的大小时, 需要进 行 0xFF 进行填充, 用户配置需要使用 0xFF 填充用户配置区 402 的区域大小。fireware 版 本 407 组装版本头 404, 内核 405 和文件系统 406 时需要进行块对齐, 大小未达到的部分使 用 0xFF 进行填充。 0045 这里, 根据不同的硬件设计方案, Nand Flash 所采用的。

10、 ECC 纠错编码方式可能有 所不同, 确定自己所采用的 ECC 编码方式后, 根据芯片厂家提供的 ECC 算法, 对上面组装成 的烧录版本文件 burnrom 版本 408 加入 ECC 算法进行相应的填充处理。 0046 烧录模块203 : 用于当需要烧录版本文件到Nand Flash芯片中时, 将所述带ECC算 法的可烧录版本 burnrom 版本 408 提供给烧录器, 由所述烧录器将所述可烧录版本文件烧 录到 Nand 闪存芯片中。 0047 动态分区解析模块 204 : 用于在引导程序启动时搜索版本头, 根据版本头信息和 Nand 闪存的块状态构造出动态分区表, 并向动态分区表通过。

11、环境变量的方式或将动态分区 表共享同一段未使用的内存的方式传递给内核构造内核分区表。 0048 对于双版本、 备份版本等存储结构的应用场合, 本发明的上述搜索方法和装置也 同样适用。 0049 本发明实施例提供的上述基于 Nand 闪存的动态分区搜索装置及其方法, 适用于 各种支持 Nand 闪存的烧录器。应用该搜索方法可以减少 Nand 存储介质预留的冗余块, 提 高 Nand 存储介质的存储空间利用率。同时, 运用上述方法和装置, 能够改变生产线原有的 生产方式, 通过使用烧录器直接烧录可烧录版本文件, 能够简化操作人员对烧录器软件的 复杂操作, 通过简单配置即可完成烧录过程。此外, 还可以解决对于 Nand Flash 存在坏块 的情况下, 在使用现有技术的烧录方式可能导致系统无法正常运行的问题。 0050 以上所述, 仅为本发明的较佳实施例而已, 并非用于限定本发明的保护范围。 说 明 书 CN 103744694 A 9 1/3 页 10 图 1 图 2 说 明 书 附 图 CN 103744694 A 10 2/3 页 11 图 3 说 明 书 附 图 CN 103744694 A 11 3/3 页 12 图 4 说 明 书 附 图 CN 103744694 A 12 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1