FLASH简介:操作规程与指令集
时间:2007-04-09 来源:naonaolazy
MTD: (Memory Technology Devices,内存技术设备)的支持。MTD可 以避免对不同的存储设备采用不同的工具和技术,以及在不同的设备上提供通用的功能和接口。MTD提供了统一的软件架构,把底层的MTD设备芯片驱动和高层 的MTD用户模块无缝结合。MTD用户模块是指MTD子系统建立在MTD设备芯片驱动基础上的内核软件模块。它向上层的内核其它模块提供一致的抽象模型和 接口。
MTD设备芯片驱动通过add_mtd_device()函数和mtd_info结构把自己注册到MTD子系统中。mtd_info结构定义了一套通用的设备操作接口,包括读、写、擦除和同步,高层的MTD模块将调用这些预定义的回调函数进行相应的操作。
虚拟文件系统 |
|
||
JFFS2 |
字符设备 |
快设备 |
NFTL |
NAND Flash |
DOC |
Ram |
其它 |
MTD子系统架构
闪存:
作用:存储内核和一些可执行程序的映像,需要断电保存的数据。
特点:1、只能成片擦除,而不能随机擦除,而且必须遵循一定的步骤。
2、随机读出,对于空白(内容全为1的单元)或者已经擦除的区间可以按一定的规则写入,但一经写入便不能向相同地址再写入,除非先擦除。
28F008:基本命令集BCS。
要点:1、闪存平时处于随机读出状态,访问地址决定具体的存储单元。
2、除非芯片处于写入状态,往芯片上的任何一个单元写都意味着向芯片发出命令。
3、根据命令代码的不同,闪存芯片内部的状态机进入不同的状态,从而可以进行各种不同的操作。
BCS有以下命令:
*随机读出(READ ARRAY):往芯片上的任何地址写0xff,使芯片“复位”进入“读存储阵列”状态。闪存上电后的初始状态就是该状态。注意,往一个闪存单元写0xff,不会改变其内容,因为写操作只能使1变成0。
*读状态寄存器(READ Status Register):往芯片的任何地址写0x70,表示要求从芯片读出其状态寄存器。此后可以从芯片的任意地址读出其状态。
*清除状态寄存器(CLEAR Status Register):往芯片的任何地址写0x50,表示要清除状态寄存器的内容。
*写入(PROGRAM):要求写入芯片的若干存储单元。往目标块起始地址写0x40,表示进入写模式。进入写模式,就可以对目标块进行随机写入。每个字节只能写一次。
单字节(或短字)写入。往往需要写入的单元写入0x40或0x10,如后写入具体的数据。
成块擦除(Block Erase):往目标的任意地址写入 0x20(或0x28),表示成块擦除芯片中的内容。
成块擦除确认,或继续擦除:往目标的任意地址写入 0XD0,表示确认要求成块擦除芯片中的内容,或在暂停擦除以后恢复擦除。
暂停擦除(Erase Suspend):往目标的任意地址写入 0XB0,表示暂停擦除,需要时可以通过0XD0恢复擦除。
可扩充命令集合SCS(Scaleable Command Set)
成块缓冲写入:擦除一闪存块后,可用缓冲的方式进行成块写入,以提供速度。方法是先向目标块的起始地址写入 0XE8,再写入数据的长度,然后接连向目标块中的任何地址写入一个整块的数据,写入的数据暂时存于芯片内部的一个缓冲区中。再向目标块中任何地址写
0XD0,芯片就自动把缓冲区中的内容转入目标块中。
芯片加锁/去锁:为保证内存芯片中的数据不至于因偶然的误操作而损坏,可以给芯片加上锁。向目标块的起始地址写入 0X60,再写入0X01,就加上了锁。要去锁时向目标块的任意地址写入 0X60,再写入0XD0。当然不管是加锁还是去锁,最后都要再写入0XFF,使芯片进入随机读状态。
*读芯片ID(READ ID)。往任何地址写0x90,表示要求从芯片读出固化在里面的身份信息。如由谁生产、什么型号等,称为“Jedec ID”。CPU从片上地址0开始逐个字节地读出这些信息。
*公共闪存接口CFI(Command Flash Interface),获取闪存芯片物理和结构参数的操作规程和标准。
CFI规定:各厂商可使用各自的操作规程和命令集,但必须有个统一的编号,并且在软件查询下提供这个编号。而且,闪存芯片可同时支持两套操作规程和命令集,让软件选择使用。
同时芯片要提供更多的信息,包括:芯片的电源电压、擦除/写入操作是否采用额外的电源,芯片的容量,分成几个擦除块,各种操作大约需要多少时间。定义一个提供详细信息的标准数据结构,即CFI信息快。还可以与所有支持的操作规程和命令集提供附加的参数和信息。
“CFI查询”的规程和命令:
*往片上地址0x55写入0x98,然后从片上地址0x10开始读出。如果读出的内容依次为“ Q”“R”“Y”,则该片支持CFI。
*然后从芯片上相继的地址(0x13-0x30)读出CFI信息块的固定部分。
*除固定部分外,后面还有个无符号整数数组,其大小取决于芯片上的存储空间划分成几个擦除空间,一个擦除空间中可以有若干大小相同的擦除块。
*如果从地址0x15和0x16读出的16位无符号短整数P非0,则在片上地址P处还有一个“主算法扩充查询表(Primary Algorithm Extended Query Table)”,即主要操作规程配套的参数和其它信息。
*如果从地址0x19和0x20读出的16位无符号短整数A非0,则在片上地址A处还有一个“次算法扩充查询表(Alternate Algorithm Extended Query Table)”,即令一操作规程配套的参数和其它信息。