zoukankan      html  css  js  c++  java
  • 存储器EEPROM和flash

    一、EEPROM和flash的区别

    存储器分为两大类:ram和rom。
    ram就不讲了,今天主要讨论rom。
    rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了prom,可以自己写入一次,要是写错了,只能换一片,自认倒霉。人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改rom中的内容了。
    EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。

    狭义的EEPROM:
    这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。

    flash:
    flash属于广义的EEPROM,因为它也是电擦除的rom。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。
    flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。
    flash分为nor flashnand flash。nor flash数据线和地址线分开,可以实现ram一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。
    nand flash同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(nandflash按块来擦除,按页来读,norflash没有页)
    由于nandflash引脚上复用,因此读取速度比nor flash慢一点,但是擦除和写入速度比nor flash快很多。nand flash内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的flash都是nand型的。小容量的2~12M的flash多是nor型的。
    使用寿命上,nand flash的擦除次数是nor的数倍。而且nand flash可以标记坏块,从而使软件跳过坏块。nor flash 一旦损坏便无法再用。
    因为nor flash可以进行字节寻址,所以程序可以在nor flash中运行。嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。

    如何避免损坏或者丢失数据?

    丢数据的原因主要有突然掉电、写入不完全、存储器件的使用寿命等。
    软件方面:

    • 调试系统或现场使用时,建议使用软件复位,避免人为频繁的通过断电实现复位操作;有断电必要时,将打印信息添加如“系统加载完成”、“数据保存完毕”等指示说明后操作
    • 软件采取Flash均衡保存算法,高效地调整更改数据时擦除的Flash区域大小;
    • 可将数据先写入内存或者铁电存储器,然后定期的再将数据搬移到大的存储器里面,减少直接断Nand-Flash、EMMC擦写次数;
    • 在程序中加入或者提高电源电量检测的阈值,程序上保证所有电源系统下的芯片在此阈值上均可以正常工作;
    • 读写过程中仔细对坏块表进行维护更新,避免程序写入坏块。读取数据时对ECC校验,确保读取数据无误
      硬件方面:
    • 用法上避免在Flash擦除或写入过程中人为突然掉电;
    • 设计好处理控制核心的电源系统,防止CPU等在启动、运行中,电源系统因瞬时变化引起的纹波等情况;
    • 搭配掉电检测电路,在检测到外部电源掉电的同时,及时迅速关闭文件系统,停止向文件系统内写数据的操作;
    • 添加文件系统电源域UPS电源,乃至整机掉电续航工作电源;
    • 对于使用EEPROM等小容量存储的用户而言,可以考虑使用高可靠性的铁电材料加工制成的铁电非易失性存储器FRAM来替换。FRAM可以像RAM一样快速读写。数据在掉电后可以保存10年,且其读写寿命高达100亿次,比EEPROM和其他非易失性记忆体系统可靠性更高,结构更简单,功耗低等优点。
  • 相关阅读:
    hdu 1290 献给杭电五十周年校庆的礼物 (DP)
    hdu 3123 GCC (数学)
    hdu 1207 汉诺塔II (DP)
    hdu 1267 下沙的沙子有几粒? (DP)
    hdu 1249 三角形 (DP)
    hdu 2132 An easy problem (递推)
    hdu 2139 Calculate the formula (递推)
    hdu 1284 钱币兑换问题 (DP)
    hdu 4151 The Special Number (DP)
    hdu 1143 Tri Tiling (DP)
  • 原文地址:https://www.cnblogs.com/sggggr/p/15763635.html
Copyright © 2011-2022 走看看