CN102103891B - 一种芯片参数的识别方法及系统 - Google Patents
一种芯片参数的识别方法及系统 Download PDFInfo
- Publication number
- CN102103891B CN102103891B CN200910242883.6A CN200910242883A CN102103891B CN 102103891 B CN102103891 B CN 102103891B CN 200910242883 A CN200910242883 A CN 200910242883A CN 102103891 B CN102103891 B CN 102103891B
- Authority
- CN
- China
- Prior art keywords
- data
- page
- nandflash chip
- byte
- nandflash
- 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
Links
Landscapes
- Read Only Memory (AREA)
Abstract
本发明公开了一种芯片参数的识别方法及系统,用以识别nandflash芯片的物理参数。本发明提供的一种芯片参数的识别方法包括:分别向闪存nandflash芯片的多个特定字节区域写入不同的数据,其中,所述特定字节区域是预先根据nandflash芯片的各种页page类型确定的;读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型。
Description
技术领域
本发明涉及芯片技术领域,尤其涉及一种芯片参数的识别方法及系统。
背景技术
现有技术中,如果要使用某一款闪存(nandflash)芯片,就必须要获得芯片的数据表(datasheet)技术文档,根据技术文档的描述,组织一个参数列表,软件或硬件是通过参数列表中的各种参数进行工作。
而目前,很多nandflash的生产厂商出于保护的目的,只向大型客户公开授权的datasheet技术文档,不向小型客户及研发人员公开nandflash芯片的datasheet技术文档。另外,由于nandflash芯片不断推出新型产品,为了支持不断推出的新品,厂家必须不断更新nandflash参数列表(软件或硬件),不利于产品的生产。
发明内容
本发明实施例提供了一种芯片参数的识别方法及系统,用以识别nandflash芯片的物理参数。
本发明实施例提供的一种芯片参数的识别方法包括:
分别向闪存nandflash芯片的多个特定字节区域写入不同的数据,其中,所述特定字节区域是预先根据nandflash芯片的各种页page类型确定的;
读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型;
确定nandflash芯片的page类型之后,还包括:
重新启动nandflash芯片,向一个page的一部分数据区域写入特定数据;
重新启动nandflash芯片,向该page的另一部分数据区域写入特定数据;
重新启动nandflash芯片,读取该page的全部数据;
比较从所述另一部分数据区域读取到的数据,与向该部分数据区域写入的特定数据是否相同,如果是,则确定所述nandflash芯片的物理结构为单级单元SLC物理结构;否则,确定所述nandflash芯片的物理结构为多级单元MLC物理结构。
本发明实施例提供的一种芯片参数的识别系统包括page类型识别单元,该page类型识别单元包括:
特定字节区域写入单元,用于分别向闪存nandflash芯片的多个特定字节区域写入不同的数据,其中,所述特定字节区域是预先根据nandflash芯片的各种页page类型确定的;
特定字节区域读取单元,用于读取特定字节区域中的数据;
比较单元,用于通过将从特定字节区域中读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型;
该系统还包括:物理结构识别单元,用于重新启动nandflash芯片,向一个page的一部分数据区域写入特定数据;重新启动nandflash芯片,向该page的另一部分数据区域写入特定数据;重新启动nandflash芯片,读取该page的全部数据;比较从所述另一部分数据区域读取到的数据,与向该部分数据区域写入的特定数据是否相同,如果是,则确定所述nandflash芯片的物理结构为单级单元SLC物理结构;否则,确定所述nandflash芯片的物理结构为多级单元MLC物理结构。
本发明实施例,分别向闪存nandflash芯片的多个特定字节区域写入不同的数据,然后读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定了nandflash芯片的page类型。
附图说明
图1为本发明实施例提供的一种识别nandflash芯片的page类型的总体方法流程示意图;
图2为本发明实施例提供的一种nandflash芯片参数识别的主要流程示意图;
图3为本发明实施例提供的尝试读取事先约定好的nandflash区域的nandflash物理参数的具体流程示意图;
图4为本发明实施例提供的page类型判断的具体流程示意图;
图5为本发明实施例提供的识别nandflash芯片每个block包括的page数目的具体流程示意图;
图6为本发明实施例提供的确定nandflash芯片的block数目的流程示意图;
图7为本发明实施例提供的确定最佳时间参数(timing)的流程示意图;
图8为本发明实施例提供的一种芯片参数的识别系统的结构示意图;
图9为本发明实施例提供的一种page类型识别单元的结构示意图;
图10为本发明实施例提供的一种block数目识别单元的结构示意图。
具体实施方式
本发明实施例提供了一种芯片参数的识别方法及系统,用以识别nandflash芯片的物理参数。
本发明实施例提供的nandflash芯片识别方案,可以识别出任何未知nandflash芯片的物理参数信息,使得开发人员在一定程度上摆脱了对datasheet技术文档的依赖;通过将识别出的物理参数信息保存在nandflash芯片上,厂家不用不断更新nandflash芯片的参数表。
本发明实施例通过遍历式的尝试,逐步识别出未知nandflash芯片的多项物理参数,包括:芯片的块(block)的数目,每个块包含的页(page)的数目,每页有效数据区(data area)的大小,每页预留区域(spare area)的大小,芯片的物理结构,最佳的timing。
其中,芯片的物理结构包括单级单元(SLC,Single-Level cell)和多级单元(MLC,Multi-Level cell)两种物理结构。
需要说明的是,本发明实施例中,向nandflash芯片写入的数据,不能为0xff,因为,nandflash芯片格式化后,该nandflash芯片中的数据全部是0xff。
下面结合附图对本发明实施例提供的技术方案进行详细说明。
参见图1,本发明实施例提供的一种nandflash芯片的page类型的识别方法总体包括步骤:
S101、分别向nandflash芯片的多个特定字节区域写入不同的数据,其中,所述特定字节区域是预先根据nandflash芯片的各种page类型确定的。
S102、读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型。
下面给出本发明实施例提供的一种用于识别出nandflash芯片各种物理参数的主要流程说明。
较佳地,参见图2,本发明实施例提供的nandflash芯片物理参数的识别方法主要包括:
步骤一:
设定最保守(最小)的timing,例如可以是2MHz。
timing包括两个指标:nandflash工作频率和时钟(clk)每个周期的占空比(高电平比低电平)。
然后,采用所有nandflash芯片都能支持的最保守的timing(例如:nandflash工作频率为2MHz,时钟(clk)每个周期的高电平比低电平为1:2),尝试在事先约定好的nandflash区域读取数据,即确定nandflash芯片的预先约定区域是否存在该nandflash芯片的物理参数。
例如,事先约定好的nandflash区域可以为nandflash的前10个block中每个block的第0号page。
判断是否在事先约定好的nandflash区域读取到nandflash物理参数,如果是,则通过循环冗余码(CRC)对读取到的物理参数进行校验,如果能通过CRC校验,则认为获得的nandflash物理参数是正确的,识别过程结束,接下来可以使用nandflash物理参数进行后续操作。否则,如果所有事先约定好的nandflash区域都读不到正确的nandflash物理参数(即CRC校验无法通过),则认为这是一块新的nandflash芯片,需要进行nandflash芯片物理参数的识别过程,进而执行步骤二。
步骤二、首先识别nandflash芯片的page类型,主要识别两部分:data区大小和spare区大小。
data区大小和spare区大小的具体组合包括四种:512+16;2048+64;4096+128;4096+218。也就是说,page类型包括四种类型:数据区大小为4096字节、预留区大小为218字节类型的page;数据区大小为4096字节、预留区大小为128字节类型的page;数据区大小为2048字节、预留区大小为64字节类型的page;数据区大小为512字节、预留区大小为16字节类型的page。
步骤三、识别nandflash芯片的物理结构是SLC结构还是MLC结构。采用的判断依据是:是否支持多次编程(program),SLC结构的nandflash芯片支持多次program,而MLC结构的nandflash芯片则不支持多次program。
步骤四、识别nandflash芯片中每个block包括多少个page,总体包括:
对nandflash芯片的第一组特定page所在的块block进行格式化;
分别向第二组特定page写入特定数据,然后格式化第0号page所在的block;
读取第二组特定page中的数据,通过将读取到的数据与所述特定数据进行比较,确定nandflash芯片每个block包括的page数目。
其中,所述第一组特定page和第二组特定page是预先根据nandflash芯片每个block包括的page数目的种类确定的。
步骤五、识别nandflash芯片中包括多少个block。
具体地,可以采用特定位置格式化的方式来识别nandflash芯片的block数目,包括:
第一步骤:向第0号page写入数据,该数据的大小可以设置为512个字节,令参数i=1。
参数i用来表示nandflash芯片包括的block数目是512的多少倍,因为,目前nandflash芯片包括的block数目都是512的整数倍。
第二步骤:根据每个block包括的page数目,格式化第512*i个block。
第三步骤:读取第0号page中的数据,比较读取到的数据与写入该第0号page中的数据是否相同,如果是,则令i=i+1,返回第二步骤,以此类推,直到判定从第0号page中读取的数据与写入该第0号page中的数据不同,当然还可以为i设置一个最大的阈值,在i小于该阈值的情况下,可以重复执行第二步骤和第三步骤;否则,确定nandflash芯片包括512*i个block。
步骤六、确定最佳的timing,使用事先分析出的一些典型timing进行尝试,尝试出一个能够进行各种基本操作的最佳timing参数。
timing参数包括两个具体指标:nandflash芯片的工作频率,和时钟(clk)的高电平与低电平的比,即占空比。
其中,所述典型timing,例如:nandflash芯片的工作频率为2M,clk的占空比为1:2;或者,nandflash芯片的工作频率为24M,clk的占空比为1:1;或者,nandflash芯片的工作频率为32M,clk的占空比为2:3,等等。
本发明实施例提供的确定nandflash芯片的最佳timing的总体步骤包括:
步骤A、从预先设置的多个timing参数中选择满足nandflash芯片读写条件的timing参数。
其中,timing参数满足nandflash芯片读写条件,是指在采用该timing参数时,对该nandflash芯片进行的读、写操作均成功。
步骤B、从满足nandflash芯片读写条件的timing参数中选择一个nandflash芯片工作频率最高的timing参数,作为nandflash芯片的最佳timing参数。
较佳地,步骤A包括:
按照预先设置的多个timing参数的从低到高的顺序,依次选择timing参数进行是否满足nandflash芯片读写条件的判断。
其中,所述多个timing参数的从低到高的顺序,是预先按照每个timing参数中的nandflash芯片工作频率设置的。
或者,步骤A包括:
从预先设置的多个timing参数中选择每个timing参数,分别进行是否满足nandflash芯片读写条件的判断,记录满足nandflash芯片读写条件的timing参数。
较佳地,判断当前选择的timing参数满足nandflash芯片读写条件的步骤包括:
采用当前选择的timing参数初始化闪存nandflash芯片控制器,并重新启动nandflash芯片。
格式化第0号block,读取第0号block中的数据。
当从第0号block中读取到的数据为0xff时,向第0号block写入特定数据,并再次读取第0号block中的数据。
当从第0号block中再次读取到的数据,与写入该第0号block的特定数据相同时,确定当前选择的timing参数为满足nandflash芯片读写条件的timing参数。
步骤七、将识别出来的各种nandflash芯片物理参数,连同计算出来的CRC信息保存在事先约定好的区域。
上述步骤四、五不一定要在步骤二、三之后执行,步骤六也不一定要在步骤四、五之后执行。步骤二、三的执行与步骤四、五的执行以及步骤六的执行可以是并行的,相互之间没有必然的顺序关系。
下面给出上述各个步骤的较佳的具体实施方式。
一、关于步骤一中确定nandflash芯片的预先约定区域是否存在该nandflash芯片的物理参数的说明。
由于要想识别出nandflash芯片,不可避免的要对nandflash芯片进行格式化,以及写处理,只凭读是不可能实现的,这样会破坏nandflash上原有的数据,这对于一个新的nandflash来说没有关系,但是对于之前使用过的nandflash芯片,上面的数据被破坏,会导致文件系统、程序等出现故障。因此,一旦第一次识别出nandflash的物理参数信息,并且基于这些参数在nandflash上存储数据了,就能不再进行nandflash识别,只能读取之前存储的nandflash芯片物理参数信息来使用nandflash。
当前的对nandflash芯片进行基础的page读操作,按照两种情况划分为两种方式,page的数据区域是512bytes的一种512方式的读操作,和page的数据区域大于512bytes的另一种非512方式的读操作(page的数据区域为2048或4096bytes的均采用该种读方式)。这读操作最主要的区别是:对于大于512bytes的nandflash的读操作,比对于等于512bytes的nandflash的读操作,要多发一个命令,发的地址要多一位,因此操作是不一样的。
nandflash每个block的最小容量是32个page,有的nandflash每个block还可以包括64pages或者128pages,而64、128分别是32的2倍和4倍。本发明实施例中,首先假设每个blcok包括32个pages。尝试读取事先约定好的nandflash区域的nandflash物理参数的具体流程如图3所示(其中,假设约定区域为第0到第10个block的每个block的第一个page),具体包括:
用I表示当前page的页号,初始时,令I=0,即从page 0开始,尝试读取nandflash物理参数。
重新启动nandflash芯片(由于之前的错误尝试可能会对nandflash芯片造成不利影响,所以需要重新启动nandflash芯片)。
采用512方式读取第I个page,并判断是否读正确,如果读正确了,说明该nandflash是512page类型,则进一步检查数据是否有效(也许是一个新的nandflash,没有有效数据);否则,重新启动nandflash芯片,采用非512方式读取数据,并判断是否读正确,如果读正确了,则对读到的数据进行CRC校验,否则,设定新的page号,即令I=I+32,然后判断当前需要读的page是否超过约定范围(第0到第10个block的每个block的第一个page),约定范围可以是320(即I最大不能超过320),也可以是640(即I最大不能超过640),约定范围越大,开机启动的时间会越慢,如果没有超过约定范围则进行下一轮尝试,即对新的page I的读尝试;否则,结束。
如果数据读取成功,则对读到的数据进行CRC校验,在此之前,也就是把数据从nandflash的某个page读出来的过程中,同时会采用错误检查和纠正(ECC,Error Checking and Correcting)的方式做一个错误纠正,但是对于不同ECC算法,有的ECC算法并不一定能准确地检查出错误的里德-索罗蒙(RS)码,所以在数据读取成功后,还需要进行CRC校验来检查错误。如果CRC校验通过,认为已经获得了正确的nandflash物理参数信息,退出尝试读取nandflash约定区域数据的操作。
如果CRC校验结果显示错误,则设定新的page号,即令I=I+32,进行下一轮尝试,即对新的page I的读尝试。
如果在约定的范围尝试均失败,则退出尝试,返回尝试失败。
二、关于步骤二中识别nandflash芯片的page类型的说明。
目前nandflash芯片的page类型有四种:512+16;2048+64;4096+128;4096+218。
采用在不同的字节范围写入不同数据,然后分别读出写入的数据,比对在同一字节范围写入和读出的数据的方式来对page类型进行判断。对于page的写入操作,512page的nandflash芯片和非512page的nandflash芯片是一致的。
page类型判断的具体流程如图4所示,包括:
组织一个数据样本,即组织一个page大小的数据,较佳地,可以按照目前一个page最大为4096+218字节,组织一个4096+218字节(即4314字节)大小的数据样本。
用M表示当前尝试判断page类型的次数,M初始值为1。
分别在多个特定字节区域,即第0-527号字节区域、第528-2111号字节区域、第2112-4313号字节区域,写入不同的数据内容,例如分别写入0x00、0x0f、0xf0。
然后,从第0号字节开始,连续读取4096+218个字节(即4314个字节)的数据(如果nandflash芯片page没有那么大,将读到不定的数据,而不是0xf0),实际就是从第1个字节开始,连续读取4314个字节的数据。字节一般都是从0开始编号,所以,从第0号字节开始,连续读4314个字节,实际上是读第0号到第4313号字节。然后,进行下列判断:
判断从第4224-4313号字节区域读取到的数据是否为0xf0,如果是,则判定page类型为数据区大小为4096字节、预留区大小为218字节类型的page,跳出判断流程;否则,
判断从第2112-4223号字节区域读取到的数据是否为0xf0,如果是,则判定page类型为数据区大小为4096字节、预留区大小为128字节类型的page,跳出判断流程;否则,
判断从第528-2111号字区域节读取到的数据是否为0x0f,如果是,则判定page类型为数据区大小为2048字节、预留区大小为64字节类型的page,跳出判断流程;否则,
判断从第0-527号字节区域读取到的数据是否为0x0,如果是,则判定page类型为数据区大小为512字节、预留区大小为16字节类型的page,跳出判断流程;否则,
令尝试的次数M=M+1,然后判断当前尝试的次数是否太多,即判断当前尝试的次数M是否超过预设的阈值(具体值可以根据实际需要进行设置),如果是,则结束操作,返回物理连接错误;否则,继续下一次尝试,即返回分别在第0-527号字节区域、第528-2111号字节区域、第2112-4313号字节区域,写入不同的数据内容的步骤,并进行后续操作,以此类推,直到识别出page类型,或者尝试的次数M超过预设的阈值,返回物理连接错误。
其中,判断当前尝试的次数M是否超过预设的阈值的步骤也可以不执行。
三、关于步骤三中识别nandflash芯片的物理结构的说明。
本发明实施例识别nandflash芯片的物理结构是SLC物理结构还是MLC物理结构,主要基于:SLC物理结构的nandflash,对于每个page可以进行多次page的program写操作,而MLC物理结构的nandflash,对于每个page只能进行单次page的program写操作。
基于步骤二中已经识别出了nandflash芯片的page类型,即确定了每个page的数据区和预留区的大小,在步骤三中可以进行以下操作:
重新启动nandflash芯片;
对任意一个page(假设是page I)的一部分数据区域(例如可以是前半个)进行一次写操作,写入特定数据;
重新启动nandflash芯片;
对该page I的另一部分数据区域(例如可以是后半个)进行一次写操作,写入特定数据;
重新启动nandflash芯片;
将该page I的整个page的数据读出来;
比较该page I的后半个数据区域的数据是否是写入的特定数据,如果是,则确定该nandflash芯片是SLC物理结构的nandflash芯片;否则,确定该nandflash芯片是MLC物理结构的nandflash芯片。
四、关于步骤四中识别nandflash芯片每个block有多少个page的说明。
本发明实施例基于nandflash芯片的block格式化特性(即按照输入的page号所在的block来进行格式化),识别每个block有多少个page。
目前,nandflash芯片每个block包括的page数目有五种:16,32,64,128,256。本发明实施例提供的识别nandflash芯片每个block包括的page数目的具体流程如图5所示,包括:
格式化第0、64、128、256、512号page(即第一组特定page)所在的block;
向第31、63、127、255、511号page(即第二组特定page)写入特定数据,其中,向第31、63、127、255、511号page写入的特定数据可以相同,也可以不相同;
格式化第0号page所在的block,也就是说格式化第0号block(则第0号block中的所有page均被格式化);
需要说明的是,第0-15号page中的任一page所在的block肯定是第0号block,因此可以格式化第0-15号page中的任一page所在的block;
读取第31号page的数据内容,比较读出的数据和写入该第31号page的数据,如果相同,则说明第31号page不属于第0号page所在的block,因此可以确定每个block只能有16个pages,结束判断;否则,
读取第63号page的数据内容,比较读出的数据和写入该第63号page的数据,如果相同,则说明第63号page不属于第0号page所在的block,但是第31号page属于第0号page所在的block,因此可以确定每个block只能有32个pages,结束判断;否则,
读取第127号page的数据内容,比较读出的数据和写入该第127号page的数据,如果相同,则说明第127号page不属于第0号page所在的block,但是第63号page属于第0号page所在的block,因此可以确定每个block只能有64个pages,结束判断;否则,
读取第255号page的数据内容,比较读出的数据和写入该第255号page的数据,如果相同,则说明第255号page不属于第0号page所在的block,但是第127号page属于第0号page所在的block,因此可以确定每个block只能有127个pages,结束判断;否则,
读取第511号page的数据内容,比较读出的数据和写入该第511号page的数据,如果相同,则说明第511号page不属于第0号page所在的block,但是第255号page属于第0号page所在的block,因此可以确定每个block只能有256个pages,结束判断;否则,结束判断。
五、关于步骤五中识别nandflash芯片包括多少个block的说明。
由于在步骤四中已经对第0号page所在的block进行了格式化,因此,步骤五中可以不再对第0号page所在的block进行格式化。
那么,确定nandflash芯片每个block包括的page数目之后,识别nandflash芯片包括多少个block的具体流程参见图6,包括:
S601、格式化第0号page所在的block。
S602、向第0号page写入数据,该数据的大小可以设置为512个字节,令参数i=1。
S603、根据每个block包括的page数目,格式化第512*i个block。
S604、读取第0号page中的数据。
S605、比较从第0号page中读取到的数据与写入该第0号page中的数据是否相同,如果是,则执行步骤S606;否则,执行步骤S608。
S606、令i=i+1。
S607、判断i是否小于阈值64,如果是,则执行步骤S603,否则结束。
由于,目前还没有512*64=32768个block的nandflash,因此,可以判断i是否小于64,如果今后出现了大于32768个block的nandflash,当然阈值也可以扩大,而不局限于64。
S608、确定nandflash芯片包括512*i个block。
六、关于步骤六中确定最佳timing的说明。
本发明实施例使用事先设置的一些典型timing逐个进行尝试,尝试出一个能够进行各种基本操作的较佳的timing参数。
例如:nandflash芯片的工作频率为:2M、4M、8M、12M、16M、24M、28M、32M、36M、40M等等;clk的占空比可以是1:1、1:2、1:3、2:3等等。
本发明实施例可以预先将nandflash芯片的工作频率和clk的占空比任意组合成一个timing参数,得到多个timing参数,每个timing参数包括一个nandflash芯片的工作频率,以及一个clk的占空比。
预先按照nandflash芯片的工作频率的从低到高,对预先设置的多个timing参数按照从低到高的顺序进行排序,其中,对于工作频率相同,占空比不同的timing参数的排序,先后顺序无特定要求,可以任意排序。
那么,确定nandflash芯片最佳timing参数的具体流程如图7所示,包括:
从最低的timing开始依次选择一个timing参数进行如下尝试,直到确定nandflash芯片最佳timing参数:
使用当前选定的timing初始化nandflash控制器,并重新启动nandflash芯片;
格式化第0号block,即第一个block(对于nandflash,任一block被格式化以后,该block里面的数据全部是0xff);
读取第0号block的数据;
检测第0号block的数据是否全部是0xff;
如果第0号block的数据不是0xff,则说明读取数据失败,当前选定的timing无效,如果之前记录有尝试成功的timing,则使用之前尝试成功的最高的timing作为nandflash芯片最佳timing参数,结束尝试;
如果第0号block的数据全是0xff,则说明在当前选定的timing下,数据读取的操作可以成功,需要进一步判断数据写入的操作是否也可以成功,则向第0号block写入特定数据;
将第0号block的数据读出来,比较读出的数据和写入的数据;
如果从第0号block读出的数据和写入第0号block的数据相等,则说明当前选定的timing可以使用(写进去的数据和读出来的数据一致,才能说明在当前选定的timing下读写都是成功的,该timing有效),并记录下来,然后采用下一个timing参数作为当前选定的timing继续进行尝试;
如果从第0号block读出的数据和写入第0号block的数据不相等,则说明当前选定的timing无效,如果之前记录有尝试成功的timing,则使用之前尝试成功的最高的timing作为nandflash芯片最佳timing参数,结束尝试。
另外,在实际操作中,也可以不对预先设置的多个timing参数进行排序,可以将这些timing参数逐一进行尝试,并记录尝试成功的timing参数,最后从尝试成功的timing参数中,选择最高的timing参数(即nandflash芯片的工作频率最高)作为最为nandflash芯片的最佳timing参数。其中,最高的timing参数可能有多个,也就是说,nandflash芯片的工作频率最高的timing参数(其中每个timing参数的时钟占空比不同)可能有多个,可以从中任意选择一个timing参数作为最佳timing参数。
七、关于步骤七中记录识别出的nandflash芯片物理参数信息的说明。
为了避免下一次继续采用本发明实施例提供的技术方案识别nandflash芯片的物理参数信息造成的数据破坏,需要将已经识别出的nandflash芯片物理参数信息记录在nandflash芯片预先约定好的区域。
进一步,为了提高信息的安全可靠性,可以记录多份拷贝,比如,在前10个block中,每个block的第0个page都记录识别出的nandflash芯片物理参数信息(nandflash芯片一般只会坏一个block)。
另外,为了进一步确保数据的正确性,可以采用ECC纠错和CRC检错的双重保护。
下面介绍一下本发明实施例提供的系统。
参见图8,本发明实施例提供的一种芯片参数的识别系统,包括
初始判定单元21,用于在page类型识别单元22分别向nandflash芯片的多个特定字节区域写入不同的数据之前,确定nandflash芯片的预先约定区域是否存在该nandflash芯片的物理参数。
page类型识别单元22,用于分别向nandflash芯片的多个特定字节区域写入不同的数据,其中,特定字节区域是预先根据nandflash芯片的各种页page类型确定的;读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型。
物理结构识别单元23,用于重新启动nandflash芯片,向一个page的一部分数据区域写入特定数据;重新启动nandflash芯片,向该page的另一部分数据区域写入特定数据;重新启动nandflash芯片,读取该page的全部数据;比较从所述另一部分数据区域读取到的数据,与向该部分数据区域写入的特定数据是否相同,如果是,则确定所述nandflash芯片的物理结构为单级单元SLC物理结构;否则,确定所述nandflash芯片的物理结构为多级单元MLC物理结构。
page数目识别单元24,用于对nandflash芯片的多个特定page所在的块block进行格式化,其中,所述特定page是预先根据nandflash芯片每个block包括的page数目的种类确定的;分别向特定page写入特定数据,然后格式化第0号page所在的block;读取特定page中的数据,通过将读取到的数据与所述特定数据进行比较,确定nandflash芯片每个block包括的page数目。
block数目识别单元25,用于识别nandflash芯片的block数目。
timing参数识别单元26,用于从预先设置的多个timing参数中选择满足闪存nandflash芯片读写条件的timing参数;其中,timing参数满足nandflash芯片读写条件,是指在采用该timing参数时,对该nandflash芯片进行的读、写操作均成功;从满足nandflash芯片读写条件的timing参数中选择一个nandflash芯片工作频率最高的timing参数,作为nandflash芯片的最佳timing参数。
其中,初始判定单元21不是必需的。如果初始判定单元21不存在,page类型识别单元22和物理结构识别单元23也可以独立工作;page数目识别单元24和block数目识别单元25也可以独立工作;timing参数识别单元26也可以独立工作。
较佳地,参见图9,page类型识别单元22包括:
特定字节区域写入单元11,用于分别向nandflash芯片的多个特定字节区域写入不同的数据,其中,特定字节区域是预先根据nandflash芯片的各种页page类型确定的。
特定字节区域读取单元12,用于读取特定字节区域中的数据。
比较单元13,用于通过将从特定字节区域中读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型。
较佳地,所述特定字节区域写入单元11,分别向nandflash芯片的第0-527号字节区域、第528-2111号字节区域、第2112-4313号字节区域写入不同的数据。
较佳地,所述特定字节区域读取单元12,从第0号字节开始,连续读取4314个字节的数据;
所述比较单元13包括:
第一判断单元131,用于判断从第4224-4313号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为4096字节、预留区大小为218字节类型的page;否则,触发第二判断单元132;
第二判断单元132,用于根据所述第一判断单元131的触发,判断从第2112-4223号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为4096字节、预留区大小为128字节类型的page;否则,触发第三判断单元133;
第三判断单元133,用于根据所述第二判断单元132的触发,判断从第528-2111号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为2048字节、预留区大小为64字节类型的page;否则,触发第四判断单元134;
第四判断单元134,用于根据所述第三判断单元133的触发,判断从第0-527号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为512字节、预留区大小为16字节类型的page。
较佳地,所述第四判断单元134,进一步用于当判定从第0-527号字节区域读取到的数据与写入该字节区域的数据不同时,触发所述特定字节区域写入单元11重新分别向所述多个特定字节区域写入不同的数据。
较佳地,参见图10,block数目识别单元25包括:
第一单元251,用于向第0号page写入数据,令参数i=1。
第二单元252,用于根据每个block包括的page数目,格式化第512*i个block。
第三单元253,用于读取第0号page中的数据,比较读取到的数据与写入该第0号page中的数据是否相同,如果是,则令i=i+1,然后触发第二单元252;否则,确定nandflash芯片包括512*i个block。
综上所述,本发明实施例通过遍历式的尝试,逐步识别出未知nandflash芯片的各项物理参数,使得开发人员在一定程度上摆脱了对datasheet技术文档的依赖,通过将识别出的物理参数信息保存在nandflash芯片上,厂家不用不断更新nandflash芯片的参数表。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种芯片参数的识别方法,其特征在于,该方法包括:
分别向闪存nandflash芯片的多个特定字节区域写入不同的数据,其中,所述特定字节区域是预先根据nandflash芯片的各种页page类型确定的;
读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型;
确定nandflash芯片的page类型之后,还包括:
重新启动nandflash芯片,向一个page的一部分数据区域写入特定数据;
重新启动nandflash芯片,向该page的另一部分数据区域写入特定数据;
重新启动nandflash芯片,读取该page的全部数据;
比较从所述另一部分数据区域读取到的数据,与向该部分数据区域写入的特定数据是否相同,如果是,则确定所述nandflash芯片的物理结构为单级单元SLC物理结构;否则,确定所述nandflash芯片的物理结构为多级单元MLC物理结构。
2.根据权利要求1所述的方法,其特征在于,分别向nandflash芯片的多个特定字节区域写入不同的数据的步骤包括:
分别向nandflash芯片的第0-527号字节区域、第528-2111号字节区域、第2112-4313号字节区域写入不同的数据;
读取特定字节区域中的数据,通过将读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型的步骤包括:
从第0号字节开始,连续读取4314个字节的数据;
判断从第4224-4313号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为4096字节、预留区大小为218字节类型的page;否则,
判断从第2112-4223号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为4096字节、预留区大小为128字节类型的page;否则,
判断从第528-2111号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为2048字节、预留区大小为64字节类型的page;否则,
判断从第0-527号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为512字节、预留区大小为16字节类型的page。
3.根据权利要求2所述的方法,其特征在于,当从第0-527号字节区域读取到的数据与写入该字节区域的数据不同时,重新分别向所述多个特定字节区域写入不同的数据,并读取特定字节区域中的数据,将读取到的数据与写入该特定字节区域中的数据进行比较,直到确定nandflash芯片的page类型。
4.根据权利要求1所述的方法,其特征在于,该方法还包括:
对nandflash芯片的第一组特定page所在的块block进行格式化;
分别向第二组特定page写入特定数据,然后格式化第0号page所在的block;
读取所述第二组特定page中的数据,通过将读取到的数据与所述特定数据进行比较,确定nandflash芯片每个block包括的page数目;
其中,所述第一组特定page和第二组特定page是预先根据nandflash芯片每个block包括的page数目的种类确定的。
5.根据权利要求4所述的方法,其特征在于,确定nandflash芯片每个block包括的page数目之后,该方法还包括:
步骤一:向第0号page写入数据,令参数i=1;
步骤二:根据每个block包括的page数目,格式化第512*i个block;
步骤三:读取第0号page中的数据,比较读取到的数据与写入该第0号page中的数据是否相同,如果是,则令i=i+1,返回步骤二;否则,确定nandflash芯片包括512*i个block。
6.根据权利要求1所述的方法,其特征在于,该方法还包括:
从预先设置的多个时间timing参数中选择满足nandflash芯片读写条件的timing参数;
其中,timing参数满足nandflash芯片读写条件,是指在采用该timing参数时,对该nandflash芯片进行的读、写操作均成功;
从满足nandflash芯片读写条件的timing参数中选择一个nandflash芯片工作频率最高的timing参数,作为nandflash芯片的最佳timing参数。
7.根据权利要求1所述的方法,其特征在于,在分别向nandflash芯片的多个特定字节区域写入不同的数据之前,该方法还包括:
确定所述nandflash芯片的预先约定区域是否存在该nandflash芯片的物理参数。
8.一种芯片参数的识别系统,其特征在于,该系统包括page类型识别单元,该page类型识别单元包括:
特定字节区域写入单元,用于分别向闪存nandflash芯片的多个特定字节区域写入不同的数据,其中,所述特定字节区域是预先根据nandflash芯片的各种页page类型确定的;
特定字节区域读取单元,用于读取特定字节区域中的数据;
比较单元,用于通过将从特定字节区域中读取到的数据与写入该特定字节区域中的数据进行比较,确定nandflash芯片的page类型;
该系统还包括:物理结构识别单元,用于重新启动nandflash芯片,向一个page的一部分数据区域写入特定数据;重新启动nandflash芯片,向该page的另一部分数据区域写入特定数据;重新启动nandflash芯片,读取该page的全部数据;比较从所述另一部分数据区域读取到的数据,与向该部分数据区域写入的特定数据是否相同,如果是,则确定所述nandflash芯片的物理结构为单级单元SLC物理结构;否则,确定所述nandflash芯片的物理结构为多级单元MLC物理结构。
9.根据权利要求8所述的系统,其特征在于,所述特定字节区域写入单元,分别向nandflash芯片的第0-527号字节区域、第528-2111号字节区域、第2112-4313号字节区域写入不同的数据;
所述特定字节区域读取单元,从第0号字节开始,连续读取4314个字节的数据;
所述比较单元包括:
第一判断单元,用于判断从第4224-4313号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为4096字节、预留区大小为218字节类型的page;否则,触发第二判断单元;
第二判断单元,用于根据所述第一判断单元的触发,判断从第2112-4223号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为4096字节、预留区大小为128字节类型的page;否则,触发第三判断单元;
第三判断单元,用于根据所述第二判断单元的触发,判断从第528-2111号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为2048字节、预留区大小为64字节类型的page;否则,触发第四判断单元;
第四判断单元,用于根据所述第三判断单元的触发,判断从第0-527号字节区域读取到的数据是否为写入该字节区域的数据,如果是,则确定nandflash芯片的page类型为数据区大小为512字节、预留区大小为16字节类型的page。
10.根据权利要求9所述的系统,其特征在于,所述第四判断单元,进一步用于当判定从第0-527号字节区域读取到的数据与写入该字节区域的数据不同时,触发所述特定字节区域写入单元重新分别向所述多个特定字节区域写入不同的数据。
11.根据权利要求8所述的系统,其特征在于,该系统还包括:
page数目识别单元,用于对nandflash芯片的多个特定page所在的块block进行格式化,其中,所述特定page是预先根据nandflash芯片每个block包括的page数目的种类确定的;分别向特定page写入特定数据,然后格式化第0号page所在的block;读取特定page中的数据,通过将读取到的数据与所述特定数据进行比较,确定nandflash芯片每个block包括的page数目。
12.根据权利要求11所述的系统,其特征在于,该系统还包括block数目识别单元,该block数目识别单元包括:
第一单元,用于向第0号page写入数据,令参数i=1;
第二单元,用于根据每个block包括的page数目,格式化第512*i个block;
第三单元,用于读取第0号page中的数据,比较读取到的数据与写入该第0号page中的数据是否相同,如果是,则令i=i+1,然后触发第二单元;否则,确定nandflash芯片包括512*i个block。
13.根据权利要求8所述的系统,其特征在于,该系统还包括:
timing参数识别单元,用于从预先设置的多个timing参数中选择满足闪存nandflash芯片读写条件的timing参数;其中,timing参数满足nandflash芯片读写条件,是指在采用该timing参数时,对该nandflash芯片进行的读、写操作均成功;从满足nandflash芯片读写条件的timing参数中选择一个nandflash芯片工作频率最高的timing参数,作为nandflash芯片的最佳timing参数。
14.根据权利要求8所述的系统,其特征在于,该系统还包括:
初始判定单元,用于在所述page类型识别单元分别向nandflash芯片的多个特定字节区域写入不同的数据之前,确定所述nandflash芯片的预先约定区域是否存在该nandflash芯片的物理参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910242883.6A CN102103891B (zh) | 2009-12-18 | 2009-12-18 | 一种芯片参数的识别方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910242883.6A CN102103891B (zh) | 2009-12-18 | 2009-12-18 | 一种芯片参数的识别方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102103891A CN102103891A (zh) | 2011-06-22 |
CN102103891B true CN102103891B (zh) | 2015-05-20 |
Family
ID=44156591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910242883.6A Expired - Fee Related CN102103891B (zh) | 2009-12-18 | 2009-12-18 | 一种芯片参数的识别方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102103891B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017157257A (ja) * | 2016-03-01 | 2017-09-07 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101060014A (zh) * | 2007-05-08 | 2007-10-24 | 北京中星微电子有限公司 | 一种探测闪存物理参数的方法及装置 |
CN101419843A (zh) * | 2008-12-04 | 2009-04-29 | 北京中星微电子有限公司 | 快闪存储器识别方法、识别装置、芯片控制器 |
CN101430936A (zh) * | 2008-10-23 | 2009-05-13 | 深圳市硅格半导体有限公司 | 一种获取闪存物理参数的方法 |
-
2009
- 2009-12-18 CN CN200910242883.6A patent/CN102103891B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101060014A (zh) * | 2007-05-08 | 2007-10-24 | 北京中星微电子有限公司 | 一种探测闪存物理参数的方法及装置 |
CN101430936A (zh) * | 2008-10-23 | 2009-05-13 | 深圳市硅格半导体有限公司 | 一种获取闪存物理参数的方法 |
CN101419843A (zh) * | 2008-12-04 | 2009-04-29 | 北京中星微电子有限公司 | 快闪存储器识别方法、识别装置、芯片控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN102103891A (zh) | 2011-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101699406B (zh) | 数据储存系统与方法 | |
US8010876B2 (en) | Method of facilitating reliable access of flash memory | |
CN101848000B (zh) | 解码方法、编码方法及启动控制系统 | |
KR101623119B1 (ko) | 솔리드 스테이트 드라이브의 에러 제어 방법 | |
US20120254511A1 (en) | Memory storage device, memory controller, and data writing method | |
TWI433157B (zh) | 存取快閃記憶體的方法以及相關之記憶裝置 | |
CN102609334B (zh) | 非易失闪存擦除异常存储块修复方法和装置 | |
CN101901169B (zh) | 扫描装置及方法 | |
CN101427323A (zh) | 读取非易失性计算机存储器的系统和方法 | |
CN105788648A (zh) | 基于异构混合内存的nvm坏块识别处理及纠错方法和系统 | |
CN105808371A (zh) | 数据备份与恢复方法、控制芯片及存储装置 | |
CN101567220A (zh) | 闪存的损坏区块辨识方法、储存系统及其控制器 | |
US20150186211A1 (en) | Method, device and operating system for processing and using burn data of nand flash | |
US8301981B2 (en) | Data access method for flash memory and storage system and controller thereof | |
CN103631670A (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
CN102890645A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN101388256B (zh) | 用于一存储器元件产生一低级错误更正码的控制器及方法 | |
TWI509615B (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
US20140372833A1 (en) | Data protecting method, memory controller and memory storage device | |
CN101187879B (zh) | 电子系统及其数据处理方法 | |
CN102103891B (zh) | 一种芯片参数的识别方法及系统 | |
CN103106148A (zh) | 区块管理方法、存储器控制器与存储器存储装置 | |
CN102103890B (zh) | 一种芯片参数的识别方法及系统 | |
CN115509466B (zh) | 一种数据管理方法、装置及电子设备和存储介质 | |
CN101872318B (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 | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: 214028 national integrated circuit design Park, Changjiang Road, New District, Jiangsu,, Wuxi Patentee after: WUXI ZHONGGAN MICROELECTRONIC CO., LTD. Address before: 214028 national integrated circuit design Park, Changjiang Road, New District, Jiangsu,, Wuxi Patentee before: Wuxi Vimicro Co., Ltd. |
|
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: 20150520 Termination date: 20181218 |