专利名称:一种nand闪存自适应启动方法
技术领域:
本发明涉及数码产品中使用闪存的系统,特别是一种NAND闪存自适应启动方法。
背景技术:
嵌入式系统的使用在电子行业越来越普遍,系统软件代码的容量也越来越大, 需要的存储空间也增大。传统的系统代码都是用NOR闪存存储的,NOR有很多优点 地址访问方便,读数据速度快,几乎没有坏道等等,使用也相当广泛。但是NOR 也有很大的缺点,容量与NAND相比普遍偏小,价格也高出很多,在系统代码容量 逐渐增大需求下,NAND闪存在很多应用上逐渐取代N0R。目前在使用NAND闪存启 动的设计上,都是同时最多支持一种NAND闪存,小页面或者大页面,这就限制了 NAND的使用。
NAND闪存,其存储单元结构和与非门有关,英文翻译为NAND,优点在于容量 大,最大单片16G字节,读写速度快,价格低廉。当然它也有缺点,就是种类繁 多,地址访问不如NOR方便,会有坏道。这也是NAND大量应用的几个技术难点。
NAND闪存的种类有很多,按照页的大小分有小页面、大页面、4K页、8K页, 按照存储单元结构来分有SLC (每个存储单元存储2个信息)和MLC (每个存储单 元存储3个信息)及QLC (每个存储单元存储4个信息)等。NAND的地址访问方 式和N0R不同,NAND使用串行方式,将地址分成行地址和列地址两种,对于不同 种类和容量的NAND闪存行列地址是不同。传统的NAND启动设计只能在其中一种 结构上实现,要兼容所有的NAND闪存就要有自动识别NAND种类的方法。
NAND闪存存储包括字节、页、块3种组成部分, 一个块内有若干个页, 一个 页内有若干个字节。按照页的大小又分为小页面和大页面。NAND的地址是串行的, 分为行和列地址2种,大小页面的地址是不同的。列地址是指闪存一个页内的地 址,小页面一个页是512字节,因此列地址只有一个8位(即一个周期),行地址 则是指闪存包含多少块和多少页,根据容量的不同,会有2个周期地址或者3个 周期地址,如表l-2所示__,j0 0 ,1 TO 2 歸、3 歐4 TO 5f l/O'S ' W 7
1stGyde Afl At As Aa As As ,
2滅Cy由 As — At, A12 to , A银 ,A帖
:kdCyd径 紐 Aw A'm to to *X ' L
1s《Gyde 细 ^______A
2n<3 Cycte As As A加 An *L 1 *L *L 3rdCy* An Ais a14 Ats Aia At Aib Ala 4th Gyels A加 to te to Am A25
爾 ,0 4"麵两
1对Cycte细A1Ax 、A*A5A7人
2hcS CycfeA3A9A犯.A竹*L
麵AWA化A银船A .A,a
toA2呵toA24to
5伤Cycle飾Aze、1*L*1i
'、、 ' —尊'聰,.:.m藝 m贿,t纖
ASA1A3A
2od CycleA犯A《1A""A巧A15
A,7to'A24
她CycleAssL*L*I*L*
列地址 行地址l
行地址2
表1 1个周期列地址2个周期行地址
列地址l 行地址l
行地址2 行地址3
表2 l个周期列地址3个周期行地址 大页面一个页有2048字节或者4096字节或者8192字节,因此需要2个周期 的列地址来表示,而行地址则根据闪存容量的大小有2个周期或者3个周期,如 表3-4所示
'列地址i
'列地址2 '行地址, 行地址2
表3 2个周期列地址2个周期行地址
列地址i
列地址2
表4 2个周期列地址3个周期行地址 NAND闪存的操作时序, 一般是先发命令码和行列地址,然后看RB的信号的 状态,来判断该命令执行是否正确。RB信号是闪存的控制信号之一,R表示 "Ready" , B表示"Busy"。
在正确收到一个命令以后,RB信号会由Ready状态变为Busy状态,表示闪 存在准备执行该命令,然后再变回Ready状态,表示闪存己经准备好执行该命令, 如图l所示。
图1是对2个列地址3个行地址类型的闪存的读操作,如果对同样的闪存发送 给它的地址是1个列地址2个行地址,RB的反应如图2所示。
可以看出,RB信号始终为高,即闪存对和自身不匹配的行列地址操作的反应
5
址,s s
地地地
行行是RB始终为高,不进行命令准备阶段。
发明内容
本发明为解决上述问题提供了一种NAND闪存自适应启动方法,用N緒D闪存 控制线RB的不同响应自动识别NAND闪存的行列地址周期的方法,并利用NAND读 操作的通用性来读取系统配置数据,从而达到正确读取系统代码,启动系统。
一种NAND闪存自适应启动方法,其特征在于将不同的行列地址组合依次发 送给NAND闪存,然后检测RB的反应,当RB反应为正常的行列地址,则是NAND 闪存的行列地址信息,得到所述行列地址信息后,再从NAND中读取包含全部信息 的系统配置信息,启动系统。
所述发送是通过函数Read—NandFlash()向NAND闪存发送地址和命令。 ReadJJandFlash()函数主要是按照闪存的地址要求,将行列地址及命令按顺序发 送到闪存,命令主要是读命令,该函数一般是用来从闪存里面读数据,这里借用 来帮助检测闪存对读命令的反应。
所述检测RB的反应是检测RB信号是否为高,即闪存和行列地址是否匹配; 当RB信号始终为Ready状态时,闪存和行列地址不匹配;当RB信号由Ready状 态变为Busy状态,表示闪存在准备执行该命令,然后再变回Ready状态,表示闪 存已经准备好执行该命令,则说明闪存和行列地址匹配。
所述正常的行列地址则是指与闪存匹配的行列地址。
所述检测RB的反应是通过函数Check( RB )得到的。
所述方法对闪存的小页面和大页面枚举
ttdefine COLMIN1 列地址最小为1个周期
#def ine COLMAX2 列地址最大为2个周期
Mef ine RO丽IN2 行地址最小为2个周期
Mefine ROWMAX3 行地址最大为3个周期。 for(coladd=COLMIN; coladd < COLMAX; coladd++)
f or (rowadd=ROWMIN; rowadd〈丽MAX; rowadd+十)
Read_NandFlash (); 〃对NAND闪存发送地址和命令
breturn = Check ( RB ); 〃检测RB的反应所述读取是通过相同页面(大页面或者小页面)闪存的读操作命令相同,然 后在测得匹配的行列地址时,确定读取闪存的命令,从闪存中指定地址读出数据。 从闪存的0地址开始搜索配置信息字(配置信息的头标记文字),如
0x5aa55aa5,如果搜索到该标记,则说明系统的配置信息就找到了,用配置信息 配置系统参数,就可以完全操作该闪存,包括读、写和擦除等,系统也就可以正 常的启动了。
本发明的有益效果如下
用NAND闪存控制线RB的不同响应自动识别NAND闪存的行列地址的方法,然 后搜索配置信息,从而正确的启动系统,解决了系统只能从某一种NAND启动的问 题。
图1为本发明RB在正确命令和地址下的反应时序示意图 图2为本发明RB在非正确命令和地址下的反应时序示意图
具体实施例方式
如图l-2所示, 一种NAND闪存自适应启动方法,将不同的行列地址组合依次 发送给NAND闪存,然后检测RB的反应,当RB反应为正常的行列地址,则是NAND 闪存的行列地址信息,得到所述行列地址信息后,再从NAND中读取包含全部信息 的系统配置信息,启动系统。
所述发送是通过函数Read—NandFlash()向NAND闪存发送地址和命令。 ReacLNandFlash()函数主要是按照闪存的地址要求,将行列地址及命令按顺序发 送到闪存,命令主要是读命令,该函数一般是用来从闪存里面读数据,这里借用 来帮助检测闪存对读命令的反应。
所述检测RB的反应是检测RB信号是否为高,即闪存和行列地址是否匹配; 当RB信号始终为Ready状态时,闪存和行列地址不匹配;当RB信号由Ready状 态变为Busy状态,表示闪存在准备执行该命令,然后再变回Ready状态,表示闪 存己经准备好执行该命令,则说明闪存和行列地址匹配。
所述正常的行列地址则是指与闪存匹配的行列地址。
所述检测RB的反应是通过函数Check( RB )得到的。所述方法对闪存的小页面和大页面枚举 #define C0LMIN 1 列地址最小为1个周期 ttdef ine C0L區X2 列地址最大为2个周期 #def ine R0WMIN2 行地址最小为2个周期 ttdefine RO丽AX3 行地址最大为3个周期。 for(coladd=COLMIN; coladd < COLMAX; coladd++)
for(rowadd=ROWMIN; rowadd〈R0丽AX; rowadd++)
Read_NandFlash (); 〃对NAND闪存发送地址和命令
breturn = Check ( RB ); 〃检测RB的反应
所述读取是通过相同页面(大页面或者小页面)闪存的读操作命令相同,然 后在测得匹配的行列地址时,确定读取闪存的命令,从闪存中指定地址读出数据。 小页面类型NAND闪存的读命令都可以是OxOO,大页面类型的读命令都可以是0x00 和0x30。
从闪存的0地址开始搜索配置信息字(配置信息的头标记文字),如 0x5aa55aa5,如果搜索到该标记,则说明系统的配置信息就找到了,用配置信息 配置系统参数,就可以完全操作该闪存,包括读、写和擦除等,系统也就可以正 常的启动了。
8
权利要求
1、一种NAND闪存自适应启动方法,其特征在于将不同的行列地址组合依次发送给NAND闪存,然后检测RB的反应,当RB反应为正常的行列地址,则是NAND闪存的行列地址信息,得到所述行列地址信息后,再从NAND中读取包含全部信息的系统配置信息,启动系统。
2、 根据权利要求1所述一种NAND闪存自适应启动方法,其特征在于所述 发送是通过函数ReacLNandFlash()向NAND闪存发送地址和命令。
3、 根据权利要求1所述一种NAND闪存自适应启动方法,其特征在于所述 检测RB的反应是检测RB信号是否为高,即闪存和行列地址是否匹配;当RB信号 始终为Ready状态时,闪存和行列地址不匹配;当RB信号由Ready状态变为Busy 状态,表示闪存在准备执行该命令,然后再变回Ready状态,表示闪存已经准备 好执行该命令,则说明闪存和行列地址匹配。
4、 根据权利要求1所述一种NAND闪存自适应启动方法,某特征在于所述 正常的行列地址则是指与闪存匹配的行列地址。
5、 根据权利要求1所述一种NAND闪存自适应启动方法,其特征在于所述 检测RB的反应是通过函数Check( RB )得到的。
6、 根据权利要求1所述一种NAND闪存自适应启动方法,其特征在于所述 方法对闪存的小页面和大页面枚举#define COLMIN1 列地址最小为1个周期 ^define COLMAX2 列地址最大为2个周期 井define ROWMIN2 行地址最小为2个周期 ttdefine ROWMAX3 行地址最大为3个周期。 for(coladd=COLMIN; coladd < COLMAX; coIadd++)for(rowadd=ROWMIN; rowadd〈ROWMAX; rowadd++)Read—NandFlashO ; breturn = Check( RB );〃对NAND闪存发送地址和命令 〃检测RB的反应
7、根据权利要求1所述一种NAND闪存自适应启动方法,其特征在于所述 读取是通过相同页面闪存的读操作命令相同,然后在测得匹配的行列地址时,确 定读取闪存的命令,从闪存中指定地址读出数据。
全文摘要
本发明公开了一种NAND闪存自适应启动方法,将不同的行列地址组合依次发送给NAND闪存,然后检测RB的反应,当RB反应为正常的行列地址,则是NAND闪存的行列地址信息,得到所述行列地址信息后,再从NAND中读取包含全部信息的系统配置信息,启动系统;本发明用NAND闪存控制线RB的不同响应自动识别NAND闪存的行列地址的方法,然后搜索配置信息,从而正确的启动系统,解决了系统只能从某一种NAND启动的问题。
文档编号G06F9/445GK101498990SQ20081014800
公开日2009年8月5日 申请日期2008年12月25日 优先权日2008年12月25日
发明者孙银明 申请人:四川登巅微电子有限公司