首页 > 其他分享 >CFI --- Common Flash Interface

CFI --- Common Flash Interface

时间:2022-11-30 16:26:08浏览次数:64  
标签:数据线 CFI Flash --- 地址 mode Interface NOR

1.CFI简介

   CFI(Common Flash Interface)的作用是把 NOR Flash 的信息通过统一的方法读出来。

   不同公司产的NOR Flash在 erase,program,lock,unlock等操作上有差别,即command set不一样。
   本来产品中用这种NOR Flash,后来升级又换了其他牌子的了,command set不一样,就要改代码。

   NOR Flash要是支持CFI就好办多了,就不用改代码。通过CFI可以读出片子的manufacturer id,vendorid等等,在程序中就可以通过以上信息来选择正确的erase,program等操作方式。

   NOR Flash的数据线和地址线都可能为32/16/8条。
   为了统一起见,通过CFI接口查询时,
   CFI接口描述的地址均为Flash芯片的地址,
   CFI接口查询到的数据,以低字节D7-D0上为准,高字节数据线无视就好了。

2. Query mode

   NOR Flash支持很多命令,包括erase,program,lock什么的。若NOR Flash支持CFI的话,它一定要支持CFI Query Command。

   为了进入让芯片进入Query mode,需要向0x55(Flash地址)上写数据0x98
       Flash的地址线上放 55h    (高字节全是0)
       Flash的数据线上放 98h    (高字节全是0)


   在query mode下,再读Flash地址的话,得到的就不是存储的用户数据了,而是片子自己的属性信息:厂商id,容量大小等(即所谓的Query Struct)

3. Query Struct

   在Query mode时,一定要无视Flash的芯片的高字节数据线,只关心最低字节数据线D7-D0,比如:
    

解释一下,上图是在query mode时,读0x10(flash地址)时得到的结果

第一列:x16 device / x8 mode的意思是说,芯片有16根地址线,配置后,我们只用其中的8根
第二列:Flash的地址 0x10
第四列:为了访问Flash地址0x10, CPU需要发出的地址,注意这里地址线错接。
第五列:CPU数据线得到的数据。


x8 device/ x8 mode  没啥讲的,地球人都知道
x16 device/x16 mode 
        1.为访问Flash的地址0x10,CPU需在地址线上发出的地址为0x20,见 NOR Flash的帖子
        2.Flash把0x10(Flash地址)上的16-bit数据放到数据线上,这个数据是 0x0051(即 'null' 'Q')
        3.CPU 得到16-bit数据,但只有低字节是有用的(即'Q') 记住CFI接口只使用地址线的最低字节 


为了方便起见,我们只考虑 x8 mode 这种情况,则Query Struct是这样的:



0x10段的 'QRY'总是被用来判别NOR Flash是否支持CFI
 
0x1B段主要描述当前NOR Flash的Program 和 Erase操作所使用的电压



0x27段主要描述的就是Flash的容量等信息


4. 判断是否支持CFI的流程

 

版权声明:本文为CSDN博主「mtv_zmx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mtv_zmx/article/details/9993055  

标签:数据线,CFI,Flash,---,地址,mode,Interface,NOR
From: https://www.cnblogs.com/icaowu/p/16938764.html

相关文章

  • python-面向对象-类的封装-私有方法私有属性
    1.封装,就是把客观事物封装成抽象的类,并规定类中的数据和方法只让可信的类或对象操作。封装可分为两个层面:(1)第一层面的封装,创建类和对象时,分别创建两者的名称,只能通过类名或......
  • Sharding-JDBC 原理和spring boot 核心配置文件说明
    1、分库分表策略:如每个数据记录属于一个集团ID、属于一个店铺ID列,可以根据集团ID%数据库数量取余设置规则分片键,及设置用哪个数据库和哪个表。同现可以使用数据记录中的......
  • 三. 基于Jenkins与Gitlab的CI/CD及DevOps实战 -2
    基于Jenkins与Gitlab的CI/CD及DevOps实战DevOps介绍:OPS部分职责:1.通过监控、告警、人工值守等方式保证应用程序的7*24的可用性。   2.系统选型、基础环境初始......
  • python-解力扣提【两数相加】
    1.题目  2.无任何参考下自己的解题代码 解题思路:i和j在列表索引中循环,不相等且两数相加等于target则返回[i,j] 3.参考大神代码解题思路:1).enumerate多用于在f......
  • 每天一点基础K8S--K8S中的调度策略---污点(Taints)和容忍度(Tolerations)
    污点和容忍度之前的实验测试了调度策略中的nodeName、nodeSelector、节点亲和性和pod亲和性。有时,为了实现部分pod不能运行在特定的节点上,可以将节点打上污点。此时容忍......
  • DQL-查询笔记-2022-11-30
    联表查询join连接的表on(判断的条件)连接查询  固定的语法where 等值查询  分析需求 分析查询的数据来源于那些表确定使用那种连接7种确认交叉点(这两张......
  • 企业官网搭建流程-最简配版
    1.申请域名使用华为云服务的​​域名注册服务,新用户1块钱2.本地windows搭建官网方案(wordpress(框架)+astra(主题)+phpstudy(运行环境))搭建官网有两个方式,一种采用云服务器提供......
  • 智能云解析DNS有哪些核心技术?-中科三方
    ​传统解析技术经常出现线路拥堵、解析延迟、遭受DDoS攻击和DNS劫持等问题,已无法满足用户和企业对解析及时性、稳定性和安全性的需求。​​智能云解析DNS​​做为新一代解析......
  • vue2源码分析- 数据响应简单模拟
    工作中大部分项目使用vue2做,但一直局限于使用,终于有闲暇时间可以学习下源码,网上优秀的源码分析很多,此文章只是记录个人所学,有问题欢迎大家指出,欢迎讨论,互相学习。下面是我......
  • 「Java数据结构」- 栈和队列
    栈的认识========栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。压栈:栈的插入操作叫做进栈/......