Nor Flash是Intel在1988年推出的非易失闪存芯片,可随机读取,擦写时间长,可以擦写1~100W次,支持XIP(eXecute In Place)。
本文以JS28F512M29EWH为例分析Nor Flash芯片的特性以及读、擦、写、查询等操作的具体实现原理。
1、芯片特性
1)页大小32Bytes, 块大小128KB, 写缓冲区1KB(芯片厂家决定写缓冲区大小)
2)随机或者按页读取
3)以块为单位擦除、写入(擦除之后所有位默认为1)
4)WP#引脚决定锁保护第一个块或者最后一个块(具体哪一个块由芯片厂家决定)
5)Byte#引脚决定数据总线位宽,低电平时为x8模式,高电平时为x16模式(数据总线位宽,地址总线位宽由硬件连接和CPU控制器决定)
6)兼容JEDEC或者CFI协议(JEDEC制定)
7)Extended Memory Block
2、引脚说明
1)Address Inputs (A0~Amax)
地址输入信号
2)Data Inputs/Outputs(DQ0~DQ7)
数据输入输出信号
3)Data Inputs/Outputs(DQ8~DQ14)
当BYTE#引脚为低电平(x8模式)时,DQ8~DQ14均为高阻态;当BYTE#为高电平(x16模式)时,DQ8~DQ14有效
4)Data Input/Output or Address Input (DQ15/A-1)
当BYTE#引脚为低电平(x8模式时),该引脚为A-1,即地址最低位;当BYTE#引脚为高电平(x16模式)时,该引脚为DQ15。
5)Chip Enable(CE#)
当CE#为低电平时,允许Bus Read和Bus Write操作;当CE#为高电平时,禁止Bus Read/Write操作
6)Output Enable(OE#)
输出使能控制信号,控制Bus Read操作
7)Write Enable(WE#)
写使能控制信号,控制Bus Write操作
8)Vpp/Write Protect(WP#)
当WP#引脚为低电平时,写保护第一个或者最后一个块。
备注:对于2Gbit或者1Gbit的Nor Flash,写保护第一个块和最后一个块;对于低于1Gbit的Nor Flash,写保护最后一个块(芯片厂家自定义)
9)Reset(RST#)
复位信号
10)Ready/Busy Output(RY/BY#)
在擦写操作时为低电平,在读操作时为高电平
11)Byte/Word Organization Select(BYTE#)
BYTE#引脚为低电平时,为x8模式(数据总线位宽);为高电平时,为x16模式
3、Nor Flash硬件连线
从引脚说明部分可以看到,Nor Flash有自己独立的地址总线和数据总线,这样的总线称为Local Bus总线。
通常,硬件设计上,x16模式下Nor Flash地址总线A~A与处理器的地址总线A~A是一一对应直连的。x8模式下错一位,Nor Flash地址总线A~A与处理器地址总线A~A一一对应。
4、命令集和工作模式
Nor Flash的读取和RAM很类似,但是不可以直接进行写操作,对Nor Flash的写操作需要遵循特定的命令序列,最终由芯片内部的控制单元完成写操作。
Nor Flash和Nand Flash一样,必须先擦后写。
此外,Nor Flash芯片内部还写入了一些特定信息,需要进入特定模式查询。
Nor Flash的Reset、Read、Program、Erase、Read CFI Query均需要通过上述命令序列才能实现。比如,往0x55地址写入0x98,才能进入Read CFI Query模式获取芯片预置信息。
5、CFI接口(Common Flash Interface)
JEDEC(Joint Electron Device Engineering Council)即电子元件工业联合会。JEDEC是由生产厂商们制定的国际性协议,主要为计算机内存制定。JEDEC用来帮助程序读取Flash的制造商ID和设备ID,以确定Flash的大小和算法,如果芯片不支持CFI,就需使用JEDEC了。工业标准的内存通常指的是符合JEDEC标准的一组内存。
不同公司的Nor Flash在erase/program/lock/unlock等操作上有差别,即command set不一致。
CFI接口是由Intel, AMD, Sharp, Fujutsu推动JEDEC制定的一个通用接口,用来帮助程序读取Flash的制造商ID和设备ID,确定Flash的大小,获取Flash的各个物理特性,比如block块的擦除时间等。CFI标准目前只支持Parallel Nor Flash,还不支持SPI Flash和Spansion的ORNAND Flash。
CFI标准包括以下五部分:
CFI是一组标准的数据结构,通过Read CFI Query Command命令(往0x55地址写0x98)进入Read CFI Query模式查询。为统一起见,通过CFI接口查询时,CFI接口地址均为Flash芯片的地址,通过CFI接口查询到的数据,以D7~D0低字节为准。
1) CFI Query Identification String CFI查询识别码字符串
在Read CFI Query模式,通过读取查询识别码信息部分,可以判断Nor Flash芯片是否支持CFI。
比如,在x16模式下,读取0x10开始的连续三个字节,如果为QRY字符串,则表示Nor Flash支持CFI。
2) System Interface String 系统接口字符串
在Read CFI Query模式下,通过读取系统接口信息部分,可以获取Nor Flash芯片的电气特性。
3) Device Geometry Definition 设备物理结构信息
在Read CFI Query模式下,通过读取设备物理结构信息部分,可以获取Nor Flash芯片的容量、数据总线位宽、单次写入字节数最大值、擦除块大小等信息。
4) Primary Vendor-Specific Extended Query 原始设备提供商查询信息
在Read CFI Query模式下,通过读取原始设备提供商信息部分,可以获取厂商信息。
5) Alternate Vendor-Specific Extended Query 可选供应商自定义扩展查询信息
厂家自定义,一般不涉及。