一种获取闪存物理参数的方法
技术领域
本发明涉及一种闪存识别与控制领域,尤其涉及的是一种针对未知闪存获取其物理参数的方法。
背景技术
现有技术中,闪存(Flash Memory)已经越来越广泛的被应用到各种各样的需要存储数据或文件的系统中。闪存在被使用的过程中,必须首先识别其闪存并获知其闪存的相应物理参数,以便闪存控制器能对闪存执行有效率的存取操作。
使用现有技术的闪存物理参数的获取通常需要通过先获取闪存的标识(ID)来完成。由于闪存的种类繁多,想要通过识别闪存的标识(ID)来获取闪存的物理参数时,就需要维护庞大的各种闪存型号的数据库,这就需要在闪存控制器外开辟一个很大的存储空间来存储所有闪存厂家、闪存型号和闪存工艺等的数据库。
同时,由于闪存是在不断的推陈出新,这就会很容易导致数据库必须不断扩充,因而也很容易导致它的不完整。当闪存控制器无法识别闪存的标识(ID)时,它就不能有效的支持这种闪存,即无法实现闪存的读写或存取等操作。
基于现有技术的闪存物理参数的获取通常通过以下三种方式之一:
1、将闪存的标识码(ID code)所对应的闪存物理参数存放在闪存控制器中。
在实际应用的时候,由闪存控制器首先读取该闪存的ID(有时读取其ID 也不是一件容易的事情),从而在闪存的标识码ID所对应的闪存物理参数数据库中找到所所对应的相关物理参数。
但这种方法需要庞大的数据库来支持,因而数据处理速度很慢;并且一旦遇到一种新型号的闪存出现时,只有修改数据库中的相关数据后该闪存控制器才可以支持这个新型号的闪存,因为原有数据库已经无法支持,所以就会造成数据库的不断修改、完善而引起生产成本较高的后果。
2、采用预先将数据存储在闪存的方法:即将闪存的物理参数存储在闪存的特定地址区域内,然后由闪存控制器读取该段地址的数据,获取该闪存所对应的物理参数,此时,无需闪存标识码ID,直接从相应的闪存特定地址段读取闪存的物理参数即可。
但此种方法有一个基本的条件,就是相应的物理参数能够从闪存的特定地址段里读取出来,说明其闪存的基本物理参数已经知道(但不一定是最优存取方式,最优存取方式应该在读取其整个物理参数后才能确定)即已经能解决鸡和蛋的问题。。
3、采用试探性的方法:即将一定数量的数据写入闪存的页,并读取该页的所写入这些数据,从而根据所读取的数据是否与写入的数据相同,来判断所述闪存每页可存储的数据字节数。
此种方法是通过对页存储数据进行尝试性的获取,直至能够获取或推测出该闪存的物理参数。由于每页的存储字节数是有限的,所以可以通过此种方式来确定闪存的型号。但是此种方法在闪存物理参数获取之前需要经过一个尝试过程,其处理效率就会受到很大的影响,还有就是它只能试探出一些参数,而并不能试探出所有的物理参数。
因此,现有技术还有待于改进和发展。
发明内容
本发明的目的在于提供一种获取闪存物理参数的方法,实现一种简单的闪存识别和物理参数获取的方法,尤其方便对未知型号闪存识别与物理参数的获取。
本发明的技术方案包括:
一种获取闪存物理参数的方法,其包括以下步骤:
A、在所述闪存与闪存控制器之间的数据总线的任意数据线上预先设置上拉电阻或下拉电阻,所述上拉电阻或下拉电阻的阻值在1K至1M欧姆之间;
B、上电后,所述闪存控制器测知所述数据总线的各数据线上电阻之配置状态,是上拉电阻或下拉电阻或都没有;
C、根据上述配置状态,所述闪存控制器自动形成一个状态配置编码;
D、根据上述配置编码,所述闪存控制器在预先设置的闪存物理参数配置查找表里获取所对应闪存的物理参数。
所述的方法,其中,所述步骤B还包括:
B1、所述闪存控制器将其数据总线上的所有闪存的片选置为禁止其数据输出的状态;
B2、所述闪存控制器将数据总线转换为输入模式;
B3、所述闪存控制器在一定时间后马上读取该数据总线上各数据线的状态,由此获知各数据线上电阻的配置状态信息。
所述的方法,其中:
所述闪存物理参数配置查找表存放在闪存控制器中,或,存放在闪存芯片中。
所述的方法,其中:
所述数据线的宽度是4位、8位、16位、32位或64位。
所述的方法,其中,所述步骤B1还包括:
在所述数据总线中预先选择一数据线,用于在没有连接上拉电阻时表示当前没有闪存物理参数配置信息或配置信息无效。
所述的方法,其中,在所述步骤A之前还包括以下步骤:
A01、向闪存芯片发送命令码0x00;
A02、依次发送四个地址码0x00,0x00,0x00,0x00;
A03、在等待一预定时间TA后,检测闪存芯片的Ready/Busy引脚即RB引脚状态,如果其状态为Busy,则确定该闪存为小Page模式。
所述的方法,其中,所述步骤A03中如果状态为Ready,则进一步执行以下步骤:
A04、向所述闪存芯片发送地址码0x00;
A05、向所述闪存芯片发送命令码0x30;
A06、在等待一预定时间TB后,检测闪存芯片的Ready/Busy引脚即RB引脚状态;如果其状态为Busy,则确定该闪存芯片的物理参数;如果其状态为Ready,则检测失败。
所述的方法,其中,所述预定时间TA及预定时间TB的优选值都为200ns至500ns。
所述的方法,其中:
在小Page模式时,Page大小为512byte或528byte。
本发明所提供的一种获取闪存参数的方法,由于采用了在闪存数据总线上实施上拉电阻或下拉电阻的方式,来进行配置信息的编码处理,从而方便和简化了对闪存物理参数的获取过程,提高了闪存的处理效率和准确性。
附图说明
图1是本发明方法实施例的电阻配置范例示意图;
图2是本发明方法实施例的探测的流程图;
图3为本发明方法中闪存物理参数配置查找表的一种优选实现方式示意图。
以下结合附图,将对本发明的实施例进行更为详细的说明。
本发明方法提供了一种探测闪存物理参数的方法,可以用来识别未知闪存,提供闪存基本特征参数,解决现有技术中存在的获取闪存物理参数的方法有局限性的问题。
本发明所提供的探测闪存物理参数方法,其至少适用以下情况:通过闪存的数据线挂上拉电阻或下拉电阻的方式,由控制器读取数据线上电阻是上拉或下拉的状态,再通过事先设置的闪存物理参数配置查找表来获取闪存的相应物理参数信息。较为常用的技术手段是在闪存的数据线上挂上拉电阻。通过对闪存的不同数据线上设置上拉电阻,即类似于采用编码方式实现对闪存物理参数类型的识别。由于对闪存数据线上是否设置上拉电阻的测知可以很简单的实现,从而方便了对闪存物理参数的获取。
本发明方法的探测闪存物理参数的方法较佳实施例如图1所示,其包括以下步骤:
采用在闪存(例如NAND Flash)和闪存控制器之间的数据总线DATA0-DATA7(本实施例假设数据线为8位)上预先设置阻值比较大的上拉或者下拉电阻来改变数据总线在没有被驱动时的默认状态,通过闪存控制器来测知所述数据总线上各数据线之电阻配置状态,是上拉电阻或下拉电阻或都没有,根据上述配置状态,所述闪存控制器自动形成一个状态配置编码,并根据上述配置编码,在事先设置的闪存物理参数配置查找表里获取所对应闪存芯片的物理参数。电阻阻值的选择,要求其不影响数据总线在正常高速数据传输过程中的数据传输的正确性,且在数据总线空闲(没有被驱动)的时候,可经过一些延时,能够使得数据总线的状态稳定下来并保持到数据总线被其他器件驱动而改变;对于NAND类型的闪存,一般选择阻值为1K欧姆至1M欧姆的范围作为上拉电阻或下拉电阻的阻值。
本发明方法中在所述闪存控制器获取其各数据总线电阻配置状态的过程包括:
先将其数据总线上的所有闪存或其他芯片的片选置为禁止其数据输出的状态;然后所述闪存控制器将数据总线转换为输入模式;所述闪存控制器并在延迟一些时间后马上读取该数据总线上各数据线的状态,由此获知各数据线上电阻的配置状态信息。本发明方法中的所述闪存物理参数配置查找表,如图3所示的一示例就非常简单,它既可以存放在闪存控制器里面,也可以存放在闪存芯片里面。本发明方法中所述数据线的宽度可以是4位、8位、16位、32位或64位;所述数据线所形成的数据通道可以是单通道、双通道、或多通道。
在当前的闪存设计中,都是按照在闪存没有读写操作的时候,其数据总线状态均为浮动模式(Floating,或三态);闪存控制器的数据总线,在设为输入(Input)模式的时候,根据不同厂商不同型号的产品,一般有三种状态:浮动(Floating)、弱上拉、弱下拉。
对于总线状态为浮动(Floating)模式的,可以选择加挂上拉电阻,或者下拉电阻;本发明实施例以加挂上拉电阻为例子说明,但对下拉电阻显然为本领域普通技术人员所熟知,在此不再赘述:
本发明方法中,所述闪存控制器先将其挂上拉电阻的数据总线上的所有闪存或者其他器件的片选(Chip Enable/Chip Select)置为禁止输出(OutputDisable)状态,使其不会在数据总线上输出数据或者说驱动其数据总线;
所述闪存控制器将数据总线置为输入模式(Input);
所述闪存控制器延时一些时间后读取该数据总线的状态,延时最小时间跟电阻阻值是有关系的,阻值越大,最小延时也就会越大一点;由此,就所述闪存控制器就可以获知所述闪存数据总线上的电阻阻值配置状态。
本发明方法中所述闪存控制器通过读到的数据总线的状态(是否设上拉电阻),就可以判断和获取当前使用闪存的物理参数信息,其可能的配置方 式如下(以下仅为示例而已,见图3,根据实际闪存类型不同可以制作标准的识别编码,根据各数据总线是否挂上拉电阻或下拉电阻,由此进行编码识别,获取该闪存的物理参数):
如果数据总线DATA0的状态为0,即没有挂上拉电阻,表示当前数据总线上没有配置信息;这个时候不用再理会其他数据线的状态,此DATA0用来作为是否采用了本发明方法获取闪存物理参数的标志;
如果DATA0的状态为1,即挂了上拉电阻,表示当前数据总线上有配置信息,然后继续判断其他数据线的状态来获得所需的闪存物理参数:
如果DATA1的状态为0,表示闪存的列地址周期数为2,反之,周期数为1;
如果DATA2的状态为0,表示闪存的行地址周期数为3,反之则为2;
如果DATA3的状态为0,表示闪存发送完行地址后,需要发送0X30的命令,反之就是不需要发送0X30命令;
如果DATA5 and DATA4的状态为00B时,表示闪存一个Page的容量为528字节;状态为01B时,表示闪存一个Page的容量为2112字节;状态为10B时,表示闪存一个Page的容量为4224字节;状态为11B时,表示闪存一个Page的容量为4314字节。
DATA7-DATA6的状态可以保留来进一步配置其他信息,。
本发明方法通过上述数据线上挂上拉电阻或下拉电阻的方式,可以简单且快速地测知数据总线上电阻配置的情况,而无需在闪存中存储或在控制器中存储大量相关的数据,提高了闪存的处理效率和准确性。
本发明方法中,在采用上述方式处理之前或之后,还可以采用如图2所示的方式对闪存物理参数进行进一步探测和获取,其具体步骤包括:
步骤S100:向闪存芯片发送0x00命令,该RB引脚是闪存芯片正确接收和发送数据与否的标志,在正常情况下即数据的传输能够正确处理时,该RB引脚会处于忙的状态。
步骤S102:再依次向闪存发送四个地址0x00,0x00,0x00,0x00;
步骤S104:等待预定时间TA后,例如200ns至500ns,检测闪存芯片的RB(Ready/Busy)引脚的状态,是Ready(空闲)还是Busy(忙);
假如其状态为Busy,则认为闪存为小Page模式,默认列地址周期是1,行地址周期是3,发送完行地址后不需要发0x30命令。如果其状态为Ready,则需要进一步执行步骤S106;
步骤S106:再继续发地址0x00;
步骤S108:发0x30命令;
步骤S110:等待预定时间TB后,例如200ns至500ns,然后检测闪存芯片的Ready/Busy引脚即RB引脚的状态;假如其状态为Busy,则认为该闪存芯片的格式为528*4字节/Page,列地址周期CA为2,行地址周期RA为3,发送完行地址后需要发0x30命令。
如果在该步骤S110检测到RB引脚状态仍然为Ready状态,则判断为检测失败,需要采用其他现有技术方式去进行相应的检测。本发明方法中在小Page模式时,Page大小为512byte或528byte;在大Page模式时,Page大小为2048byte或2112Byte或4096byte或4224byte或4324byte或更高的容量。此处的page为本领域技术人员所熟知的词汇,是闪存芯片的一个存储单位。
通过本发明中上面所述的进一步检测方法,它可以实现对其中部分闪存芯片做出识别和获取其物理参数,而此检测方式并没有对硬件作更改,但却实现了对闪存芯片物理参数的进一步识别和获取,其实现过程简单,效率高。
应当理解的是,上述针对本发明较佳实施例的描述较为具体,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。