kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 业界动态> 公共闪存接口CFI在Flash Memory程序设计中的应用

公共闪存接口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

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map