查找闪存设备中固件程序存放位置的方法

文档序号:6357762阅读:228来源:国知局
专利名称:查找闪存设备中固件程序存放位置的方法
查找闪存设备中固件程序存放位置的方法
技术领域
本发明涉及闪存技术领域,尤其涉及一种查找闪存设备中固件程序存放位置的方法。
背景技术
闪存(Flash)是一种非挥发性的半导体存储芯片,具有体积小、功耗低、无磁头等 运动器件、不易受物理破坏的优点,是现有便携式存储设备的理想存储介质。利用闪存自身 的非挥发性(即掉电后数据也不会丢失)特点,把固件程序存放于闪存,以闪存为存储介质 的设备包括有 U 盘、SD 卡(Secure DigitalMemory Card,安全数码卡)、SSD (Solid State Disk,固态硬盘)、MP3、Emmc (嵌入式多媒体卡)等闪存设备。所谓固件程序,是闪存设备的 引导程序或者是引导程序的补丁程序。闪存设备加电后,主控芯片(控制单元)从闪存中 读取这部分固件程序,按照预先的定义加载到合适的位置,从而使设备正确运行。闪存通常具有如下的物理结构每片封装片分为一颗或多个晶粒(Dice);每颗晶 粒分为多个块(Block);每个块分为多个页面(Page)。对闪存的数据访问有三种类型擦 除、写入和读取。受闪存的物理特性影响,擦除时必须以块为单位,写入时必须以页为单位。 读取操作则具有比较大的随意性,多数闪存可以以字节为单位读取。操作闪存的主控芯片 一般都会有ECC (Error CodeCorrect,差错纠正)功能,在闪存内数据出错的情况下,可以 把错误的数据纠正回来。但是ECC纠错能力是有限的,当闪存内数据出错的比特数目超出 了 ECC的最大纠错能力时,从闪存内读取的数据就是错误的了。如果从某个块中的某个位 置读出的数据是错误的,则称这个块是坏块(Bad Block)。通常,由于固件程序自身比较大,如果全部从闪存内读出,在进行校验时,所花费 的时间太多,所以当前的主流方案是建立一个很小的数据结构体,在这个数据结构体内记 录了固件程序存放的位置等信息。主控芯片上电搜索时,搜索的是这个数据结构体并进行 校验,校验通过后,在根据其中的信息加载固件程序,因此,查找闪存设备中固件程序存放 位置即查找这个数据结构体的位置,查找固件程序即为查找该数据结构体。尽管不同型号的闪存,其物理结构各自不同,但几乎所有的闪存物理结构都可归 结为行和列。其中,每个页(Page)是一行,页地址称为行地址(rowaddress),页内的不同地 址称为列地址(column address)。如此一来,只用行、列地址即可做到不同型号的闪存的读 取操作。通常,从闪存中加载固件程序时,考虑到要兼容不同型号的闪存,预设了一定的行 列地址算法,根据该算法计算出要访问的行列地址,查找闪存中存放的固件程序。然而,传 统方案在设置行列地址的算法上具有一定的随意性,在闪存质量较差的情况下,使用较为 随意的算法时无法覆盖到较多的块。由于闪存内的坏块一般无法使用,所以使用某些质量 较差的闪存时,会找不到合适的固件程序存放地址,导致无法兼容到该闪存,降低了闪存设 备的易用性。而某些质量较差的闪存价格便宜,如果无法兼容这些闪存,将提高闪存设备的 成本。
传统方案中,也有从闪存的第一个页开始,逐个页地查找固件程序,这种算法可以 覆盖所有块,是一定能找到固件程序的。但是由于访问闪存也是需要时间的,当闪存的质量 比较差时,逐个页地去查找固件程序所需要等待的时间比较长,而用户无法忍受这么长的 等待时间。考虑到这一问题,传统算法中也有计算出的行地址不是连续的,而是间隔的查找 固件程序。然而,这样有时候会忽略掉很多页地址,导致存在查找的“盲点”,即存在这样一 种情况某些块是好的,可以用来存放固件程序,但传统方案的对固件程序的查找方法中并 没有包含这些块。此外,传统方案中还存在“重复搜索”的问题,即传统方案计算出来的页 地址很多时候是在同一个块内,这样,会在同一个块内的不同页上进行搜索,使得对闪存的 访问时间更长,降低了查找固件程序存放位置的效率。

发明内容基于此,有必要提供一种能尽可能多的覆盖较多的块,同时能提高查找效率的查 找闪存设备中固件程序存放位置的方法。一种查找闪存设备中固件程序存放位置的方法,包括以下步骤A.将现有闪存依据每个块内包含的页数由少到多划分为多个等级,对所有等级的 闪存做定量分析,确定每一等级闪存的最大容量的最大行地址;B.假设闪存为第一等级闪存,由第一等级闪存的最大容量的最大行地址除以第一 等级闪存中每个块内包含的页数确定第一数量,按照预设查找方式以第一等级闪存中每个 块内包含的页数为跨度在所述第一数量个块中进行查找;C.判断是否查找到固件程序存放位置,若是,则进入步骤F,否则执行步骤D ;D.判断是否还有下一等级闪存,若是,则进入步骤E,否则进入步骤G ;E.假设闪存为下一等级闪存,由所述下一等级闪存的最大容量的最大行地址与上 一等级闪存最大容量的最大行地址之差除以所述下一等级闪存中每个块内包含的页数确 定第二数量,按照预设查找方式以下一等级闪存中每个块内包含的页数为跨度在所述第二 数量个块中进行查找;F.判断是否查找到固件程序存放位置,若是,则进入步骤G,否则返回步骤D ;G.结束查找。优选的,所述步骤A为将现有闪存依据每个块内包含的页数由少到多划分为三个等级,对所有等级的闪 存做定量分析,确定每一等级闪存的最大容量的最大行地址。优选的,所述步骤A中将现有闪存依据每个块内包含的页数由少到多划分为三个 等级的过程为将64页/块的闪存定义为第一等级闪存;将128页/块的闪存定义为第二等级闪存;将192页/块和256页/块的闪存定义为第三等级闪存。优选的,所述步骤A中对所有等级的闪存做定量分析,确定每一等级闪存的最大 容量的最大行地址的过程为为对三个等级的闪存做定量分析,确定第一等级闪存的最大 容量的最大行地址为0x100000,确定第二等级闪存的最大容量的最大行地址为0x800000, 确定第三等级闪存的最大容量的最大行地址为0x1000000。
优选的,所述预设查找方式为以预设数量个块为单位,先在第一个所述预设数量 个块中查找块号能被2整除的块,然后在第二个所述预设数量个块中查找块号能被3整除 的块,接着在第三个所述预设数量个块中查找块号不能被2整除的块,再接着在第四个所 述预设数量个块中查找块号不能被3整除的块,在下四个所述预设数量个块中重复上述步骤。优选的,所述预设查找方式为以设定数量个块为周期,在每个周期内只查找与块 号对应的页号所在的页。上述查找闪存设备中固件程序存放位置的方法及闪存设备,通过将现有闪存依据 每个块内包含的页数由少到多划分为多个等级,对所有等级的闪存做定量分析,确定每个 等级闪存的最大容量的最大行地址,在查找时,将闪存假设为划分的等级中的闪存,按照该 等级闪存中每个块内包含的页数为跨度进行查找。这样,查找时可以尽可能多的覆盖到不 同的块,提高了查找固件程序存放位置的效率。

图1为一个实施例中查找闪存设备中固件程序存放位置的方法的流程图。
具体实施方式如图1所示,在一个实施例中,一种查找闪存设备中固件程序存放位置的方法,具 体包括以下步骤步骤S102,将现有闪存依据每个块内包含的页数由少到多划分为多个等级,对所 有等级的闪存做定量分析,确定每一等级闪存的最大容量的最大行地址。步骤S104,假设闪存为第一等级闪存,由第一等级闪存的最大容量的最大行地址 除以第一等级闪存中每个块内包含的页数确定第一数量,按照预设查找方式以第一等级闪 存中每个块内包含的页数为跨度在所述第一数量个块中进行查找。步骤S106,判断是否查找到固件程序存放位置,若是,则结束,否则执行步骤 S108。步骤S108,判断是否还有下一等级闪存,若是,则进入步骤S110,否则结束。判断 划分的多个等级中是否还有下一等级闪存,如有,则继续进行查找。步骤S110,假设闪存为下一等级闪存,由所述下一等级闪存的最大容量的最大行 地址与上一等级闪存最大容量的最大行地址之差除以所述下一等级闪存中每个块内包含 的页数确定第二数量,按照预设查找方式以下一等级闪存中每个块内包含的页数为跨度在 所述第二数量个块中进行查找。步骤S112,判断是否查找到固件程序存放位置,若是,则结束,否则返回步骤 S108。在步骤S112中,若还没有查找到固件程序存放位置,则返回步骤S108判断是否还 有下一等级闪存,如有的话,则进入步骤SllO中,以下一等级闪存中每个块内包含的页数 为跨度继续进行查找。在每次执行步骤SllO时,都会调整第二数量,即第二数量是一个不 断变化的参数,在执行步骤SllO时由所述下一等级闪存的最大容量的最大行地址与上一 等级闪存最大容量的最大行地址之差除以所述下一等级闪存中每个块内包含的页数进行确定。该实施例中,假设将现有闪存依据每个块内包含的页数由少到多划分N个等级, 则该查找闪存设备中固件程序存放位置的方法的具体过程如下步骤1,将现有闪存依据每个块内包含的页数由少到多划分为N个等级;对所有等 级的闪存做一个定量分析,确定每种等级闪存的最大容量的最大行地址;步骤2,假设闪存为第一等级闪存,由第一等级闪存的最大容量的最大行地址除以 第一等级闪存中每个块内包含的页数确定第一数量,按照预设查找方式以第一等级闪存中 每个块内包含的页数为跨度在第一数量个块中进行查找;如果查找到固件程序存放位置, 则进入步骤N+1 ;否则,再查找了由第一等级闪存最大容量的最大行地址除以第一等级闪 存每个块内包含的页数确定的第一数量个块后,进入下一步骤。步骤3,假设现有闪存为第二等级闪存,由第二等级闪存的最大容量的最大行地址 与第一等级闪存最大容量的最大行地址之差除以第二等级闪存中每个块内包含的页数确 定第二数量,按照预设查找方式以第二等级闪存中每个块内包含的页数为跨度在第二数量 个块中进行查找;如果查找到固件程序存放位置,则进入步骤N+1 ;否则,在查找了由第二 等级闪存最大容量的最大行地址以及第一等级闪存最大容量的最大行地址之差除以第二 等级闪存每个块内包含的页数确定的第二数量个块后,进入下一步骤。步骤N,假设现有闪存为第N等级闪存,由第N等级闪存的最大容量的最大行地址 与第N-I等级闪存最大容量的最大行地址之差除以第N等级闪存中每个块内包含的页数确 定第N数量,按照预设查找方式以第N等级闪存中每个块内包含的页数为跨度查找;如果查 找到固件程序存放位置,则进入步骤N+1 ;否则,再查找由第N等级闪存最大容量的最大行 地址与第N-I等级闪存最大容量的最大行地址之差除以第N等级闪存每个块内包含的页数 确定的第N数量个块后,进入下一步骤。步骤N+1,结束查找。下面,以一个具体的实施例来说明本发明。实施例一现有闪存,按照其中块(Block)内包含的页(Page)数目来分类,可以把闪存分为 64Page/Block、128Page/Block、192Page/Block、256Page/Block 等,其中,192Page/Block 的闪存,其块的首个页地址也是以256I^ge/BlOCk来跳变的,即前后两个块之间的首个页 地址相差256,因此,该闪存也可以认为是256Page/Block的。现有闪存,按照其中的页大小划分,又可以把闪存分为2k/^age、4k/Page、8k/ Page,当然后续也会出现16k/^age以及其他更大容量I^ge的闪存。对于不同类型的闪存,其最大容量的最大行地址如表1所示表 权利要求
1.一种查找闪存设备中固件程序存放位置的方法,包括以下步骤A.将现有闪存依据每个块内包含的页数由少到多划分为多个等级,对所有等级的闪存 做定量分析,确定每一等级闪存的最大容量的最大行地址;B.假设闪存为第一等级闪存,由第一等级闪存的最大容量的最大行地址除以第一等级 闪存中每个块内包含的页数确定第一数量,按照预设查找方式以第一等级闪存中每个块内 包含的页数为跨度在所述第一数量个块中进行查找;C.判断是否查找到固件程序存放位置,若是,则进入步骤F,否则执行步骤D;D.判断是否还有下一等级闪存,若是,则进入步骤E,否则进入步骤G;E.假设闪存为下一等级闪存,由所述下一等级闪存的最大容量的最大行地址与上一等 级闪存最大容量的最大行地址之差除以所述下一等级闪存中每个块内包含的页数确定第 二数量,按照预设查找方式以下一等级闪存中每个块内包含的页数为跨度在所述第二数量 个块中进行查找;F.判断是否查找到固件程序存放位置,若是,则进入步骤G,否则返回步骤D;G.结束查找。
2.根据权利要求1所述的查找闪存设备中固件程序存放位置的方法,其特征在于,所 述步骤A为将现有闪存依据每个块内包含的页数由少到多划分为三个等级,对所有等级的闪存做 定量分析,确定每一等级闪存的最大容量的最大行地址。
3.根据权利要求2所述的查找闪存设备中固件程序存放位置的方法,其特征在于,所 述步骤A中将现有闪存依据每个块内包含的页数由少到多划分为三个等级的过程为将64页/块的闪存定义为第一等级闪存;将1 页/块的闪存定义为第二等级闪存;将192页/块和256页/块的闪存定义为第三等级闪存。
4.根据权利要求3所述的查找闪存设备中固件程序存放位置的方法,其特征在于,所 述步骤A中对所有等级的闪存做定量分析,确定每一等级闪存的最大容量的最大行地址 的过程为对三个等级的闪存做定量分析,确定第一等级闪存的最大容量的最大行地址为 0x100000,确定第二等级闪存的最大容量的最大行地址为0x800000,确定第三等级闪存的 最大容量的最大行地址为0x1000000。
5.根据权利要求1所述的查找闪存设备中固件程序存放位置的方法,其特征在于,所 述预设查找方式为以预设数量个块为单位,先在第一个所述预设数量个块中查找块号能 被2整除的块,然后在第二个所述预设数量个块中查找块号能被3整除的块,接着在第三个 所述预设数量个块中查找块号不能被2整除的块,再接着在第四个所述预设数量个块中查 找块号不能被3整除的块,在下四个所述预设数量个块中重复上述步骤。
6.根据权利要求1所述的查找闪存设备中固件程序存放位置的方法,其特征在于,所 述预设查找方式为以设定数量个块为周期,在每个周期内只查找与块号对应的页号所在 的页。
全文摘要
一种查找闪存设备中固件程序存放位置的方法,包括以下步骤将现有闪存依据每个块内包含的页数由少到多划分为多个等级,对所有等级的闪存做定量分析,确定每一等级闪存的最大容量的最大行地址;假设闪存为某一等级闪存,按照该等级闪存中每个块内包含的页数为跨度进行查找,直到查找到固件程序存放位置。采用上述方法,能够在查找固件程序时尽可能覆盖到不同的块,提高了查找固件程序存放位置的效率。
文档编号G06F12/08GK102147771SQ201110087950
公开日2011年8月10日 申请日期2011年4月8日 优先权日2011年4月8日
发明者李中政, 邓恩华 申请人:深圳市江波龙电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1