zoukankan      html  css  js  c++  java
  • 公共闪存接口CFI在Flash Memory程序设计中的应用

    摘 要: 介绍了闪速存储器(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数据结构(数据库)的地址和含义表

    t1.gif (8499 字节) 表2 制造商命令集和控制接口识别码ID定义表

    b2.gif (6970 字节)

    4 CFI查询操作软件流程

        从表1中可以看到CFI提供了一种公开的标准的数据信息,系统软件能够利用这些信息使用不同制造商的命令集、调整擦除和编程定时时间、根据擦除块区域信息调整存储器体积大小等。系统软件要在CFI查询操作中读取CFI提供的主要数据信息,利用这些信息很容易对各种Flash   Memory进行程序设计。CFI的查询操作的程序框图如图1所示。

  • 相关阅读:
    Plug It In
    The King's Walk
    Water Testing 匹克定理
    基尔霍夫矩阵
    nginx 常用的命令
    Nginx window安装
    使用nrm管理 npm 镜像仓库
    window 安装node.js
    变量和数据类型
    同步,异步,阻塞,非阻塞
  • 原文地址:https://www.cnblogs.com/cute/p/2011300.html
Copyright © 2011-2022 走看看