zoukankan      html  css  js  c++  java
  • 入门基础之——flash

    不得不说韦老师的课程还是很需要时间去消化。今天改变了学习策略,遇到不会的知识点,先查资料。

    以前在单片机编程中,都只是知道代码存在flash中,而一听韦老师的课程,就是nand flash启动或者nor flash启动,所以找了一些这方面的参考资料弥补自己知识的空白。

    快闪存储器(英语:flash memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存卡U盘。闪存是一种特殊的、以宏块抹写的EEPROM

    闪存的成本远较可以字节为单位写入的EEPROM来的低,也因此成为非易失性固态存储最重要也最广为采纳的技术。像是PDA、笔记本电脑、数字随身听、数码相机与手机上均可见到闪存。此外,闪存在游戏主机上的采用也日渐增加,藉以取代存储游戏数据用的EEPROM或带有电池的SRAM

    闪存是非易失性的存储器。这表示单就保存数据而言,它是不需要消耗电力的。与硬盘相比,闪存也有更佳的动态抗震性。这些特性正是闪存被移动设备广泛采用的原因。闪存还有一项特性:当它被制成储存卡时非常可靠──即使浸在水中也足以抵抗高压与极端的温度。闪存的写入速度往往明显慢于读取速度。

    虽然闪存在技术上属于EEPROM,但是“EEPROM”这个字眼通常特指非快闪式、以小区块为清除单位的EEPROM。它们典型的清除单位是字节。闪存最常见的封装方式是TSOP48和BGA,在逻辑接口上的标准则由于厂商阵营而区分为两种:ONFI和Toggle。手机上的闪存常常以eMMC的方式存在。

    历史

    闪存(无论是NOR型或NAND型)是舛冈富士雄博士在1984年于东芝公司工作时发明。据东芝表示闪存之所以命名为“Flash”是由舛冈博士的同事有泉正二建议,因为这种存储器的抹除流程让他想起了相机的闪光灯。舛冈博士在1984年的加州旧金山IEEE国际电子组件会议International Electron Devices Meeting, IEDM)上发表了这项发明。Intel看到了这项发明的巨大潜力,并于1988年推出第一款商业性的NOR Flash芯片。

    NOR Flash需要很长的时间进行抹写,但是它提供完整的定址与数据总线,并允许随机存取存储器上的任何区域,这使的它非常适合取代老式的ROM芯片。当时ROM芯片主要用来存储几乎不需更新的代码,例如电脑的BIOS机顶盒Set-top Box)的固件NOR Flash可以忍受一万到一百万次抹写循环,它同时也是早期的可移除式快闪存储媒体的基础。CompactFlash本来便是以NOR Flash为基础的,虽然它之后跳槽到成本较低的NAND Flash。

    东芝在1989年的国际固态电路研讨会ISSCC)上发表了NAND Flash。NAND Flash具有较快的抹写时间,而且每个存储单元的面积也较小,这让NAND Flash相较于NOR Flash具有较高的存储密度与较低的每比特成本。同时它的可抹除次数也高出NOR Flash十倍。然而NAND Flash的I/O接口并没有随机存取外部地址总线,它必须以区块性的方式进行读取,NAND Flash典型的区块大小是数百至数千比特。

    因为多数微处理器与微控制器要求字节档次的随机存取,所以NAND Flash不适合取代那些用以装载程序的ROM。从这样的角度看来,NAND Flash比较像光盘硬盘这类的次级存储设备。NAND Flash非常适合用于储存卡之类的大量存储设备。第一款创建在NAND Flash基础上的可移除式存储媒体是SmartMedia,此后许多存储媒体也跟着采用NAND Flash,包括MultiMediaCardSecure DigitalMemory StickxD卡。

     

    Flash编程原理都是只能将1默认为1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.

    闪存将数据存储在由浮闸晶体管组成的记忆单元数组内,在单阶存储单元(Single-level cell, SLC)设备中,每个单元只存储1比特的信息。而多阶存储单元(Multi-level cell, MLC)设备则利用多种电荷值的控制让每个单元可以存储1比特以上的数据。

    单层 Flash单元在默认状态代表二进制码中的“1”值

    闪存的一种限制在于即使它可以单一字节的方式读或写入,但是抹除一定是一整个区块。一般来说都是设置某一区中的所有比特为“1”,刚开始区块内的所有部分都可以写入,然而当有任何一个比特被设为“0”时,就只能借由清除整个区块来恢复“1”的状态即只能把1写0,不能把0写1,要把0写1只能通过檫除flash置1,然后从新写0)。

    NOR Flash

    NOR Flash读取数据的方式与从RAM读取数据相近,只要提供数据的地址,数据总线就可以正确的导出数据。基于以上原因,多数微处理器可以将NOR Flash当作原地运行Execute in place, XIP)存储器使用,这意味着存储在NOR Flash上的程序不需复制到RAM就可以直接运行。由于NOR Flash没有原生坏区管理,所以一旦存储区块发生毁损,软件或驱动程序必须接手这个问题,否则可能会导致设备发生异常。在解锁、抹除或写入NOR Flash区块时,特殊的指令会先写入已绘测的记忆区的第一页(Page)。接着快闪记忆芯片会提供可用的指令清单给实体驱动程序,而这些指令是由通用闪存接口Common Flash memory Interface, CFI)所界定的。与用于随机存取的ROM不同,NOR Flash也可以用在存储设备上;不过与NAND Flash相比,NOR Flash的写入速度一般来说会慢很多。

    NAND Flash

    东芝在1989年发表了NAND Flash架构,这种存储器的访问方式类似硬盘、储存卡之类的区块性存储设备,每个区块由数个页所构成。一般来说这些页的大小为512[6]2048或4096字节。在各个页之间彼此的连接区域会有几个字节(一般而言是数据大小的1/32),这些空间用于存储错误修正码校验和。以下是一些典型的区块大小:

    • 32个512+ 16位组的页为1个大小是16KB的区块
    • 64个2048+ 64位组的页为1个大小是128KB的区块
    • 64个4096+128位组的页为1个大小是256KB的区块
    • 128个4096+128位组的页为1个大小是512KB的区块

    读取与写入动作可以以“页”为单位偏移量进行,抹除动作只能以“区块”为单位偏移量进行。NAND Flash还有一项限制就是区块内的数据只能序列性的写入。操作次数(Number of Operations, NOPs)则代表“页”可以被写入的次数。NAND Flash也需要由设备驱动程序软件或分离的控制器芯片来进行坏区管理,例如SD卡内部便包含实行坏区管理与耗损平衡的电路。当一个逻辑区被高级软件访问时,逻辑区对应到实体区的工作则由驱动程序或控制器进行

     

     

     

  • 相关阅读:
    Vue学习-Day1
    Shell脚本学习
    Linux基础
    C# int.Parse()、int.TryParse()与Convert.ToInt32()的区别
    windows下跑python flask,环境配置
    linq性能剖析
    servicestack操作redis
    程序员福利各大平台免费接口非常适用
    ASP.NET下跨应用共享Session和使用Redis进行Session托管简介
    Web Farm和Web Garden的区别
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/6743844.html
Copyright © 2011-2022 走看看