CN102999436B - 在Nand闪存中生成动态分区信息的方法和装置 - Google Patents

在Nand闪存中生成动态分区信息的方法和装置 Download PDF

Info

Publication number
CN102999436B
CN102999436B CN201210495157.7A CN201210495157A CN102999436B CN 102999436 B CN102999436 B CN 102999436B CN 201210495157 A CN201210495157 A CN 201210495157A CN 102999436 B CN102999436 B CN 102999436B
Authority
CN
China
Prior art keywords
subregion
dynamic
block
partition information
start address
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.)
Expired - Fee Related
Application number
CN201210495157.7A
Other languages
English (en)
Other versions
CN102999436A (zh
Inventor
秦绍天
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Global Innovation Polymerization LLC
Tanous Co
Original Assignee
Huawei Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Device Co Ltd filed Critical Huawei Device Co Ltd
Priority to CN201210495157.7A priority Critical patent/CN102999436B/zh
Publication of CN102999436A publication Critical patent/CN102999436A/zh
Priority to PCT/CN2013/088017 priority patent/WO2014082583A1/zh
Application granted granted Critical
Publication of CN102999436B publication Critical patent/CN102999436B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本发明实施例提供了一种Nand闪存中生成分区信息的方法和装置。方法包括:解析原始分区信息,原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数;根据n个分区的原始块数量和n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为n个分区生成动态分区信息,动态分区信息包括n个分区的动态起始地址和动态块数量;将动态分区信息存储到指定区域。对应该方法还包括装置。上述技术方案解决了因存储介质存在坏块随机分布的特性,为归避该问题而为分区预留较多的块而引起的资源浪费问题,也包括未考虑该特性而进行分区导致的可靠性问题,节省了块资源,提高了存储介质的利用率。

Description

在Nand闪存中生成动态分区信息的方法和装置
技术领域
本发明实施例涉及计算机领域,更具体地,涉及在Nand闪存中生成动态分区信息的方法和装置。
背景技术
Nand闪存是一种能够进行读写、擦除的存储介质,其容量大、擦写速度快,且具有价格低廉等优势,被广泛应用在机顶盒、数码相机、手机、平板电脑等其他电子产品上,用来存放程序、参数、媒体数据等。而大多数产品采用的操作系统中,通过抽象设备访问层,提供了一种例如MTD(MemoryTechnology Device,内存技术设备)的系统,MTD为该操作系统提供了针对闪存访问的统一、抽象的接口。
对MTD设备的使用过程来说,进行分区是其中一个重要的步骤。所谓分区,就是在闪存上划分多个区域,划分后的区域简称为分区,每一个分区都有固定的物理的起始地址和分区大小,其中分区大小通常由每个分区所包括的块(block)的数量决定,每个块的大小为默认值。分区的起始地址和块数量在本文中也称为分区信息。这些分区信息是系统在启动和运行过程,闪存上读取数据和挂载文件系统等操作的重要参数。
尽管Nand闪存容量大、价格便宜,但是本身Nand闪存存在一个固有缺陷:出厂时就存在坏块,而且这些坏块随机分布。Nand闪存是以块为单位进行管理的。按照本领域的经验,坏块占整个Nand闪存的块数的比例小于一定值都是可以接收的,该定值例如为2%。因此,很可能在同一分区内会连续出现多个坏块。正是由于这个缺陷,给使用中带来一定的可靠性问题,尤其是对于系统中可能出现的大小较小的分区影响较大。比如用来保存一些参数数据的分区,其大小可能才共占2~4个block,当出现连续多个坏块时,该分区将无法正常写入参数,系统启动时则也无法读出参数。
为此,现有技术中通过为Nand闪存的每个分区预留若干块以解决遇到坏块时引起的问题。分区信息的块数量中包括预留的块数量。当该Nand闪存的坏块数量较少时,则预留的块中较多没有用到,而现有技术中分区信息无法更改,造成了资源浪费。
发明内容
有鉴于此,本发明实施例提供一种在Nand闪存中生成动态分区信息的方法和装置,以解决为规避存储介质存在坏块随机分布的特性而为分区预留较多数量的块而引起的资源浪费的问题。
第一方面,提供了一种在Nand闪存中生成动态分区信息的方法,包括:解析原始分区信息,原始分区信息包括命名的n个分区和每个分区的原始块数量,其中n为正整数;根据n个分区的原始块数量和n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为n个分区生成动态分区信息,动态分区信息包括n个分区的动态起始地址和动态块数量;将动态分区信息存储到指定区域。
在第一种可能的实现方式中,将n个分区的第1个分区的原始起始地址作为第1个分区的动态起始地址,从第1个分区开始直到第n个分区为止,依次检测第i个分区中的各个块的状态,其中i∈{1,n};当检测到当前块的状态为好,则将好块数量加1;且当检测到当前块的状态为坏,则将坏块数量加1;且当好块数量≥第i个分区的原始块数量时,将好块数量与坏块数量的和作为第i个分区的动态块数量,且通过第i个分区的动态起始地址和第i个分区的动态块数量确定第i+1个分区的动态起始地址。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,第i+1个分区的动态起始地址=第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
结合第一方面或第一方面的上述可能的实现方式,在第三种可能的实现方式中,当检测到当前块的状态为好时,则擦除当前块并写入数据;或当检测到当前块的状态为坏时,则跳过当前块且不写入数据。
结合第一方面或第一方面的上述可能的实现方式,在第四种可能的实现方式中,在解析原始分区信息前,生成原始分区信息。
结合第一方面或第一方面的上述可能的实现方式,在第五种可能的实现方式中,在解析原始分区信息前,还在Nand闪存的第一个分区的第一个块中写入引导程序。
第二方面,提供了一种在Nand闪存中生成分区信息的装置,包括解析单元、第一生成单元和存储单元:解析单元,用于解析原始分区信息并发送到第一生成单元,原始分区信息包括命名的n个分区和每个分区的原始块数量,其中n为正整数;第一生成单元,用于根据解析单元解析的n个分区的原始块数量和n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为n个分区生成动态分区信息并发送到存储单元,动态分区信息包括n个分区的动态起始地址和动态块数量;存储单元,用于将第一生成单元生成的动态分区信息存储到指定区域。
在第一种可能的实现方式中,第一生成单元包括检测模块、计数模块和确定模块:检测模块,用于将n个分区的第1个分区的原始起始地址作为第1个分区的动态起始地址,从第1个分区开始直到第n个分区为止,依次检测第i个分区中的各个块的状态,其中i∈{1,n};当检测模块检测到当前块的状态为好,则计数模块将好块数量加1;且当检测模块检测到当前块的状态为坏,则计数模块将坏块数量加1;且当好块数量≥第i个分区的原始块数量时,确定模块将好块数量与坏块数量的和作为第i个分区的动态块数量,且通过第i个分区的动态起始地址和第i个分区的动态块数量确定第i+1个分区的动态起始地址。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,确定模块具体用于下述公式以确定动态起始地址:第i+1个分区的动态起始地址=第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
结合第二方面或第二方面的上述可能的实现方式,在第三种可能的实现方式中,装置还包括擦除单元和烧写单元:当检测模块检测到当前块的状态为好时,则擦除单元用于擦除当前块且烧写单元在当前块中写入数据;或当检测模块检测到当前块的状态为坏时,则擦除单元用于跳过当前块且烧写单元在当前块不写入数据。
结合第二方面或第二方面的上述可能的实现方式,在第四种可能的实现方式中,装置还包括第二生成单元:第二生成单元,用于在解析原始分区信息前,生成原始分区信息。
结合第二方面或第二方面的上述可能的实现方式,在第五种可能的实现方式中,装置还包括烧写单元:烧写单元,用于在解析原始分区信息前,在Nand闪存的第一个分区的第一个块中写入引导程序。
通过上述技术方案解析原始分区信息,针对每个分区中的每个块进行好坏检测,重新统计每个分区中块的数量以及起始地址,生成动态分区信息,从而可以动态改变分区信息,节省了存储介质的块资源,提高了存储介质的利用率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中一种在Nand闪存中生成分区信息的方法的示意图。
图2是现有技术另一种在Nand闪存中生成分区信息的方法的示意图。
图3是现有技术的又一种在Nand闪存中生成分区信息的方法的示意图。
图4是本发明实施例的在Nand闪存中生成动态分区信息的方法的示意流程图。
图5是本发明实施例的在Nand闪存中生成动态分区信息的方法的示意流程图。
图6是本发明实施例的生成分区信息的方法的示意原理图。
图7是本发明实施例的在Nand闪存中生成动态分区信息的装置的示意框图。
图8是本发明实施例的在Nand闪存中生成动态分区信息的另一装置的示意框图。
图9是本发明实施例的在Nand闪存中生成动态分区信息的另一装置的示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1是现有技术中一种在Nand闪存中生成分区信息的方法的示意图。图1中示意了4个分区,第一分区11、第二分区12、第三分区13和第四分区14,分别用于存储引导(boot)程序、系统核心(Linux Kernel)程序、根文件系统(Root file System)和参数数据(Parameters Data)。为说明方便,此处各分区以序号命名,但其中分区的命名可以采用其他方式,例如第一分区11也可以命名为引导分区、第四分区14也可以命名为参数分区等。一块Nand闪存包括若干块。块大小为出厂缺省值。以下将一个分区中包括的块数量简称为块数量。此处,假设1个块大小为128K字节。各分区的起始地址和大小如图1所示,分别为:第一分区11的起始地址为0×0,大小为512K字节,块数量为4;第二分区12的起始地址为0x80000,大小为4M字节,块数量为32;第三分区13的起始地址为0x480000,大小为40M字节,块数量为320;第四分区14的起始地址为0x2C80000,大小为512K字节,块数量为4。第一分区的起始地址是已知的,可选地,可以从0×0开始;当然,也可以从指定地址开始。这样,一个分区的块数量×块大小加上起始地址得到的字节数就是下一个分区的起始地址。本文中的分区信息至少包括分区的命名和块数量。
通常情况,系统上电复位后,会启动第一分区11的引导程序,然后引导程序会从第二分区12中读取系统核心程序并运行,接着系统核心程序会根据分区信息,将第三分区13挂载引导文件系统,并启动相关应用,最后将第四分区14挂载,读取相关的参数数据。由此可见,分区信息对系统的启动和运行至关重要。
一种现有技术,参考图2,不考虑Nand闪存的坏块随机分布的特性,仅仅根据分区实际用到的块数量,以及考虑到为防止分区在使用过程中可能出现坏块而预留的块数量,而进行分区。
图2是现有技术另一种在Nand闪存中生成分区信息的方法的示意图。其中,图2中示出第一分区21、第二分区22和第三分区23,以第二分区22为例进行说明。第二分区22,也可以称为参数分区,用于存储参数数据(Parameter Data)。通常情况下,参数分区的数据量比较小,假设只占2个块(共2×128K字节=256K字节)。考虑使用过程,可能会因为长时间的擦写产生坏块,因此,规划参数分区时,多预留2个,这样参数分区一共是4个块。
由于该分区的方法中没有考虑到Nand闪存的坏块的随机分布的特性,其缺陷非常明显。以第二分区22为例,如果该分区的4个块刚好都是坏块,那么就意味着该分区将无法写入数据,系统启动时,将无法正确读写数据,导致系统异常。而现有技术中,分区信息是不能更改的,那么就意味着这块Nand闪存将无法使用,只能作为不良品。但实际上这块Nand闪存是符合要求的,只不过出场时的坏块刚好集中到该分区而已。因此,按照图2的现有技术分区,实际上会造成物料的浪费。
另一种现有技术,参考图3,在分区时,充分考虑Nand闪存的坏块随机分布的特性。即在规划分区时,除了考虑正常的数据存储区域外,还要考虑因为坏块的随机分布特性,而为每个分区预留一定数量的块;按照本领域通用的做法,最可靠的是为每个分区预留Nand闪存总块数的2%,以容量为512M字节的Nand闪存来说,需要为每个分区至少预留80个块。
图3是现有技术的又一种在Nand闪存中生成分区信息的方法的示意图。图3中示意性包括了六个分区,第一分区31至第六分区36,其中每个分区中包括的预留区域分别为31A至36A。
如果分区较多,例如有较多的分区用于存储参数数据,按照图3的技术方案,必须要为每个分区至少都预留80个块,每个块大小为128K字节,假设如图3示例有6个分区,那么系统中的预留区域共有6×80×128K=60M字节。这意味着为了归避Nand闪存坏块随机分布的特性带来的风险,而导致系统中会有更多的块被作为预留区。但是在实际应用中,大部分情况下,坏块并没有那么多,而且也不会恰好都分布在参数分区。从实际出发,像参数分区本身很小,只需预留较少数量的块即可。图3所示的分区方法会造成较多数量的块被浪费掉。
为了避免上述现有技术中的各种资源浪费,本发明实施例提供了一种在Nand闪存中生成动态分区信息的方法和装置,可以动态地调整分区,生成新的分区信息。
图4是本发明实施例的在Nand闪存中生成动态分区信息的方法40的示意流程图,包括以下内容。
S41,解析原始分区信息,原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数。
在Nand闪存中烧写数据时,都会参考一个原始分区信息。原始分区信息可以从其他设备处获取,也可以由执行本方法40的装置生成。从原始分区信息中,可以得知Nand闪存被划分成n个分区,n个分区的名字,以及每个分区所包括的原始块数量。n个分区中的第一个分区的原始起始地址已知,因此通过每个分区所包括的原始块数量可以确定每个分区的原始大小和原始起始地址。需要提取原始分区信息中的信息,例如分区的顺序、每个分区所包括的原始块数量等。
S42,根据n个分区的原始块数量和n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为n个分区生成动态分区信息,动态分区信息包括n个分区的动态起始地址和动态块数量。
本发明实施例中考虑到Nand闪存的坏块是可以检测到的。通过在构造分区的时候,能够根据分区时每个分区的原始大小,对每个分区内的块做状态检查,主动跳过坏块,使得分区中好块数量能满足每个分区的原始大小,从而动态地调整分区,生成新的分区信息即动态分区信息。
S43,将所述动态分区信息存储到指定区域。
生成上述动态分区信息后,需存储该动态分区信息,可以存储到指定区域。系统启动后,将读取该动态分区信息,进行数据操作,包括读取或运行核心程序、挂载文件系统、读取参数等操作。在系统核心程序启动后,还要根据该分区进行文件系统的挂载等操作。因此,对该分区信息的保存至关重要。
可选的,如果可以确定以后对上述动态分区信息不做更改,可以进行一次性编程(OTP,once time program)保护。
本发明实施例解决了因存储介质存在坏块随机分布的特性,为归避该问题而为分区预留较多的块而引起的资源浪费问题,也包括未考虑该特性而进行分区导致的可靠性问题,通过解析原始分区信息,针对每个分区中的每个块进行好坏检测,重新统计每个分区中块的数量以及起始地址,生成动态分区信息,从而可以动态改变分区信息,节省了存储介质的块资源,提高了存储介质的利用率。
图5是本发明实施例的在Nand闪存中生成动态分区信息的方法50的示意流程图,包括以下内容。
可选的,本发明实施例的方法可以应用在生产Nand闪存的过程中。在工厂生产加工时,通常需要对Nand闪存进行烧片处理。
在一个实施例中,通过本发明实施例的方法,首先要先规划出原始分区信息,然后将原始分区信息传递给烧片机,烧片机解析该原始分区信息后,动态计算各个分区的块数量,依次创建新的分区并擦除和烧录数据,并将产生的新的分区信息作为动态分区信息存储到事先规划好的地方,举例来说,可以存储到Nand闪存的第一个块的指定区域中,或者也可以存储到Nand闪存的属性区中。其中Nand闪存的属性区是独立于主存储区的一块特殊的储存区域,用于存放Nand闪存的配置信息,用户使用Nand闪存进行数据的擦写不会影响属性区中的内容。可选的,作为一种实施方式,也可以将动态分区信息存储到与Nand闪存结合使用的Nor闪存中。Nor闪存同样能够进行读写、擦除,其特点是读取速度块,可靠性好,但容量小,擦写速度慢,且价格昂贵。Nor闪存没有Nand闪存固有的存在坏块随机分布的特性,因此,两种闪存可以结合使用为用户提供更可靠的存储功能。在该实施方法中,Nor闪存可以用来存储Nand闪存的引导程序或动态分区信息,从而避免由于Nand闪存中的坏块随机分布特性导致无法工作的问题。
在本领域的技术中,会确保出厂时Nand闪存的第一个块是好块。因此,通常也会将引导程序存储在第一个块的指定区域中。
可选的,在本发明的另一个实施例中,如果对Nand闪存的数据的烧录采用的是以下方法:先烧写引导程序,然后由引导程序统一进行烧写数据到Nand闪存中,则引导程序中的应用过程同样可以使用本发明实施例的方法。首先使引导程序获取到原始分区信息,包括但不限于:实现原始分区信息到引导程序中,或通过串口或网络读取原始分区信息,引导程序解析该原始分区信息,然后读取烧录数据,动态计算各个分区的块数量,并擦除和烧写数据到Nand闪存,最后将新生成的分区信息作为动态分区信息存储到事先规划好的地方,举例来说,可以存储到Nand闪存的第一个块的指定区域中,或者也可以存储到Nand闪存的属性区中,或者还可以存储到与Nand闪存结合使用的Nor闪存。
S51,生成原始分区信息。
原始分区信息中定义了Nand闪存中需要顺序生成的n个分区,每个分区的名字和每个分区中包括的块数量。其中,第i个分区为n个分区中的一个,n为正整数,i∈{1,n}。
通过每个分区中包括的块数量,以及块大小的缺省值,可以确定每个分区的大小。
可选的,作为一种实现方式,可以由实施本发明实施例方法的装置生成原始分区信息。
原始分区信息包括多个分区,可以通过分区表的形式呈现。分区表中的信息包括:每个分区的名字,可以任意命名,以及每个分区包括的原始块数量。作为一种实现方法,原始分区表的表项信息可以抽象为如下表示:
S52,获取原始分区信息。
S52为S51的可替代方式。可选的,也可以由其他设备生成原始分区信息,通过本发明实施例的装置实现原始分区信息到引导程序中,或通过串口或网络从其他设备处读取原始分区信息。
S53,解析每一个分区的原始分区信息。
首先从第一个分区开始顺序确定每一个分区的原始起始地址和原始块数量。
举例来说,首先指定第一分区的原始起始地址为0×0,假设1个块大小为128K字节,原始块数量为2。从第一分区开始,逐块检测,根据块状态的好与坏,存储新的也就是动态块数量,以及新的即动态起始地址。其中,第一分区的原始起始地址和动态起始地址相同。接下来,依次检测每一个分区内的块状态,直至检测完最后一个分区。
S54,检测块的状态,是否是好块。
如果是好块,即S54的“是”,则执行S55。
S55,擦除并烧录数据,将好块数量加1。
如果是坏块,即S54的“否”,则执行S56
S56,跳过该坏块,将坏块数量加1。
跳过(skip)该坏块,不做任何例如擦除或烧写的处理。
S57,确定好块数量是否大于等于原始块数量。
在该分区中,如果好块数量≥原始块数量,即S57的“是”,则执行S58。
S58,存储生成的动态分区信息。
将好块数量与坏块数量的和作为该分区的动态块数量,将该分区的动态起始地址和动态块数量作为该分区的动态分区信息。且通过该分区的动态起始地址和该分区的动态块数量确定下一个分区的动态起始地址。
将所有分区的动态分区信息统一存储在事先规划好的地方,例如可以存储到Nand闪存的第一个块的指定区域中,或者也可以存储到Nand闪存的属性区中,或者还可以存储到与Nand闪存结合使用的Nor闪存。
其中,第一分区的原始起始地址和动态起始地址相同。根据块状态的检测,各分区的原始块数量和动态块数量可能是相同的也可能是不同的;第一个分区后的分区的原始起始地址和动态起始地址可能是相同的也可能是不同的。其中,第i+1个分区的动态起始地址=所述第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
动态分区信息的表项信息,可抽象为如下表示:
图6是本发明实施例的生成分区信息的方法的示意原理图。
举例来说,参考图6,原始分区信息中第二分区61的原始块数量为4,即需要有4个好块。如果通过块状态检测、确定在保证第二分区61内至少包括4个好块前,检测出3个坏块,则重新确定的第二分区的动态块数量为好块数量与坏块数量之和,等于7。当重新确定了第二分区的动态块数量后,第三分区的动态起始地址从第二分区结尾开始,也就是第三分区的动态起始地址=第二分区的动态起始地址+第二分区的动态块数量×块大小。
在该分区中,如果好块数量<原始块数量,即S57的“否”,则执行S59。
S59,检测下一个块的状态。
本发明实施例通过获取并解析原始分区信息,针对每个分区中的每个块进行好坏检测,重新统计每个分区中块的数量以及起始地址,生成动态分区信息,从而可以动态改变分区信息,节省了存储介质的块资源,提高了存储介质的利用率。
由于本发明实施例是动态产生分区信息,系统启动后才进行读取该分区信息,进行数据读取和分区挂载等。因此,只要有需要重新生成分区的时候,都可以采用该方法,因此,可选的,也适用于以下情况。
在本发明一个实施例中,如果在后续使用过程中,由于Nand闪存的块在多次擦写并超过寿命后,会变成坏块,最终会导致因分区上的好块数量不足,而无法使用该分区,从而造成整个系统无法使用。但基于Nand闪存大容量的特点,还有足够的空间使用,因此只需要通过重新调整分区即可正常工作。由此,通过本发明实施例,可以改变传统的静态分区,避免了分区所在的坏块较多时导致分区无法使用,或者预留的块数量过多造成分区浪费等问题。
在本发明另一个实施例中,如果生成的分区信息不幸遭到破坏,需要通过引导程序进行升级系统时,需要进行重新分区。由此,通过本发明实施例,可以改变传统的静态分区,避免了分区信息丢失时导致Nand闪存无法正常使用,或者预留的块数量过多造成分区浪费等问题。
以上两种情况,都可采用本发明实施例的方法,例如方法40或50,生成动态分区信息。
图7是本发明实施例的在Nand闪存中生成动态分区信息的装置70的示意框图。装置70包括:解析单元71、第一生成单元72和存储单元73。
解析单元71解析原始分区信息并发送到所述第一生成单元,所述原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数。
第一生成单元72根据所述解析单元解析的所述n个分区的原始块数量和所述n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为所述n个分区生成动态分区信息并发送到所述存储单元,所述动态分区信息包括所述n个分区的动态起始地址和动态块数量。
存储单元73将所述第一生成单元生成的所述动态分区信息存储到指定区域。存储单元73将所有分区的动态分区信息统一存储在事先规划好的地方,例如可以存储到Nand闪存的第一个块的指定区域中,或者也可以存储到Nand闪存的属性区中,或者还可以存储到与Nand闪存结合使用的Nor闪存。
本发明实施例的装置解决了因存储介质存在坏块随机分布的特性,为归避该问题而为分区预留较多的块而引起的资源浪费问题,也包括未考虑该特性而进行分区导致的可靠性问题,通过解析原始分区信息,针对每个分区中的每个块进行好坏检测,重新统计每个分区中块的数量以及起始地址,生成动态分区信息,从而可以动态改变分区信息,节省了存储介质的块资源,提高了存储介质的利用率。
图8是本发明实施例的在Nand闪存中生成动态分区信息的另一装置80的示意框图。装置80包括:解析单元81、第一生成单元82、存储单元83、擦除单元84、烧写单元85、以及第二生成单元86或获取单元87。装置80的获取单元87、第一生成单元82和存储单元83与装置70的解析单元71第一生成单元72和存储单元73相同或相似。不同在于,装置80的第一生成单元82可以包括检测模块821、计数模块822和确定模块823,装置80还可以包括擦除单元84和烧写单元85,以及第二生成单元86或获取单元87。
解析单元81解析原始分区信息并发送到所述第一生成单元,所述原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数。
第一生成单元82根据所述解析单元解析的所述n个分区的原始块数量和所述n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为所述n个分区生成动态分区信息并发送到所述存储单元,所述动态分区信息包括所述n个分区的动态起始地址和动态块数量。
存储单元83将所述第一生成单元生成的所述动态分区信息存储到指定区域。存储单元83将所有分区的动态分区信息统一存储在事先规划好的地方,例如可以存储到Nand闪存的第一个块的指定区域中,或者也可以存储到Nand闪存的属性区中,或者还可以存储到与Nand闪存结合使用的Nor闪存。
可选的,作为不同的实施例,检测模块821将所述n个分区的第1个分区的原始起始地址作为第1个分区的动态起始地址,从第1个分区开始直到第n个分区为止,依次检测第i个分区中的各个块的状态,其中i∈{1,n};当所述检测模块821检测到当前块的状态为好,则所述计数模块822将好块数量加1;且当所述检测模块821检测到当前块的状态为坏,则所述计数模块822将坏块数量加1;且当好块数量≥所述第i个分区的原始块数量时,所述确定模块823将好块数量与坏块数量的和作为所述第i个分区的动态块数量,且通过所述第i个分区的动态起始地址和所述第i个分区的动态块数量确定第i+1个分区的动态起始地址。
其中,确定模块823具体通过下述公式以确定动态起始地址。第i+1个分区的动态起始地址=所述第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
可选的,作为不同的实施例,当所述检测模块821检测到当前块的状态为好时,则所述擦除单元84用于擦除所述当前块且所述烧写单元85在所述当前块中写入数据;或当所述检测模块821检测到当前块的状态为坏时,则所述擦除单元84跳过所述当前块且所述烧写单元85在所述当前块不写入数据。
可选的,作为不同的实施例,装置80还可以包括第二生成单元86。第二生成单元86生成原始分区信息。或者,可选的,装置80还可以包括获取单元87,获取单元87可以从其他设备获取所生成的原始分区信息。
装置80可以生成或获取原始分区信息后,通过解析原始分区信息后,生成动态分区信息和烧录数据。可选的,作为不同的实施例,烧写单元85可以在解析原始分区信息前,在Nand闪存的第一分区的第一个块中写入引导程序。这样,装置80先烧写好引导程序,然后由引导程序统一进行烧写数据到Nand闪存中,则引导程序中的应用过程可以使用本发明实施例的方法40或50。
本发明实施例的装置解决了因存储介质存在坏块随机分布的特性,为归避该问题而为分区预留较多的块而引起的资源浪费问题,也包括未考虑该特性而进行分区导致的可靠性问题,通过获取并解析原始分区信息,针对每个分区中的每个块进行好坏检测,重新统计每个分区中块的数量以及起始地址,生成动态分区信息,从而可以动态改变分区信息,节省了存储介质的块资源,提高了存储介质的利用率。
此外,本发明实施例装置改变了传统的静态分区,避免了分区所在的坏块较多时导致分区无法使用、还避免了分区信息丢失时导致Nand闪存无法正常使用。
图9是本发明实施例的在Nand闪存中生成动态分区信息的另一装置90的示意框图。装置90包括处理器91和存储器92。
存储器92可以是包括RAM和ROM、或任何固定的存储介质、或可移动的存储介质,用于存储可以执行本发明实施例的程序或本发明实施例中待处理的数据。
处理器91用于执行存储器92存储的本发明实施例的程序。处理器91可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器92,处理器91读取存储器92中的信息,结合其硬件完成上述方法的步骤。
其中,处理器91解析原始分区信息,所述原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数;根据解析的所述n个分区的原始块数量和所述n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为所述n个分区生成动态分区信息,所述动态分区信息包括所述n个分区的动态起始地址和动态块数量;将生成的所述动态分区信息存储到指定区域。其中,处理器91将所有分区的动态分区信息统一存储在事先规划好的地方,例如可以存储到Nand闪存的第一个块的指定区域中,或者也可以存储到Nand闪存的属性区中,或者还可以存储到与Nand闪存结合使用的Nor闪存。
可选的,作为不同的实施例,处理器91将所述n个分区的第1个分区的原始起始地址作为第1个分区的动态起始地址,从第1个分区开始直到第n个分区为止,依次检测第i个分区中的各个块的状态,其中i∈{1,n};当检测到当前块的状态为好,则将好块数量加1;且当检测到当前块的状态为坏,则将坏块数量加1;且当好块数量≥所述第i个分区的原始块数量时,将好块数量与坏块数量的和作为所述第i个分区的动态块数量,且通过所述第i个分区的动态起始地址和所述第i个分区的动态块数量确定第i+1个分区的动态起始地址。
可选的,作为不同的实施例,处理器91根据以下公式确定动态起始地址:第i+1个分区的动态起始地址=所述第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
可选的,作为不同的实施例,处理器91当检测到当前块的状态为好时,则擦除所述当前块并写入数据;或当检测到当前块的状态为坏时,则跳过所述当前块且不写入数据。
可选的,作为不同的实施例,处理器91生成所述原始分区信息。
可选的,作为不同的实施例,处理器91在所述解析原始分区信息前,还在所述Nand闪存的第一个分区的第一个块中写入引导程序。
本发明实施例解决了因存储介质存在坏块随机分布的特性,为归避该问题而为分区预留较多的块而引起的资源浪费问题,也包括未考虑该特性而进行分区导致的可靠性问题,通过解析原始分区信息,针对每个分区中的每个块进行好坏检测,重新统计每个分区中块的数量以及起始地址,生成动态分区信息,从而可以动态改变分区信息,节省了存储介质的块资源,提高了存储介质的利用率。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种在Nand闪存中生成分区信息的方法,其特征在于,包括:
解析原始分区信息,所述原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数;
根据所述n个分区的原始块数量和所述n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为所述n个分区生成动态分区信息,所述动态分区信息包括所述n个分区的动态起始地址和动态块数量;
将所述动态分区信息存储到指定区域;
其中,
所述根据所述n个分区的原始块数量和所述n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为所述n个分区生成动态分区信息,所述动态分区信息包括n个分区的动态起始地址和动态块数量,包括:
将所述n个分区的第1个分区的原始起始地址作为第1个分区的动态起始地址,从第1个分区开始直到第n个分区为止,依次检测第i个分区中的各个块的状态,其中i∈{1,n};
当检测到当前块的状态为好,则将好块数量加1;且当检测到当前块的状态为坏,则将坏块数量加1;且
当好块数量大于或者等于所述第i个分区的原始块数量时,将好块数量与坏块数量的和作为所述第i个分区的动态块数量,且通过所述第i个分区的动态起始地址和所述第i个分区的动态块数量确定第i+1个分区的动态起始地址。
2.根据权利要求1所述的方法,其特征在于,所述通过所述第i个分区的动态起始地址和所述第i个分区的动态块数量确定第i+1个分区的动态起始地址,包括:
第i+1个分区的动态起始地址=所述第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
当检测到当前块的状态为好时,则擦除所述当前块并写入数据;或
当检测到当前块的状态为坏时,则跳过所述当前块且不写入数据。
4.根据权利要求1或2所述的方法,其特征在于,在所述解析原始分区信息前,所述方法还包括:
生成所述原始分区信息。
5.根据权利要求1或2所述的方法,其特征在于,在所述解析原始分区信息前,所述方法还包括:
在所述Nand闪存的第一个分区的第一个块中写入引导程序。
6.一种在Nand闪存中生成分区信息的装置,其特征在于,包括解析单元、第一生成单元和存储单元:
所述解析单元,用于解析原始分区信息并发送到所述第一生成单元,所述原始分区信息包括命名的n个分区和每个所述分区的原始块数量,其中n为正整数;
所述第一生成单元,用于根据所述解析单元解析的所述n个分区的原始块数量和所述n个分区的第1个分区的原始起始地址,通过顺序检测各分区的块的状态,为所述n个分区生成动态分区信息并发送到所述存储单元,所述动态分区信息包括所述n个分区的动态起始地址和动态块数量;
所述存储单元,用于将所述第一生成单元生成的所述动态分区信息存储到指定区域;
其中,
所述第一生成单元包括检测模块、计数模块和确定模块:
所述检测模块,用于将所述n个分区的第1个分区的原始起始地址作为第1个分区的动态起始地址,从第1个分区开始直到第n个分区为止,依次检测第i个分区中的各个块的状态,其中i∈{1,n};
当所述检测模块检测到当前块的状态为好,则所述计数模块将好块数量加1;且当所述检测模块检测到当前块的状态为坏,则所述计数模块将坏块数量加1;且
当好块数量大于或者等于所述第i个分区的原始块数量时,所述确定模块将好块数量与坏块数量的和作为所述第i个分区的动态块数量,且通过所述第i个分区的动态起始地址和所述第i个分区的动态块数量确定第i+1个分区的动态起始地址。
7.根据权利要求6所述的装置,其特征在于,所述确定模块具体用于根据下述公式以确定动态起始地址:
第i+1个分区的动态起始地址=所述第i个分区的动态起始地址+第i个分区的动态块数量×块大小。
8.根据权利要求6或7所述的装置,其特征在于,所述装置还包括擦除单元和烧写单元:
当所述检测模块检测到当前块的状态为好时,则所述擦除单元用于擦除所述当前块且所述烧写单元在所述当前块中写入数据;或
当所述检测模块检测到当前块的状态为坏时,则所述擦除单元用于跳过所述当前块且所述烧写单元在所述当前块不写入数据。
9.根据权利要求6或7所述的装置,其特征在于,所述装置还包括第二生成单元:
所述第二生成单元,用于在所述解析原始分区信息前,生成所述原始分区信息。
10.根据权利要求6或7所述的装置,其特征在于,所述装置还包括烧写单元:
所述烧写单元,用于在解析原始分区信息前,在所述Nand闪存的第一个分区的第一个块中写入引导程序。
CN201210495157.7A 2012-11-28 2012-11-28 在Nand闪存中生成动态分区信息的方法和装置 Expired - Fee Related CN102999436B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210495157.7A CN102999436B (zh) 2012-11-28 2012-11-28 在Nand闪存中生成动态分区信息的方法和装置
PCT/CN2013/088017 WO2014082583A1 (zh) 2012-11-28 2013-11-28 在Nand闪存中生成动态分区信息的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210495157.7A CN102999436B (zh) 2012-11-28 2012-11-28 在Nand闪存中生成动态分区信息的方法和装置

Publications (2)

Publication Number Publication Date
CN102999436A CN102999436A (zh) 2013-03-27
CN102999436B true CN102999436B (zh) 2015-09-09

Family

ID=47928029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210495157.7A Expired - Fee Related CN102999436B (zh) 2012-11-28 2012-11-28 在Nand闪存中生成动态分区信息的方法和装置

Country Status (2)

Country Link
CN (1) CN102999436B (zh)
WO (1) WO2014082583A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999436B (zh) * 2012-11-28 2015-09-09 华为终端有限公司 在Nand闪存中生成动态分区信息的方法和装置
CN103744694B (zh) * 2013-12-24 2017-08-11 武汉烽火众智数字技术有限责任公司 基于Nand闪存的动态分区搜索装置及其方法
TWI515733B (zh) * 2013-12-27 2016-01-01 緯創資通股份有限公司 快閃記憶體燒錄方法與電腦可讀取媒體
CN106339246A (zh) * 2016-08-31 2017-01-18 福建联迪商用设备有限公司 一种用于nandflash生产阶段的烧写方法及其烧写系统
US10635451B2 (en) 2016-09-08 2020-04-28 Hewlett-Packard Development Company, L.P. Mass storage medium having an operating system but not a partition table pre-installed
CN107357878A (zh) * 2017-07-06 2017-11-17 成都睿胜科技有限公司 可伸缩式微型文件系统及其实现方法
CN107436734A (zh) * 2017-07-28 2017-12-05 郑州云海信息技术有限公司 一种固态盘的逻辑分区实现方法及装置
CN110825714A (zh) * 2019-11-08 2020-02-21 珠海奔图电子有限公司 文件存储控制方法及其装置、文件存储装置、电子装置
CN113535255A (zh) * 2021-06-07 2021-10-22 山东泰物信息技术有限公司 一种基于国密算法异步更新嵌入式linux固件的方法
CN116594639A (zh) * 2021-06-15 2023-08-15 荣耀终端有限公司 系统安装包的管理方法、设备、存储介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848009A (en) * 1996-10-08 1998-12-08 Samsung Electronics Co., Ltd. Integrated circuit memory devices that map nondefective memory cell blocks into continuous addresses
CN1716450A (zh) * 2004-06-30 2006-01-04 深圳市朗科科技有限公司 对闪存数据的存取进行管理的方法
US7818701B1 (en) * 2006-12-22 2010-10-19 Cypress Semiconductor Corporation Memory controller with variable zone size
CN102104750A (zh) * 2009-12-22 2011-06-22 康佳集团股份有限公司 一种网络电视自动升级的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI269167B (en) * 2005-05-04 2006-12-21 Apacer Technology Inc Dynamic memory management method and computer-readable recording medium for making a computer execute the method
CN101281493A (zh) * 2008-05-26 2008-10-08 中兴通讯股份有限公司 与非闪存器及其管理方法
CN102999436B (zh) * 2012-11-28 2015-09-09 华为终端有限公司 在Nand闪存中生成动态分区信息的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848009A (en) * 1996-10-08 1998-12-08 Samsung Electronics Co., Ltd. Integrated circuit memory devices that map nondefective memory cell blocks into continuous addresses
CN1716450A (zh) * 2004-06-30 2006-01-04 深圳市朗科科技有限公司 对闪存数据的存取进行管理的方法
US7818701B1 (en) * 2006-12-22 2010-10-19 Cypress Semiconductor Corporation Memory controller with variable zone size
CN102104750A (zh) * 2009-12-22 2011-06-22 康佳集团股份有限公司 一种网络电视自动升级的方法

Also Published As

Publication number Publication date
WO2014082583A1 (zh) 2014-06-05
CN102999436A (zh) 2013-03-27

Similar Documents

Publication Publication Date Title
CN102999436B (zh) 在Nand闪存中生成动态分区信息的方法和装置
AU2008305452B2 (en) Animating objects using a declarative animation scheme
CN104461391A (zh) 一种存储设备元数据管理处理方法及系统
US20100318760A1 (en) Memory controller, nonvolatile storage device, and nonvolatile storage system
CN103294615A (zh) 一种存储机顶盒用户信息的方法
US20120246394A1 (en) Flash Memory Device and Data Writing Method for a Flash Memory
CN103617209A (zh) 一种移动终端的文件管理方法及装置
CN103778964B (zh) 一种NAND Flash烧写数据的处理、使用方法及装置、系统
CN105335045A (zh) 变更桌面图标的方法及系统
CN103365786A (zh) 数据存储方法、装置和系统
CN110781026A (zh) 嵌入式设备数据存储与修复方法、装置和嵌入式设备
CN103246591B (zh) 信号处理的方法和装置
CN103389941B (zh) 存储器格式化方法、存储器控制器及存储器存储装置
CN110431534B (zh) 用于用户体验事件处理和分析的方法和系统
CN107562766B (zh) 一种数据文件写入方法、装置及系统
CN111367710B (zh) 一种eMMC问题还原方法和装置
CN106681893A (zh) 一种nand flash模拟器的实现方法
CN111026656A (zh) 分布式存储的自动化测试系统、方法、设备及存储介质
CN103970521A (zh) 图标生成系统及方法
CN107526814A (zh) 移动终端文件存储方法及装置
CN108038035A (zh) 一种闪存读写状态的检测方法及相关装置
US20090204776A1 (en) System for securing an access to flash memory device and method for the same
KR100479170B1 (ko) 메모리 억세스 제어장치 및 방법
CN102969026B (zh) 基于数据处理系统的移动存储设备检测方法和装置
CN110286995B (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180222

Address after: California, USA

Patentee after: Tanous Co.

Address before: 518129 Longgang District, Guangdong, Bantian HUAWEI base B District, building 2, building No.

Patentee before: HUAWEI DEVICE Co.,Ltd.

Effective date of registration: 20180222

Address after: California, USA

Patentee after: Global innovation polymerization LLC

Address before: California, USA

Patentee before: Tanous Co.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150909

Termination date: 20211128