CN101000580A - Nand闪存信息提取方法和nand闪存自动识别方法 - Google Patents
Nand闪存信息提取方法和nand闪存自动识别方法 Download PDFInfo
- Publication number
- CN101000580A CN101000580A CN 200610130765 CN200610130765A CN101000580A CN 101000580 A CN101000580 A CN 101000580A CN 200610130765 CN200610130765 CN 200610130765 CN 200610130765 A CN200610130765 A CN 200610130765A CN 101000580 A CN101000580 A CN 101000580A
- Authority
- CN
- China
- Prior art keywords
- nand
- address
- information table
- information
- page
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000000605 extraction Methods 0.000 title 1
- 230000015654 memory Effects 0.000 claims description 27
- 230000008676 import Effects 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000010295 mobile communication Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Memory System (AREA)
Abstract
本发明公开了一种NAND信息提取方法,首先定义一个数据结构,描述NAND必需的信息,其中包括NAND的CHIP ID;将多种类型的NAND的必需信息以所述数据结构保存下来,形成多张NAND信息表;并设置多个指针指向所述多个NAND信息表;在NAND初始化时读取NAND的CHIP ID,找到对应信息表,即可得到NAND必需的信息,在读写数据时根据所述必需信息进行地址的计算,即可对正确的物理地址进行数据读写。本发明还公开了一种NAND闪存自动识别方法,可以自动识别不同类型的NAND。本发明方法简单,只用一套底层驱动,即可支持多种类型的NAND闪存,从而实现自动识别NAND。可以广泛应用于所有使用NAND闪存作为存储器的领域中。
Description
技术领域
本发明涉及NAND闪存的控制,特别涉及NAND闪存信息提取方法和NAND闪存自动识别方法。
技术背景
由于NAND闪存以页为单位读写数据,所以适合于存储连续的数据,如图片、音频或其它文件数据;同时因具有成本低、容量大且写入速度快、擦除时间短的优点,所以在移动通讯装置及便携式多媒体装置的存储领域中得到了广泛的应用。
NAND闪存都由多个块即block组成,每个block由多个页即page组成,每页中包含一定数量的byte。如图1所示,这个NAND闪存中,每个block包含32个page,每个page包含(512+16)bytes,其中每页的前512bytes是数据区,用于存储数据;后16bytes是空闲区。该NAND闪存数据位为8位,每页中的512bytes分为两个半页,即第一半页1st half page和第二半页2nd half page,每个半页包含256bytes。
不同容量的NAND闪存,其结构类型也不同,即page大小和block总数都会不同。由于NAND闪存一般固定在硬件上,所以在一般情况下,驱动程序只需要支持一种固定类型的NAND闪存就可以了,在不同类型NAND闪存时再修改相应程序。
但是在很多情况下,驱动程序比较固定,修改较为繁琐。例如手机中的多媒体处理芯片,其文件系统的程序是在芯片内部运行的,如果这时NAND闪存结构类型不同,则芯片内部的驱动程序也需要更新,即针对各个不同NAND闪存结构类型,提供不同的驱动程序。这就给芯片程序设计、制造和用户使用带来了很多麻烦。
发明内容
有鉴于此,本发明需要解决的技术问题就是较为固定的驱动程序无法支持不同结构类型的NAND闪存的问题。
为了解决上述技术问题,本发明提供一种NAND闪存信息提取方法,包括:
100定义一个数据结构,用于描述NAND必需的信息;
200将多个不同类型NAND的必需信息都以上述数据结构保存下来,每个NAND的必需信息形成一个NAND信息表,从而得到不同NAND的多个信息表;
300形成一张指针表,其中每个指针分别对应指向步骤200中所述的一张NAND信息表所在空间。
进一步地,所述步骤100中的NAND必需信息,包括NAND的ID、NAND名称、block总数、每一个block里面的page数、实际page大小、NAND的芯片代码nand_id、该NAND的nand_id哪几位有效、NAND的行数目、列数目及一些必要的时序等。
进一步地,在使用NAND列表中没有的NAND时,增加该未使用过的NAND的信息表到NAND列表中,同时更新指针表。
本发明还提供一种NAND闪存自动识别方法,包括:
400在NAND初始化时,用同一个命令读取NAND的ID,利用指针表得到相应NAND的信息表,信息表中保存着NAND所必需的信息;
500在读写数据时,根据传入的block地址及page偏移地址,结合所述NAND信息表中的相关信息来计算读写地址;
600根据NAND信息表中的相关信息发送读写地址中的行和列地址。
进一步地,步骤400具体为,读取NAND的CHIP ID,利用指针表指向各个NAND信息表的空间,利用所述ID在各个NAND信息表中进行搜索,找到信息表中有相同CHIP ID的相应NAND信息表。
进一步地,所述计算读写地址的计算式为:
行地址=(实际page大小/528)*(传入的block地址)*(每个block有多少个page)+(传入的page偏移地址/(实际page大小/528));
列地址=(传入的page偏移地址%(实际page大小/528))*528,列地址需要清除高4位;
其中“%”为相除后取余数的运算符,式中的实际page大小由NAND信息表中得到。
进一步地,在发送地址时,通过I/O0~I/O7来发送,每个周期发送一组8bit的地址,先发送列地址,后发送行地址;首先由NAND信息表中得到该NAND的行和列数目,在发送行、列地址时,发送与行数目相等数量的行地址,和与列数目相等数量的列地址。
本发明在NAND的驱动程序中定义了一个数据结构,描述了NAND必需的信息,其中包括NAND的CHIP ID;将多种类型的NAND的必需信息以所述数据结构保存下来,形成多张NAND信息表;并设置指针指向所述信息表;在NAND初始化时读取NAND的CHIP ID,找到有相同CHIP ID的对应NAND信息表,即可得到NAND必需的信息;在读写数据时根据所述必需信息进行地址的计算,即可对正确的物理地址进行数据读写。本发明方法简单,只用一套底层驱动,即可支持多种NAND闪存;从而实现自动识别。进一步地,本发明可以用更新NAND信息表的方式,更新驱动程序中所支持的NAND类型,也就是说,不需要修改芯片内部的驱动程序,即可支持所有结构类型的NAND闪存。
附图说明
图1为一个NAND闪存的物理结构示意图;
图2为本发明生成NAND闪存信息表的方法流程图;
图3为本发明中指针表与NAND信息表对应关系;
图4为本发明针对不同类型的NAND闪存以不同形式发送行、列地址的示意图;
图5为本发明自动识别NAND闪存信息表的方法流程图。
具体实施方式
下面结合附图,说明本发明的方法,包括以下步骤。
步骤100,定义一个数据结构,用于描述NAND必需的信息;
所述信息包括NAND名称;block总数;每一个block里面的page数;NAND物理page的真实大小,以Byte为单位;NAND的芯片代码nand_id;该NAND的nand_id哪几位有效;NAND的行数目、列数目及一些必要的时序等。
下面给出一个所述数据结构定义的实例:
typedef struct_struct_NANDdetail
{
unsigned char name[17];//NAND名称
unsigned long dwNANDBlockNum;//NAND的block总数
unsigned char bNANDPagePerBlock;//NAND每一个block里面页数
unsigned long dwPageRealSize;//NAND物物理page的实际大小,以Byte为单位
unsigned long dwNANDId;//NAND的nand_id
unsigned long dwNANDIdAnd;//NAND的nand_id哪几位有效
unsigned long dwRowNum;//NAND的行数目
unsigned long dwColNum;//NAND的列数目
//timing
unsigned char racc;//trea max一些必要的时序
………一些必要的时序
}NAND_DETAIL,*PNAND_DETAIL。
步骤200,将多个不同NAND的必需信息都以步骤100所述的数据结构保存下来,每个NAND的必需信息为一个NAND信息表,从而得到不同NAND的多个信息表。
在此给出一个NAND的必需信息的实例,注意,在此给出的内容并非实际保存的无符号字符或无符号长整型数据等,而是以便于阅读和识别的文字符号形式给出:
XX公司NAND-3;//NAND名称
1024;//NAND的block总数
32;//NAND每一个block里面页数
528;//NAND物理page的实际大小,以Byte为单位
XY3;//NAND的nand_id
512;//NAND的nand_id哪几位有效
2;//NAND的行数目
2;//NAND的列数目
//timing…一些必要的时序
步骤300,形成一张指针表,其中每个指针分别对应指向步骤200中所述的一张NAND信息表所在空间。
如图3所示,为一张保存了多个NAND信息的表格,而指针表中的每个指针1、2和3则分别指向NAND信息表1、2和3。
那么在实际使用NAND时,就可以用以下步骤来识别NAND:
步骤400,在NAND初始化的时候用同一个命令读取NAND的芯片代码即CHIP ID,利用指针表得到前述的相应NAND所必需的信息表。
使用同一个命令来读取NAND的CHIP ID。在指针表中利用指针逐个指向各个NAND信息表的空间,利用CHIP ID在各个NAND信息表中进行搜索,找到一张NAND信息表,其中的nand_id应该与CHIP ID相同,那么该信息表即为所寻找的NAND信息表。
步骤500,在读写数据时,根据步骤400中所找到NAND信息表中的信息来计算读写地址。
在此,无论是实际物理结构大至一个page有2112byte的大page的NAND,还是一个page仅有528byte的小page的NAND,在计算地址时都将分割成528一个page。
在计算地址时,需要根据接收到的block地址和page偏移地址(这两个地址是文件系统的底层产生的,本发明就是要将不同形式的地址,用一种固定的形式传给文件系统),计算出其在NAND中的实际物理地址。分别计算行地址和列地址,下面给出地址转换公式,其中“%”为相除后取余数的运算符。
行地址=(实际page大小/528)*(传入的block地址)*(每个block有多少个page)+(传入的page偏移地址/(实际page大小/528));
列地址=(传入的page偏移地址%(实际page大小/528))*528,列地址需要清除高4位。
式中的实际page大小是由NAND信息表中得到的。
例如,对于步骤200中给出的一个NAND的实例,其block总数为1024,每个block里面页数中有32个page,每个page中有528Bytes。那么如果其传入的block地址为800,而传入的page偏移地址为20,则可得到:
行地址=(528/528)*(800)*32+(20/(528/528))=800*32+20=25620;
列地址=(20%(528/528))*528=0,列地址需要清除高4位。
另举一实例,设一NAND的其它信息与上例都一样,只是每个page中有2112Bytes。其传入的block地址为400,而传入的page偏移地址为30。则在计算地址时,其计算结果为:
行地址=(2112/528)*(400)*32+(30/(2112/528))=4×400×32+7=51207;
列地址=(30%(2112/528))*528=1056,列地址需要清除高4位,最终列地址为056。
步骤600,根据各个NAND的行列数目的不同发送读写地址中的行和列地址。
在读写地址计算完毕后,需要将其发送到NAND中来对相应物理地址进行数据读写操作。在发送地址时,都是通过I/O0~I/O7来发送的,每个周期发送一组8bit的地址。在发送时,根据行列数目,先发列地址,第一周期正常发送,若列地址多于8位,则在第1个周期后将算好的列地址每次左移8位然后发送,发送完列地址后再发送行地址,发送方式与列地址发送方法相同。
因为各个NAND的行列数目不同,所以发送行列地址的方式也有不同。所述NAND的行列数目由NAND信息表得到。如图4所示,其中图4a表示一个行、列数分别为3和1的NAND的地址发送形式,需要发送1个列地址,跟着发送3个行地址。该NAND总共有A0~A26总共27位地址数据。至于A8,在发送地址时不用,是用不同控制命令来分别a8的,所以在上述地址中没有A8。在图4a中共用了四个总线周期来发送一个地址,在第4周期所发送的数据中只有低2位有效,高6位无效表示为“*L”。而图4b则表示一个行列数都为2的NAND的地址发送形式,这个NAND每次需要发送2个列地址,2个行地址。该NAND总共有A0~A27总共28位地址数据。共用了四个总线周期来发送一个地址,在第2周期所发送的数据中高4位无效,表示为“*L”。
现有技术中,在NAND类型改变时,需要更改相应的驱动程序,以支持不同类型的NAND。本发明因为使用了NAND信息表来自动识别NAND,因此在NAND类型改变时,可以不用更改驱动程序,而是通过增加或更新NAND信息表的方式来支持新类型的NAND。例如手机用户可以使用手机通讯来下载得到更新的NAND信息表。这样给用户、手机制造商或程序提供商都提供了很大的方便。
使用本发明的方法,可以自动识别多种类型的NAND,因此可以用一个版本的程序,支持多种类型的NAND,使得驱动程序不用因为NAND的类型不同而需要更改。而且可以使得用户可以通过更新NAND信息表的方式,更新驱动程序所支持的NAND列表。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
Claims (7)
1、NAND闪存信息提取方法,其特征在于,包括:
100定义一个数据结构,用于描述NAND必需的信息;
200将多个不同类型NAND的必需信息都以上述数据结构保存下来,每个NAND的必需信息形成一个NAND信息表,从而得到不同NAND的多个信息表;
300形成一张指针表,其中每个指针分别对应指向步骤200中所述的一张NAND信息表所在空间。
2、根据权利要求1所述的方法,其特征在于,所述步骤100中的NAND必需信息,包括NAND的ID、NAND名称、block总数、每一个block里面的page数、实际page大小、NAND的芯片代码nand_id、该NAND的nand_id哪几位有效、NAND的行数目、列数目及一些必要的时序等。
3、根据权利要求1所述的方法,其特征在于,在使用NAND列表中没有的NAND时,增加该未使用过的NAND的信息表到NAND列表中,同时更新指针表。
4、NAND闪存自动识别方法,其特征在于,包括:
400在NAND初始化时,用同一个命令读取NAND的ID,利用指针表得到相应NAND的信息表,信息表中保存着NAND所必需的信息;
500在读写数据时,根据传入的block地址及page偏移地址,结合所述NAND信息表中的相关信息来计算读写地址;
600根据NAND信息表中的相关信息发送读写地址中的行和列地址。
5、根据权利要求4所述的方法,其特征在于,步骤400具体为,读取NAND的CHIP ID,利用指针表指向各个NAND信息表的空间,利用所述ID在各个NAND信息表中进行搜索,找到信息表中有相同CHIP ID的相应NAND信息表。
6、根据权利要求4所述的方法,其特征在于,所述计算读写地址的计算式为:
行地址=(实际page大小/528)*(传入的block地址)*(每个block有多少个page)+(传入的page偏移地址/(实际page大小/528));
列地址=(传入的page偏移地址%(实际page大小/528))*528,列地址需要清除高4位;
其中“%”为相除后取余数的运算符,式中的实际page大小由NAND信息表中得到。
7、根据权利要求4所述的方法,其特征在于,在发送地址时,通过I/O0~I/O7来发送,每个周期发送一组8bit的地址,先发送列地址,后发送行地址;首先由NAND信息表中得到该NAND的行和列数目,在发送行、列地址时,发送与行数目相等数量的行地址,和与列数目相等数量的列地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101307652A CN100458736C (zh) | 2006-12-30 | 2006-12-30 | Nand闪存信息提取方法和nand闪存自动识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101307652A CN100458736C (zh) | 2006-12-30 | 2006-12-30 | Nand闪存信息提取方法和nand闪存自动识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101000580A true CN101000580A (zh) | 2007-07-18 |
CN100458736C CN100458736C (zh) | 2009-02-04 |
Family
ID=38692560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101307652A Expired - Fee Related CN100458736C (zh) | 2006-12-30 | 2006-12-30 | Nand闪存信息提取方法和nand闪存自动识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100458736C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533663A (zh) * | 2008-03-11 | 2009-09-16 | 深圳市朗科科技股份有限公司 | 提高闪存介质数据存取速度的方法 |
CN101430936B (zh) * | 2008-10-23 | 2011-09-07 | 深圳市硅格半导体有限公司 | 一种获取闪存物理参数的方法 |
CN101751338B (zh) * | 2008-12-15 | 2012-03-07 | 中芯国际集成电路制造(上海)有限公司 | 数据存取控制装置及数据存取方法 |
CN102622305A (zh) * | 2012-01-19 | 2012-08-01 | 苏州希图视鼎微电子有限公司 | Nand闪存硬件访问地址宽度参数的处理方法 |
CN102622243A (zh) * | 2012-01-19 | 2012-08-01 | 苏州希图视鼎微电子有限公司 | 支持多种nand闪存的固化代码的执行方法 |
CN102662878A (zh) * | 2012-02-27 | 2012-09-12 | 深圳市硅格半导体有限公司 | 存储设备软件层的识别和驱动方法及装置 |
TWI381384B (zh) * | 2008-03-11 | 2013-01-01 | Netac Technology Co Ltd | 提高快閃記憶體資料存取速度的方法 |
CN102110055B (zh) * | 2009-12-25 | 2013-04-10 | 比亚迪股份有限公司 | 闪存芯片存储配置方法以及闪存芯片存储配置装置 |
CN105955667A (zh) * | 2016-05-03 | 2016-09-21 | 深圳芯邦科技股份有限公司 | 一种底层驱动及NandFlash识别方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100577380B1 (ko) * | 1999-09-29 | 2006-05-09 | 삼성전자주식회사 | 플래시 메모리와 그 제어 방법 |
JP4233213B2 (ja) * | 2000-12-27 | 2009-03-04 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
US20060143365A1 (en) * | 2002-06-19 | 2006-06-29 | Tokyo Electron Device Limited | Memory device, memory managing method and program |
KR100626391B1 (ko) * | 2005-04-01 | 2006-09-20 | 삼성전자주식회사 | 원낸드 플래시 메모리 및 그것을 포함한 데이터 처리시스템 |
TWI275101B (en) * | 2005-05-24 | 2007-03-01 | Prolific Technology Inc | Flash memory storage system |
-
2006
- 2006-12-30 CN CNB2006101307652A patent/CN100458736C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI381384B (zh) * | 2008-03-11 | 2013-01-01 | Netac Technology Co Ltd | 提高快閃記憶體資料存取速度的方法 |
WO2009111981A1 (zh) * | 2008-03-11 | 2009-09-17 | 深圳市朗科科技股份有限公司 | 提高闪存介质数据存取速度的方法及采用该方法的装置 |
CN101533663A (zh) * | 2008-03-11 | 2009-09-16 | 深圳市朗科科技股份有限公司 | 提高闪存介质数据存取速度的方法 |
CN101533663B (zh) * | 2008-03-11 | 2014-07-16 | 深圳市朗科科技股份有限公司 | 提高闪存介质数据存取速度的方法 |
CN101430936B (zh) * | 2008-10-23 | 2011-09-07 | 深圳市硅格半导体有限公司 | 一种获取闪存物理参数的方法 |
CN101751338B (zh) * | 2008-12-15 | 2012-03-07 | 中芯国际集成电路制造(上海)有限公司 | 数据存取控制装置及数据存取方法 |
CN102110055B (zh) * | 2009-12-25 | 2013-04-10 | 比亚迪股份有限公司 | 闪存芯片存储配置方法以及闪存芯片存储配置装置 |
CN102622243A (zh) * | 2012-01-19 | 2012-08-01 | 苏州希图视鼎微电子有限公司 | 支持多种nand闪存的固化代码的执行方法 |
CN102622305A (zh) * | 2012-01-19 | 2012-08-01 | 苏州希图视鼎微电子有限公司 | Nand闪存硬件访问地址宽度参数的处理方法 |
CN102662878A (zh) * | 2012-02-27 | 2012-09-12 | 深圳市硅格半导体有限公司 | 存储设备软件层的识别和驱动方法及装置 |
CN102662878B (zh) * | 2012-02-27 | 2015-01-21 | 深圳市硅格半导体有限公司 | 存储设备软件层的识别和驱动方法及装置 |
CN105955667A (zh) * | 2016-05-03 | 2016-09-21 | 深圳芯邦科技股份有限公司 | 一种底层驱动及NandFlash识别方法 |
CN105955667B (zh) * | 2016-05-03 | 2019-04-26 | 深圳芯邦科技股份有限公司 | 一种底层驱动及NandFlash识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100458736C (zh) | 2009-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100458736C (zh) | Nand闪存信息提取方法和nand闪存自动识别方法 | |
US7516296B2 (en) | Flash memory storage device and read/write method | |
CN101099125B (zh) | 群集的自动对准方法和存储器系统 | |
US9529709B2 (en) | Apparatuses for managing and accessing flash memory module | |
US8144515B2 (en) | Interleaved flash storage system and method | |
US8230160B2 (en) | Flash memory storage system and flash memory controller and data processing method thereof | |
US8539174B2 (en) | Use by a host device having a first file system of a portable storage device having a second file system and supporting file segmentation | |
CN102414666A (zh) | 用于受管理的非易失性存储器的低等待时间读取操作 | |
US20080016267A1 (en) | Memory controller, flash memory system having memory controller, and method for controlling flash memory | |
CN102054533A (zh) | 隔离顺序、随机和系统数据以减少垃圾回收的针对基于页映射的非易失性半导体存储器 | |
CN102422271A (zh) | 用于非易失性存储器系统的多页准备命令 | |
CN103279406B (zh) | 一种内存的隔离方法和装置 | |
CN111897743B (zh) | 数据储存装置及逻辑至物理地址映射表的载入方法 | |
US10802750B2 (en) | Universal flash storage memory module, controller and electronic device with advanced turbo write buffer and method for operating the memory module | |
CN1936866A (zh) | 具有资料还原功能的闪存记忆体存储机制 | |
CN109284252B (zh) | 一种通信设备中轻量级文件系统管理方法 | |
CN106528441B (zh) | 仿真eeprom的数据处理方法、装置及电子设备 | |
CN103309619A (zh) | 一种闪存数据存储方法 | |
CN101002274A (zh) | 提高usb闪存写入性能的方法和器件 | |
US8966159B2 (en) | Flash storage device and data writing method thereof | |
CN102541753A (zh) | 一种嵌入式存储器的读写优化方法 | |
JP2008084184A (ja) | メモリコントローラ | |
CN101719101B (zh) | 存储器的数据读写方法和装置 | |
US20080147966A1 (en) | Flash memory device, update method and program search method thereof | |
US8544424B2 (en) | System, controller and method thereof for transmitting and distributing data stream |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090204 Termination date: 20111230 |