公共闪存接口CFI在Flash Memory程序设计中的应用
2009-02-06
作者:胡永庆 陈 萍 梁学东
摘 要:介绍了闪速存储器(Flash Memory)的公共闪存接口(CFI)结构,以及系统软件如何利用CFI获取Flash Memory的各种参数,实现对各种Flash Memory的程序设计。
关键词:闪速存储器 公共闪存接口CFI 命令用户接口CUI
自从Intel公司于1988年推出了可快速擦写的非易失性存储器Flash Memory以来,快速擦写存储器Flash Memory技术就得到了非常迅速的发展。这主要是由于Flash Memory具有不需要存储电容器、集成度更高、制造成本低于DRAM、使用方便,读写灵活、访问速度快、断电后不丢失信息等特点。
虽然Flash Memory应用越来越广泛,但由于生产Flash Memory的开云棋牌官网在线客服制造商众多,不同厂商Flash Memory产品的操作命令集和电气参数又千差万别,这给Flash Memory的开发设计人员和OEM制造商带来许多不便。为了对现有的Flash Memory的产品进行升级或使用其它公司的Flash Memory产品替换,必须对原有的程序代码和硬件结构进行修改。为解决上述原因所引发的问题,迫切需要Flash Memory制造商提出一个公共的标准解决方案,在这样的背景下,公共闪存接口(Common Flash Interface,简称CFI)诞生了,CFI是一个公开的标准的从Flash Memory器件中读取数据的接口。它可以使系统软件查询已安装的Flash Memory器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等。利用CFI可以不用修改系统软件就可以用新型的和改进的产品代替旧版本的产品。例如:如果新型的Flash Memory的擦除时间只有旧版本的一半,系统软件只要通过CFI读取新器件的擦除时间等参数,修改一下定时器的时间参数即可。为了充分有效地利用CFI所提供的功能,有必要了解一下以下几个方面的问题。
1 Flash Memory的工作方式
对Flash Memory芯片的所有操作都是通过芯片的命令用户接口(CUI)来实现的,命令用户接口是微处理器或微控制器与芯片内部操作之间的界面。当通过CUI写入不同的控制命令时,Flash Memory从一个工作状态转移到另一个工作状态,其常见的工作状态分为以下几种。
1.1 读存储单元操作
在Flash Memory芯片上电以后,或者从深度低功耗状态返回以后,芯片就处于读存储单元状态。可通过写入复位命令进入读存储单元状态。此时可以读取Flash Memory芯片存储单元的内容,读存储单元的操作与SRAM相同,但不同公司的产品逻辑电源供电电压(Vcc)是不同的。
1.2 擦除操作
对Flash Memory芯片进行擦除操作时,由于Flash Memory采用模块分区的阵列结构,使得各个存储模块可以被独立地擦除,当给出的地址是在模块地址范围之内且向命令用户接口写入模块擦除命令时,相应的模块就被擦除。在执行擦除操作时有三个问题需要注意:(1)由于Flash Memory采用模块分区的阵列结构,不同型号的Flash Memory产品模块分区的数量和每个分区的大小是不一样的;(2)不同型号的Flash Memory产品在执行擦除操作时,擦除电压是不一样的;(3)不同型号的Flash Memory产品整片擦除时间和每个模块分区的擦除时间参数是不同的。
1.3 编程操作
Flash Memory 的编程操作是自动字节编程,既可以是顺序写入,也可以是指定地址写入。向用户命令接口写入字节编程命令时,芯片自动进行字节编程和编程校验。在执行编程操作时有两个问题需要注意:(1)对不同型号的Flash Memory产品进行编程操作时编程电压是不一样的;(2)不同型号的Flash Memory产品字节/字编程时间是不同的。所有这些问题都是在系统程序设计时必须要考虑的问题。
除了以上所提到的常见的三种工作方式外,Flash Memory还有芯片复位、读标识码、擦除挂起和擦除恢复等工作方式,只不过这几种工作方式在程序设计时几乎不需要考虑什么问题,只要输入正确的命令字即可,但是不同公司的Flash Memory命令控制字是不同的。前面所遇到的问题,都可以通过CFI来解决,但首先要保证待操作的Flash Memory是一个CFI使能的器件。
2 CFI使能器件的识别
为了确定一个闪速存储器是否是一个CFI使能的Flash Memory器件,系统软件首先要通过CUI往闪速存储器的地址55H写入数据98H,然后从器件的地址10H处开始通过数据总线连续读取3个存储单元中的内容,如果数据总线返回的3个存储单元的字符分别为‘Q’、‘R’和‘Y’,那么该器件是一个CFI使能的Flash Memory器件。
由于Flash Memory内部的阵列结构各不相同,从器件返回查询字符‘Q’的地址和数量亦不同。目前常见的Flash Memory内部阵列结构主要有以下三种模式:
(1) 单片×16结构,该芯片有8位访问能力,但只能操作在16位总线模式;
(2) 双片×8/16结构,每片既有8位又有16位总线存储模式,但每片仅能操作在8位总线模式,整个芯片阵列结构为16位总线;
(3) 双片×16结构,每片仅有8位总线存储模式,且每片仅能操作在8位总线模式,整个芯片阵列结构为16位总线。
在判决一个Flash Memory是CFI使能器件后,软件程序要根据从器件返回的查询字符'Q'的数量来确定Flash Memory的阵列结构,并以此来保证对器件正确的读写操作。
3 公共闪存接口的结构
在识别器件为CFI使能器件后,通过查询命令来读取CFI查询结构或数据库,这些数据的地址和含义如表1,在表1中地址13H处为制造商命令集和控制接口识别码ID信息,其数据代表的含义如表2所示。
表1 CFI数据结构(数据库)的地址和含义表
地址 长度 含 义 举例Intel
28F800BVT
10H 03H 查询ASCII 10:0051H ‘Q’
字符串 11:0052H ‘R’
“QRY” 12:0059H ‘Y’
13H 02H 制造商命令集 13:0003H
和控制接口 14:0000H
识别码ID
1BH 01H 逻辑供电 1B:0030H
Vcc最小电压 (3伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1CH 01H 逻辑供电 1C:0055H
Vcc最大电压 (5.5伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1DH 01H 编程/擦除供电 1B:0045H
Vpp最小电压 (4.5伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1EH 01H 编程/擦除供电Vpp 1C:00C6H
最大电压 (12.6伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1FH 01H 典型单字节/字 1F:0003H
写周期定时 N=3,8微秒
时间,2N微秒
21H 01H 典型单块擦 21:000AH
除定时时间, (1.024秒)
2N毫秒
22H 01H 典型整片擦 22:0000H
除定时时间, (不支持)
2N毫秒
23H 01H 单字节/字写周期 23:0004H
最大定时时间, 24×8微秒
2N×典型单字节/字
写周期定时时间
25H 01H 单块擦除最大 23:0004H
定时时间, 24×1.024秒
2N×典型单块
擦除定时时间
26H 01H 整片擦除最大 26:0000H
定时时间, (不支持)
2N×典型整片
擦除定时时间
27H 01H 器件体积= 27:0014H
2N字节 214=1M字节
28H 02H Flash器件接口 28:0002H
识别码ID 29:0000H
2CH 01H 器件可擦除块 2C:0004H
区域个数 4个擦除块
Bit=7-0=可
擦除块个数
2DH 04H 擦除块区域1 2D:0006H
信息: 2E:0000H
bits 31-16 7个擦除块
=z,该区域每个 2F:0000H
擦除块体积= 30:0002H
z×256字节 256×200H
bits 15-0=y, =128K字节
该擦除块区域内
含同样体积
擦除块的个数
=y+1
31H 04H 擦除块区域2 31:0000H
信息: 32:0000H
33:0080H
34:0001H
35H 04H 擦除块区域3 35:0001H
信息: 36:0000H
37:0020H
38:0001H
39H 04H 擦除块区域4 39:0000H
信息: 3A:0000H
3B:0040H
3C:0000H
表2 制造商命令集和控制接口识别码ID定义表
数值 制造商 含 义
0000H 空
0001H Intel/ Intel/Sharp扩展命令集
Sharp
0002H AMD/ AMD/Fujitsu标准命令集
Fujitsu
0003H IntelIntel标准命令集
0004H AMD/ AMD/Fujitsu扩展命令集
Fujitsu
0100H Mitsubishi Mitsubishi标准命令集
0101H Mitsubishi Mitsubishi扩展命令集
FFFFH N/A 保 留
4 CFI查询操作软件流程
从表1中可以看到CFI提供了一种公开的标准的数据信息,系统软件能够利用这些信息使用不同制造商的命令集、调整擦除和编程定时时间、根据擦除块区域信息调整存储器体积大小等。系统软件要在CFI查询操作中读取CFI提供的主要数据信息,利用这些信息很容易对各种Flash Memory进行程序设计。CFI的查询操作的程序框图如图1所示。
参考文献
1 Common Flash Interface (CFI) and Command Sets.IntelCorporation, 1997(11)
2 Common Flash Memory interface Specification.IntelCorporation,1997(5)
3 Common Flash Memory Interface Publication 100.AMD Corporation, 1996(7)
4 窦振中.单片机外围器件使用手册:存储器分册. 北京:北京航空航天大学出版社,1998.4