一种NandFlash参数的读取方法

文档序号:9525263阅读:778来源:国知局
一种Nand Flash参数的读取方法
【技术领域】
[0001]本发明涉及半导体技术领域,尤其涉及一种Nand Flash参数的读取方法。
【背景技术】
[0002]Nand Flash作为一种低价、大容量的存储设备,在嵌入式系统中使用越来越广泛。不同的型号的Nand Flash有着不同的页面大小、块大小、空闲区域大小,而且不同的NandFlash对ECC校验强度也不相同,在不支持ONFI (Open Nand Flash Interface)标准协议的Nand Flash芯片中,这些数据只能通过厂家提供的数据手册获得。
[0003]在使用Nand Flash作为存储设备的嵌入式应用中,处理器复位后都会先执行一段固化在处理器芯片内部的名为ROM code的代码,从Nand Flash中读取代码到片内或者片外的RAM中,然后运行相应的程序。要从Nand Flash中正确的读取代码,就必须先获取NandFlash页面大小、块大小等参数,而现有Nand Flash参数配置只能通过编译时指定或者通过处理器的引脚配置选择,导致一段固化的代码无法正确操作不同类型的Nand Flash,灵活性较差。

【发明内容】

[0004]本发明的目的是为了解决上述现有技术的不足之处,提供一种Nand Flash参数的读取方法。可以解决一段固化的代码无法正确操作不同类型的Nand Flash的问题。
[0005]为实现上述目的,本发明提供了一种Nand Flash参数的读取方法,该方法包括以下步骤:
[0006]发出Nand Flash读取命令,读取多段Nand Flash参数中的第一段Nand Flash参数;多段Nand Flash参数中的每段Nand Flash参数相同;每段Nand Flash参数包括第一部分数据和第二部分数据;对第一部分数据做第一次校验,如果第一次校验正确,则继续对第一部分数据做第二次校验;如果第二次校验正确,则根据第一部分数据中参数的值和程序设定的该参数的值进行比较;如果第一部分数据中参数的值和程序设定的该参数的值相同,则确定Nand Flash参数读取成功。
[0007]优选地,第一次校验具体包括以下步骤:通过错误检查和纠正ECC算法对第一部分数据计算,做ECC校验,得到第一校验码;第一校验码与第二部分数据做比较;如果相同,则第一次校验正确,继续对第一部分数据做第二次校验。
[0008]优选地,第二次校验具体包括以下步骤:通过循环冗余校验码CRC算法对第一部分数据计算,做CRC校验,得到第二校验码;第二校验码与第一部分数据中的CRC校验码做比较;如果相同,则第二次校验正确,继续根据第一部分数据中参数的值和程序设定的该参数的值进行比较。
[0009]优选地,如果第一次校验不正确,则使用第二部分数据对第一部分数据进行ECC纠错;如果ECC纠错成功,则继续对第一部分数据做第二次校验。
[0010]优选地,如果ECC纠错不成功,贝lj读取多段Nand Flash参数中的下一段NandFlash参数,再次进行Nand Flash参数读取。
[0011]优选地,如果第二次校验不正确,则读取多段Nand Flash参数中的下一段NandFlash参数,再次进行Nand Flash参数读取。
[0012]优选地,如果第一部分数据中参数的值和程序设定的该参数的值不相同,则读取多段Nand Flash参数中的下一段Nand Flash参数,再次进行Nand Flash参数读取。
[0013]优选地,在发出Nand Flash读取命令之前,还包括以下步骤:在对Nand Flash编程时,在Nand Flash第一地址开始的存储空间,连续存储多段相同字节的Nand Flash参数。
[0014]优选地,第一部分数据包括厂家标记、页面大小、块大小、空闲区域大小、总容量、ECC强度和CRC校验码;第二部分数据包括ECC校验码;根据第一部分数据中的厂家标记和程序设定的值进行比较,如果厂家标记和程序设定的值相同,则确定Nand Flash参数读取成功。
[0015]优选地,CRC校验码和ECC校验码是在对Nand Flash编程时实时写入的。
[0016]本发明利用CRC校验和ECC检错/纠错技术,在不增加额外存储器和成本的前提下,实现了 Nand Flash参数的自动识别功能,适用于对成本敏感的应用场合,特别适用于处理器ROM code的设计。
【附图说明】
[0017]为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1为本发明实施例提供的一种NandFlash参数的读取方法的参数结构示意图;
[0019]图2为本发明实施例提供的一种Nand Flash参数的读取方法的流程示意图;
[0020]图3为本发明实施例提供的又一种Nand Flash参数的读取方法的流程示示意图。
【具体实施方式】
[0021]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明。
[0023]鉴于现有Nand Flash参数只能通过编译时指定或者通过处理器的引脚配置选择,本发明提供一种Nand Flash参数的读取方法。
[0024]首先,该Nand Flash的参数通过以下方法保存:
[0025]在对Nand Flash编程时,在Nand Flash的0地址开始的连续存储空间,每位地址存放1字节数据,按照64字节为单位,连续存储8段相同的参数,即0 — 63地址存放第一段64字节的Nand Flash参数数据,之后以此重复8次存放0 — 63地址内64字节的NandFlash参数数据,每一段参数都用循环冗余校验码CRC (Cyclic Redundancy Check)校验算法和错误检查和纠正ECC校验检错/纠错算法保护(Error Checking and Correcting)。
[0026]图1为本发明实施例提供的一种Nand Flash参数的读取方法的参数结构示意图,如图1所示,该Nand Flash参数结构包括:
[0027]厂家标记(4字节)、页面大小(4字节)、块大小(4字节)、空闲区域大小(4字节)、总容量(8字节)、ECC强度(4字节)、CRC校验码(4字节)、和ECC校验码(32字节)。
[0028]具体地,在Nand Flash的0地址开始的连续存储空间,0-3地址存放4字节的厂家标记数据,4-7地址存放4字节的页面大小数据,8-11地址存放4字节的块大小数据,12-15地址存放4字节的空闲区域大小数据,16-23地址存放8字节的总容量数据,24-27地址存放4字节的ECC强度数据,28-31地址存放4字节的CRC校验码数据,32-63地址存放32字节的ECC校验码数据。
[0029]Nand Flash的参数保存过程是在对Nand Flash编程时,按照如图1所示格式,把64X8字节的数据写到Nand Flash的0地址开始的存储空间。其中,厂家标记可以固定为一个幻数,处理器会读取这个数来判断该数据段是否是有效的参数数据结构。页面大小、块大小、空闲区域大小、总容量以及ECC强度则通过获取对应Nand Flash的数据手册获得,CRC校验码、ECC校验码则在对Nand Flash编程
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1