存储器分为两大类: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. SAP UI5 官方教程学习记录

    最近有闲跟着官方的Get Started教程学习了UI5,记录一下自己学习中遇到的几个问题. 本文链接:https://www.cnblogs.com/hhelibeb/p/17835722.html ...

  2. cesium教程3-加载3dtile模型,并调整位置

    直接上示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. 解析 ABP vNext 依赖注入实现【属性注入】的原理

    前言 这几天闲来没事看看ABP vNext的文档和源码,关于关于依赖注入(属性注入)这块儿产生了兴趣. 我们都知道.Volo.ABP 依赖注入容器使用了第三方组件Autofac实现的.有三种注入方式, ...

  4. C 编程异常 — implicit declaration of function 'free' is invalid in C99

    环境:MAC pro 问题:在编译程序的触发异常. main.c:17:9: warning: implicit declaration of function 'free' is invalid i ...

  5. AI 一键生成高清短视频,视频 UP 主们卷起来...

    现在短视频越来越火,据统计,2023年全球短视频用户数量已达 10 亿,预计到2027年将突破 24 亿.对于产品展示和用户营销来说,短视频已经成为重要阵地,不管你喜不喜欢它,你都得面对它,学会使用它 ...

  6. 新手【BUUCTF】逆向writeup()

    0x00前言 在大三开始入门逆向,已学完小甲鱼解密篇,刚开始看<加密与解密>,现在沉浸在快 乐的刷题学习中..... buuctf_reverse地址 0x01刚接触的逆向题 revers ...

  7. 如何部署ASP.NET Core到Linux服务器

    如何部署ASP.NET Core 到Linux服务器 我们开发的最终目的,是将开发后的东西发布网络上,以便自己及其他人使用. 本篇博客介绍如果在 linux 上部署 ASP.NET Core应用,使用 ...

  8. dotnet 命令行工具解决方案 PomeloCli

    PomeloCli 是什么 中文版 English version 我们已经有相当多的命令行工具实现或解析类库,PomeloCli 并不是替代版本,它基于 Nate McMaster 的杰出工作 Co ...

  9. Swoole 源码分析之 Coroutine 协程模块

    首发原文链接:Swoole 源码分析之 Coroutine 协程模块 大家好,我是码农先森. 引言 协程又称轻量级线程,但与线程不同的是:协程是用户级线程,不需要操作系统参与.由用户显式控制,可以在需 ...

  10. golang nsq 同一个topic有多个channel,同时项目又互相引用时出现的问题

    p.p1 { margin: 0; font: 12px ".PingFang SC" } span.s1 { font: 12px "Helvetica Neue&qu ...