存储器分为两大类:RAM(Random Access Memory,任意地址访问储存器)和ROM(Read-Only Memory,只读储存器)。

发展历史

ROM

Read-Only Memory,只读储存器。

微机的发展初期,BIOS都存在在ROM中。ROM的资料都是原产用特殊方法烧录进去的。其中的内容只能读不能改。

PROM

Programmable Read-Only Memory,也称为:One-Time Programmable (OTP)ROM,一次性可编程只读储存器。

跟ROM一样,也是只能读不能改,但跟ROM区别在于:用户可以用专用的编程器将自己的资料烧录,但机会只有一次(One-Time)

EPROM

Electrical Programmable Read Only Memory,可擦除可程式只读存储器。

类似于PROM,不同的是:EPROM烧写次数增加了,但烧写的条件相比PROM较为苛刻。

是一种断电后仍能保留数据的计算机储存芯片。它是一组浮栅晶体管,被一个提供比电子电路中常见电压更高电压的电子器件分别编程。一旦变成完成后,EPROM只能用强紫外线照射来擦除。

识别EPROM,可以通过封装顶部的硅片的透明窗口。这个窗口是用来擦除紫外线。可以将EPROM的玻璃窗对准阳光直射一段时间就可以擦除。完成芯片擦除的操作要用到EPROM擦除器。

EPROM内资料的写入要用专用的编程器,并且往芯片中写内容时必须要加一定的编程电压。

EPROM的型号是以27开头的。

EPROM芯片在写入资料后,还要用不透光的贴纸或胶布把窗口封住,以免受到周围的紫外线照射而使资料被擦除。

EPROM芯片在空白状态时,内部的每一个存储单元的数据都为1,即高电平。

EEPROM

Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器。

因为EPROM操作的不便,后来出的主板BIOS ROM芯片大部分都采用EEPROM。

跟EPROM的区别主要在于擦除不需要借助其他设备,写入资料也是。

用电子信号来修改其内容。

EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM 的Eraser和编程器的束缚。

因此目前的EEPROM都是几十千字节到几百千字节的,很少有超过512K的。

EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。

FLASH

flash属于广义的EEPROM(全称是FLASH EEPROM),因为它也是电擦除的rom。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。

flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。

flash分为nor flash和nand flash。

  • nor flash数据线和地址线分开,可以实现ram一样的任意寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。

  • nand flash同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(nandflash按块来擦除,按页来读;norflash没有页的概念)

因为nor flash可以进行字节寻址,所以程序可以在nor flash中运行。

由于nandflash引脚上复用,因此读取速度比nor flash慢一点,但是擦除和写入速度比nor flash快很多。nand flash内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的flash都是nand型的。小容量的2~12M的flash多是nor型的。

使用寿命上,nand flash的擦除次数是nor的数倍。而且nand flash可以标记坏块,从而使软件跳过坏块。nor flash 一旦损坏便无法再用。

嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。

写flash时为什么需要先擦除?

Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的块擦除,而擦除的过程就是把所有位都写为 1 的过程,块内的所有字节变为 0xFF。

总结

FLASH和EEPROM的最大区别是:FLASH按扇区操作,EEPROM则按字节操作 (二者寻址方式不同)。

一般来说:

  • EEPROM中存放开机是用到的参数,不可丢失的变量等
  • 而FLASH中会存放程序,记录文件等。

FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,

EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。

EEPROM、Flash有关知识的更多相关文章

  1. Nand Flash基础知识与坏块管理机制的研究

    概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...

  2. ArduPilot存储管理 Storage EEPROM Flash

    AP_HAL::Storage 此类可以应用于所有平台.PX4v1平台支持8k的EEPROM,Pixhawk平台支持16k的FRAM铁电存储器 存储大小定义:libraries/AP_HAL/AP_H ...

  3. Flash相关知识

    <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" wid ...

  4. FLASH的知识【转】

    转自:http://blog.csdn.net/xgbing/article/details/18422691 版权声明:原创文章,转载请注明来自:http://blog.csdn.net/xgbin ...

  5. ESP32的Flash加密知识

    一.Flash 加密功能用于加密与 ESP32-S2 搭载使用的 SPI Flash 中的内容.启用 Flash 加密功能后,物理读取 SPI Flash 便无法恢复大部分 Flash 内容.通过明文 ...

  6. nand flash详解及驱动编写

    https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_ ...

  7. 详解SPI中的极性CPOL和相位CPHA

    SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间.即一个SPI的Master通过SPI与一个 ...

  8. Linux内核配置选项

    http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...

  9. nRF52832之硬件I2C

    这几天一直在折腾nRF52832的硬件I2C,到了今天最终出现了成果,在此也印证了那句话:"耕耘就有收获" 52832的硬件I2C尽管官方提供了demo,可是自己对I2C通信理解的 ...

  10. 深入linux kernel内核配置选项

    ============================================================================== 深入linux kernel内核配置选项 ...

随机推荐

  1. Node.js 万字教程

    0. 基础概念 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动.非阻塞式 I/O 模型,让 JavaScript 运行在服务端的开发平台. ...

  2. Zookeeper中的角色

    在zookeeper集群中,节点也有不同的角色,承担着不同角色. zookeeper有三种角色: 老大:Leader   (领导者)   : 客户端提供读服务和写服务. 老二:Follower(跟随者 ...

  3. Spring 是如何造出一个 Bean 的

    前言 使用 Java 作为第一开发语言的朋友们,相信大家或多或少的都使用过 Spring 这个开发框架,可以说 Spring 框架真是我们 Java 程序员的春天,在 Spring 中 Bean 是其 ...

  4. 算法~PBKDF2-SHA让密码更安全

    摘要:在当今的数字世界中,密码安全是至关重要的.为了保护用户密码免受未经授权的访问和破解,Password-Based Key Derivation Function 2 (PBKDF2)算法成为了一 ...

  5. golang之UrlEncode编码/UrlDecode解码

    为什么需要编码和解码 1.是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的: 2.因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urle ...

  6. Oracle数据库下的DDL、DML、DQL、TCL、DCL

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  7. Linux(五):Linux的文档编辑器Vi

    什么是Vi 我们使用Windows的时候,记录或者存储信息,一般都是txt文本编辑,记事本,word文档等等,进行编程的时候,使用idea,eclipse等等,但是在Linux中,就比较直接了,不论你 ...

  8. 【译】使用 GitHub Copilot 作为你的编码 GPS

    GitHub Copilot 是一个改变游戏规则的人工智能助手,可以彻底改变您在 Visual Studio 中的编码流程.在我们的视频系列中,Bruno  Capuano 探讨了这个智能编码伙伴如何 ...

  9. JDK源码阅读-------自学笔记(八)(数组演示冒泡排序和二分查找)

    冒泡排序 算法 比较相邻的元素.如果第一个比第二个大,就交换他们两个 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数 针对所有的元素重复以上的步骤,除 ...

  10. 经验分享:春招零Offer,5月份还有机会吗?

    先说答案:5 月份依然有拿到 Offer 的机会. 5月份春招结束了吗? 对于应届大学生来说(也就是今年暑假毕业的学生),5 月中旬春招就陆续结束了,但是 5 月份会有很多补录的机会. 对于非应届的大 ...