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的流程

CFI --- Common Flash Interface相关推荐

  1. CFI(Common Flash Interface)详解

    原文链接:https://blog.csdn.net/emma3slp/article/details/5591086 [什么是CFI] CFI(Common Flash Interface),是JE ...

  2. 公共闪存接口CFI在Flash Memory程序设计中的应用

    摘 要: 介绍了闪速存储器(Flash   Memory)的公共闪存接口(CFI)结构,以及系统软件如何利用CFI获取Flash   Memory的各种参数,实现对各种Flash  Memory的程序 ...

  3. Nginx + CGI/FastCGI + C/Cpp(编不过去,不搞了。。。)(Common Gateway Interface)

    Nginx + CGI/FastCGI + C/Cpp 文章目录 1.CGI 1.1.环境变量 1.2.标准输入 总结:CGI使外部程序与Web服务器之间交互成为可能.CGI程式运行在独立的进程中,并 ...

  4. Linux内核MTD子系统七之Flash 存储器接口标准:CFI和JEDEC

    Flash  存储器 接口标准:CFI和JEDEC. CFI为公共Flash接口[Common FlashInterface],用来帮助程序从Flash芯片中获取操作方式信息,而不用在程序中硬编码Fl ...

  5. 嵌入式Linux驱动学习【9】—— Nor Flash

    1 Nor Flash   原理图   与Nand Flash不同,Nor Flash有地址线.数据线,能直接读取数据,但是不能直接写入数据,需要有命令才行.当进行写时,一般要解锁->命令-&g ...

  6. 驱动专题:第五章MTD及Flash驱动 4.Norflash驱动

    嵌入式Linux--nor flash (1):硬件介绍 声明:本文章是学完韦东山老师的教学视频后看过一些文章后所写,在看文章时我会将一些可能重要的知识点复制下来,所以可能会抄到您文章中的一些内容,如 ...

  7. 07 - Nor Flash

    声明: 本文是本人在韦东山笔记的基础上加了一些注释,方便理解.原文地址:http://wiki.100ask.org/%E7%AC%AC015%E8%AF%BE_Nor_Flash#.E7.AC.AC ...

  8. 第015课 NOR Flash操作原理及裸机程序分析

    #第001节_Nor Flash原理及硬件操作 # Nor Flash的连接线有地址线,数据线,片选信号读写信号等,Nor Flash的接口属于内存类接口,Nor Flash可以向内存一样读,但是不能 ...

  9. 第十五课(1)Nor FLash原理及硬件介绍

    一.Flash介绍 - Nor NAND XIP(excute in place代码可以直接运行) Yes no 性能(擦除) 非常慢(5s) 快(3ms) 性能(写) 慢 快 性能(读) 快 快 可 ...

最新文章

  1. Linux RSS/RPS/RFS/XPS对比
  2. Android 正则表达式实例
  3. Django实战之美化页面
  4. 微信小程序之设置不同的顶部导航栏名称
  5. mysql的数据类型以及性能优化
  6. 一些今天看到的好句子
  7. 数据结构与算法基础知识集锦
  8. linux 批量部署 pdf,Linux服务之批量部署篇
  9. 等保2.0 三级检查明细
  10. 台式计算机cpu品牌,台式电脑CPU天梯图2018年9月最新版 桌面CPU性能排名
  11. 软银将波士顿动力出售给现代;美国流行文化品牌“大嘴猴”被收购;盖茨基金会再投2.5亿美元抗疫 | 美通企业周刊...
  12. python编程a的x次方_python平方-Python,平方
  13. unity入门2.0
  14. Android studio插件GsonFormat 的使用
  15. C#高效编程 改进C#代码的50个行之有效的办法(第2版)
  16. c语言程序与设计教学设计,浅谈C语言程序设计课程的教学设计
  17. maya通过python输出fbx_Python:Maya2WRL简单导出脚本(source included)
  18. ios备忘录下载安卓版_安利3款手机实用软件,安卓和ios都有份
  19. web移动端调试神器Eruda
  20. poco遇到的问题及解决办法

热门文章

  1. 概率论与数理统计(3.2)边缘分布
  2. java推算日期后天_java获取当前系统前一天,当天,后天日期
  3. mysql索引_MySQL索引
  4. Freeradius服务器的搭建流程
  5. 微信小程序安卓机型调用微信支付后取消付款会重新调用一次页面的onShow方法
  6. 钓鱼攻击时间轴,你知道常见的钓鱼攻击有哪些吗?
  7. 男人化妆怎么了,百亿市场待开发
  8. Android自定义view之仿支付宝芝麻信用仪表盘 ---by ccy
  9. 【MLP实战】001:基于Minist数据集的手写数字识别
  10. 简述时钟周期、机器周期、指令周期的概念及三者之间的关系