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

技术编号:6130690 阅读:346 留言:0更新日期:2012-04-11 18:40
一种查找闪存设备中固件程序存放位置的方法,包括以下步骤:将现有闪存依据每个块内包含的页数由少到多划分为多个等级,对所有等级的闪存做定量分析,确定每一等级闪存的最大容量的最大行地址;假设闪存为某一等级闪存,按照该等级闪存中每个块内包含的页数为跨度进行查找,直到查找到固件程序存放位置。采用上述方法,能够在查找固件程序时尽可能覆盖到不同的块,提高了查找固件程序存放位置的效率。

【技术实现步骤摘要】

本专利技术涉及闪存
,尤其涉及一种。
技术介绍
闪存(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,判本文档来自技高网
...

【技术保护点】
1.一种查找闪存设备中固件程序存放位置的方法,包括以下步骤:A.将现有闪存依据每个块内包含的页数由少到多划分为多个等级,对所有等级的闪存做定量分析,确定每一等级闪存的最大容量的最大行地址;B.假设闪存为第一等级闪存,由第一等级闪存的最大容量的最大行地址除以第一等级闪存中每个块内包含的页数确定第一数量,按照预设查找方式以第一等级闪存中每个块内包含的页数为跨度在所述第一数量个块中进行查找;C.判断是否查找到固件程序存放位置,若是,则进入步骤F,否则执行步骤D;D.判断是否还有下一等级闪存,若是,则进入步骤E,否则进入步骤G;E.假设闪存为下一等级闪存,由所述下一等级闪存的最大容量的最大行地址与上一等级闪存最大容量的最大行地址之差除以所述下一等级闪存中每个块内包含的页数确定第二数量,按照预设查找方式以下一等级闪存中每个块内包含的页数为跨度在所述第二数量个块中进行查找;F.判断是否查找到固件程序存放位置,若是,则进入步骤G,否则返回步骤D;G.结束查找。

【技术特征摘要】

【专利技术属性】
技术研发人员:李中政邓恩华
申请(专利权)人:深圳市江波龙电子有限公司
类型:发明
国别省市:94

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1