Nor Flash是Intel在1988年推出的非易失闪存芯片,可随机读取,擦写时间长,可以擦写1~100W次,支持XIP(eXecute In Place)。

本文以JS28F512M29EWH为例分析Nor Flash芯片的特性以及读、擦、写、查询等操作的具体实现原理。

1、芯片特性

1)页大小32Bytes, 块大小128KB, 写缓冲区1KB(芯片厂家决定写缓冲区大小)

2)随机或者按页读取

3)以块为单位擦除、写入(擦除之后所有位默认为1)

4)WP#引脚决定锁保护第一个块或者最后一个块(具体哪一个块由芯片厂家决定)

5)Byte#引脚决定数据总线位宽,低电平时为x8模式,高电平时为x16模式(数据总线位宽,地址总线位宽由硬件连接和CPU控制器决定)

6)兼容JEDEC或者CFI协议(JEDEC制定)

7)Extended Memory Block

2、引脚说明

1)Address Inputs (A0~Amax)

地址输入信号

2)Data Inputs/Outputs(DQ0~DQ7)

数据输入输出信号

3)Data Inputs/Outputs(DQ8~DQ14)

当BYTE#引脚为低电平(x8模式)时,DQ8~DQ14均为高阻态;当BYTE#为高电平(x16模式)时,DQ8~DQ14有效

4)Data Input/Output or Address Input (DQ15/A-1)

当BYTE#引脚为低电平(x8模式时),该引脚为A-1,即地址最低位;当BYTE#引脚为高电平(x16模式)时,该引脚为DQ15。

5)Chip Enable(CE#)

当CE#为低电平时,允许Bus Read和Bus Write操作;当CE#为高电平时,禁止Bus Read/Write操作

6)Output Enable(OE#)

输出使能控制信号,控制Bus Read操作

7)Write Enable(WE#)

写使能控制信号,控制Bus Write操作

8)Vpp/Write Protect(WP#)

当WP#引脚为低电平时,写保护第一个或者最后一个块。

备注:对于2Gbit或者1Gbit的Nor Flash,写保护第一个块和最后一个块;对于低于1Gbit的Nor Flash,写保护最后一个块(芯片厂家自定义)

9)Reset(RST#)

复位信号

10)Ready/Busy Output(RY/BY#)

在擦写操作时为低电平,在读操作时为高电平

11)Byte/Word Organization Select(BYTE#)

BYTE#引脚为低电平时,为x8模式(数据总线位宽);为高电平时,为x16模式

3、Nor Flash硬件连线

  从引脚说明部分可以看到,Nor Flash有自己独立的地址总线和数据总线,这样的总线称为Local Bus总线。

  通常,硬件设计上,x16模式下Nor Flash地址总线A0~An与处理器的地址总线A0~An是一一对应直连的。x8模式下错一位,Nor Flash地址总线A-1~An-1与处理器地址总线A0~An一一对应。

4、命令集和工作模式

  Nor Flash的读取和RAM很类似,但是不可以直接进行写操作,对Nor Flash的写操作需要遵循特定的命令序列,最终由芯片内部的控制单元完成写操作。

  Nor Flash和Nand Flash一样,必须先擦后写。

  此外,Nor Flash芯片内部还写入了一些特定信息,需要进入特定模式查询。

  Nor Flash的Reset、Read、Program、Erase、Read CFI Query均需要通过上述命令序列才能实现。比如,往0x55地址写入0x98,才能进入Read CFI Query模式获取芯片预置信息。

5、CFI接口(Common Flash Interface)

  JEDEC(Joint Electron Device Engineering Council)即电子元件工业联合会。JEDEC是由生产厂商们制定的国际性协议,主要为计算机内存制定。JEDEC用来帮助程序读取Flash的制造商ID和设备ID,以确定Flash的大小和算法,如果芯片不支持CFI,就需使用JEDEC了。工业标准的内存通常指的是符合JEDEC标准的一组内存。

  不同公司的Nor Flash在erase/program/lock/unlock等操作上有差别,即command set不一致。

  CFI接口是由Intel, AMD, Sharp, Fujutsu推动JEDEC制定的一个通用接口,用来帮助程序读取Flash的制造商ID和设备ID,确定Flash的大小,获取Flash的各个物理特性,比如block块的擦除时间等。CFI标准目前只支持Parallel Nor Flash,还不支持SPI Flash和Spansion的ORNAND Flash。

CFI标准包括以下五部分:

  CFI是一组标准的数据结构,通过Read CFI Query Command命令(往0x55地址写0x98)进入Read CFI Query模式查询。为统一起见,通过CFI接口查询时,CFI接口地址均为Flash芯片的地址,通过CFI接口查询到的数据,以D7~D0低字节为准。

1) CFI Query Identification String CFI查询识别码字符串

在Read CFI Query模式,通过读取查询识别码信息部分,可以判断Nor Flash芯片是否支持CFI。

比如,在x16模式下,读取0x10开始的连续三个字节,如果为QRY字符串,则表示Nor Flash支持CFI。

2) System Interface String 系统接口字符串

在Read CFI Query模式下,通过读取系统接口信息部分,可以获取Nor Flash芯片的电气特性。

3) Device Geometry Definition 设备物理结构信息

在Read CFI Query模式下,通过读取设备物理结构信息部分,可以获取Nor Flash芯片的容量、数据总线位宽、单次写入字节数最大值、擦除块大小等信息。

4) Primary Vendor-Specific Extended Query 原始设备提供商查询信息

在Read CFI Query模式下,通过读取原始设备提供商信息部分,可以获取厂商信息。

5) Alternate Vendor-Specific Extended Query 可选供应商自定义扩展查询信息

厂家自定义,一般不涉及。

Nor Flash芯片特性分析的更多相关文章

  1. 智能设备逆向工程之外部Flash读取与分析篇

    智能设备逆向工程之外部Flash读取与分析篇 唐朝实验室 · 2015/10/19 11:19 author: rayxcp 0x00 前言 目前智能家居设备的种类很多,本文内容以某智能豆浆机为例完成 ...

  2. Flash芯片你都认识吗?

    [导读]Flash存储器,简称Flash,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程的性能,还不会因断电而丢失数据,具有快速读取数据的特点;在现在琳琅满目的电子市场上,Flash总类可谓繁 ...

  3. Arduino SPI + SPI Flash芯片W25Q80BV

    W25Q80BV是台湾华邦电子(Winbond)生产的8M-bit串行flash芯片.主要特性有: 工作电压:2.5 ~ 3.6 V 功耗:读写(active)时4mA,低功耗(power-down) ...

  4. MySQL · 特性分析 · 优化器 MRR & BKA【转】

    MySQL · 特性分析 · 优化器 MRR & BKA 上一篇文章咱们对 ICP 进行了一次全面的分析,本篇文章小编继续为大家分析优化器的另外两个选项: MRR & batched_ ...

  5. Nand flash 芯片工作原理

    Nand flash 芯片型号为 Samsung K9F1208U0B,数据存储容量为 64MB,采用块页式存储管理.8 个 I/O 引脚充当数据.地址.命令的复用端口. 芯片内部存储布局及存储操作特 ...

  6. 【linux】驱动-4-LED芯片手册分析

    目录 前言 4. LED芯片手册分析 4.1 内存管理单元MMU 4.1.1 MMU的功能 4.1.2 TLB的作用 4.2 地址转换函数 4.2.1 ioremap函数 4.2.2 iounmap函 ...

  7. Flash平台的分析与RIA的趋势

    10月3号,Flash Player 11 和 AIR 3.0正式提供下载,一片安静.最近这两年来,关于Flash的新闻一向是以负面为主,先是 Silverlight 的挑战,然后是 iphone和i ...

  8. mini2440 Nor Flash工作原理分析

    我的mini2440上是只接了一块Nor Flash,型号是S29AL016M90TAI02,这是一块2M Byte,16位宽度的Nor Flash,用于引导扇区的闪存.原理图里面关键的引脚是: 地址 ...

  9. Android 4.4 新特性分析-15项大改进!

    Google发布了Android 4.4 KitKat,并其同时面世的还有新旗舰Nexus 5.Android 4.4 KitKat有怎样的改进.是否值得升级呢,下面就为大家呈现Android 4.4 ...

随机推荐

  1. Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用

    从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...

  2. vscode学习(二)之显示中文异常解决办法

    异常原因:VSCODE默认是UTF-8编码打开文件的.如果遇到了像GB18030 GBK等等的编码,就显示乱码了. 解决办法: 在设置文件中加入:"files.autoGuessEncodi ...

  3. docker安装笔记

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相 ...

  4. 实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理能涨20%。

    1.实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理能涨20%.具体要求如下:(1)Perso ...

  5. HTTP 缓存简单了解

    HTTP 缓存简单了解.文章整理了相关资料,记录了部分实践.方便大家轻松了解缓存.能回答上三个问题,HTTP缓存就算理解呢.能否缓存?缓存是否过期?协商缓存? 概要: web缓存 缓存的处理 前端解决 ...

  6. 从零开始学MySQL(二)

    鉴于上节篇幅以安装为主,因此对于调用mysql所需要使用的“命令”只是略微提及.随之而来就会带给读者诸多不解了,因为你会思考,这串长长的字符到底有什么特殊的含义呢?聪明的你可能早就抱着好奇心去“摆渡” ...

  7. 第五小节之GUI(图形用户界面)

    GUi:全程是Graphical User Interface,即图形用户界面,就是应用程序提供给用户操作的图形界面,包括窗口.菜单.按钮.工具栏和其它各种图形界面元素.提供了丰富的类,这些类分别位于 ...

  8. TensorFlow——LSTM长短期记忆神经网络处理Mnist数据集

    1.RNN(Recurrent Neural Network)循环神经网络模型 详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html 2. ...

  9. 将临时全局表中的符合字段导入test数据库中

    --表1 开户级别表 insert into test.dbo.crm_m_cust_summary(CUST_CERT_N O,ASSETAMT_GRADE_CD)select cust_no,cu ...

  10. (转) ORACLE 正确删除归档日志的方法

    ORACLE 正确删除归档日志的方法 我们都知道在controlfile中记录着每一个archivelog文件的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的controlfile中 ...