eMMC存储器基本原理简介_第1页
eMMC存储器基本原理简介_第2页
eMMC存储器基本原理简介_第3页
eMMC存储器基本原理简介_第4页
eMMC存储器基本原理简介_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、eMMC存储器基本原理简介 eMMC (Embedded Multi Media Card) 嵌入式多媒体卡 MMC协会所订立的内嵌式存储器标准规格 主要应用于智能手机和移动嵌入式产品什么是eMMC 1、eMMC拥有存储以及取代Nor Flash的开机功能,开机速度比传统的MCP要快几倍 2、eMMC可以很好的解决对MLC和TLC的管理,ECC除错机制、区块管理、平均抹写储存区块技术、指令管理、低功耗管理等。 3、厂商不用再为不同的NAND Flash重新设计规格、不用处理NAND Flash相容性和管理问题、缩短新品上市周期、研发成本eMMC的优点 eMMC 结构由一个嵌入式存储解决方案组成

2、: 标准MMC封装接口 主控制器 (控制芯片) 快闪存储器设备(NAND Flash芯片 )这三部分封装在一个JEDEC(固态技术协会)标准的BGA上。 接口速度高达每秒52MB,eMMC具有快速、可升级的性能。同时其接口电压可以是1.8v 或者是3.3v。eMMC的结构 看图说话 Core Regulator 核心稳压器eMMC的结构MemoryNAND Flash存储介质控制信号数据总线MMC I/O BlockNAND I/O BlockCore Regulator(required for 3.3v)Core Logic BlockVCCVCCQRESETVDDiCLKCMDDAT7:

3、0Creg1. I/O0 I/O7I/O0 I/O7:用于输入地址/数据/命令, 输出数据,有可能16位,但高8位只用于数据2. CLECLE: Command Latch Enable, 命令锁存使能, 在输入命令之前, 要先在模式寄存器中, 设置CLE使能3. ALEALE: Address Latch Enable, 地址锁存使能, 在输入地址之前, 要先在模式寄存器中, 设置ALE使能4. CE#CE#: Chip Enable, 芯片使能, 在操作Nand Flash之前, 要先选中此芯片, 才能操作5. RE#RE#: Read Enable, 读使能, 在读取数据之前, 要先使C

4、E#有效。6. WE#WE#: Write Enable, 写使能, 在写取数据之前, 要先使WE#有效。7. WP#WP#: Write Protect, 写保护8. R/B#R/B#: Ready/Busy Output,就绪/忙,主要用于在发送完编程/擦除命令后, 检测这些操作是否完成: 忙, 表示编程/擦除操作仍在进行中, 就绪表示操作完成.9. VccVcc: Power, 电源10. VssVss: Ground, 接地11. N.CN.C: Non-Connection, 未定义, 未连接。 小常识小常识 在数据手册中, 你常会看到, 对于一个引脚定义, 有些字母上面带一横杠的,

5、 那是说明此引脚/信号是低电平有效, 比如你上面看到的RE头上有个横线, 就是说明, 此RE是低电平有效, 此外, 为了书写方便, 在字母后面加“#”, 也是表示低电平有效,比如上面写的CE#;如果字母头上啥都没有,就是默认的高电平有效,比如上面的CLE,就是高电平有效。Nand Flash引脚(Pin)的说明 1、SLC 和 MLC SLC每个存储单元只存储一个Bit数据 MLC每个存储单元可以存储多个Bit数据 根据电荷多少设定阀值,比如4V,可以用1234V分别表示数值 2、如何识别SLC和MLC 通过读取chip ID,chip ID 最少4个字节,可以更多 其中第3个字节中的信息如下

6、 Bit1:0 内部芯片数 1、2、4、8 Bit3:2 电平种类数 2、4、8、16 Bit5:4 可同时编程页1、2、4、8 Bit6 多芯片交替编程是否支持 0:不支持 Bit7 高速缓存编程(cache Program)是否支持 0:不支持Nand 的存储单元 Nand Flash 的核心部件是 Floating Gate FET(浮置栅场效应管) NAND Flash 的擦写均是基于隧道效应:电子从源极穿过浮置栅极与硅基层之间的绝缘层,对浮置栅极充电(写数据 0)或放电(擦数据 1),Nand Flash 擦除以block为单位,写数据以page为单位。 清除Flash的数据是写1,

7、这与硬盘正好相反。 Nor Flash 则反过来,电流从浮置栅极到源极,称为热电子注入NAND 存储单元硬件原理 1、NAND的闪存单元比NOR要小 因为NOR的每个单元都需要独立的金属触点。 NAND的与硬盘驱动器类似,基于扇区(页Page),也存在坏的扇区,需要ECC纠错 2、因为单元小,所以NAND的写(编程)和擦除的速率快;而NOR的优点是具有随机存取和对字节执行写操作的能力,NAND的则比较慢。Nand 和 Nor 物理上的区别 块(Block)是擦除操作的最小单位(相当于硬盘的扇区) 一个nand flash由很多个块(Block)组成,块的大小一般是128KB,256KB,512

8、KB 页(Page)是编程操作的最小单位 每个块里面又包含了很多页(page)。页的大小256B、512B、2KB、4KB 每一个页,对应还有一块区域,叫做空闲区域(spare area)/冗余区域(redundant area),而Linux系统中,一般叫做OOBOOB(Out Of Band)。 这个区域,是最初基于Nand Flash的硬件特性:数据在读写时候相对容易错误,所以为了保证数据的正确性,必须要有对应的检测和纠错机制,此机制被叫做EDC(Error Detection Code)/ECC(Error Code Correction,或者Error Checking and Co

9、rrecting),所以设计了多余的区域,用于放置数据的校验值。 OOB的第6个Byte标记为非0 xff时,表示坏块 ECC一般每256字节生成3字节ECC校验数据。(6bit列校验+16bit行校验+2bit保留) 页的编程只能顺序进行:Page1-Page2-Page3Nand Flash物理存储单元的阵列组织结构Nand Flash物理存储单元的阵列组织结构 以2Gb (128MB)NAND器件为例,它由2048个Block组成, 1Block = 64 Page(128KB) 1Page = 2048Bytes+64Bytes(见下图) 即128MB = 2048(Block)*64

10、(Page)*2048Bytes 页寄存器(Page Register):由于Nand Flash读取和编程操作来说,一般最小单位是页,所以,nand flash在硬件设计时候,就考虑到这一特性,对于每一片,都有一个对应的区域,专门用于存放,将要写入到物理存储单元中去的或者刚从存储单元中读取出来 的,一页的数据,这个数据缓存区,本质上就是一个buffer,但是只是名字叫法不同,datasheet里面叫做Page Register,此处翻译为页寄存器,实际理解为页缓存,更为恰当些。Nand Flash中的特殊硬件结构 以三星的芯片为例: 1、配置寄存器(NFCONF)0 x4E000000 2、

11、命令寄存器(NFCMD)0 x4E000004 3、地址寄存器(NFADDR)0 x4E000008 4、数据寄存器(NFDATA)0 x4E00000C 5、状态寄存器(NFSTAT)0 x4E000010 6、ECC校验寄存器(NFECC)0 x4E000014Nand Flash中的特殊硬件结构FunctionFunction1 1st st Cycle Cycle地址周期数地址周期数2 2ndnd Cycle Cycle忙碌时可用忙碌时可用Read00h530hRead for Copy Back00h535hRead ID 90h1-ResetFFh-oPage Program80h

12、510hTwo-Plane Page Program80h-11h81h-10hCopy-Back Program85h510hTwo-Plane Copy-Back Program85h-11h81h-10hBlock Erase60h3D0hTwo-Plane Block Erase60h-60hD0hRandom Data Input85h2-Random Data Output05h2E0hRead Status70h-0Read EDC Status7Bh-0Chip1 StatusF1h-0Chip2 StatusF2h-0Nand Flash 的命令合集(某款芯片) Nand f

13、lash的写操作叫做编程(Program),一般以页为单位的。 写操作只能在空页面或者已经被擦除的页面进行(全0 xFF) 擦除的步骤(以块为单位) 1、发送擦除设置命令 0 x60 2、发送要擦除的块地址 3、发送开始擦除命令 0 xD0 写操作的步骤(以页为单位) 1、发送写命令 0 x80 2、发送要编程的页地址和数据(1个Page) 3、发送开始写命令 0 x10NAND Flash 的编程操作(写) 步骤同写操作 1、发送写命令 0 x00 2、发送要读取的页地址 3、发送开始写命令 0 x30 4、查看寄存器状态,R/B#为ready(1)时,可以从缓存中取数据 时序图Nand F

14、lash 的读操作 以K9K8G08U0A为例 此nand flash,一共有8192个块,每个块内有64页,每个页是2K+64 Bytes 假设我们要访问第7000个块中的第25页中的1208字节的地址 物理地址=块号块大小+页号页大小+页内地址=7000128K+252K+1208=0 x36B0CCB8 (917556408) 计算地址的时候计算OOB的大小吗?不计算如何计算地址 1、地址周期的说明(不同的Flash可能会有不同) 0 x36B0CCB8= 0011 0110 1011 0000 1100 1100 1011 1000 地址: 1、A7A0 :1011 1000 2、A1

15、1A8:0000 1100 (A10A0:100 1011 1000:1208 页地址) 3、A19A12:0000 1100 (A16A11:011001:25页 ) 4、A27A20:0110 1011 5、A29A28:0000 0011(A29A17:11 0110 1011 000:7000Block) A10A0:页内地址 02047 ;A11用于表示20482112 OOB A16A11:页地址;A29A17:块地址 如何传输地址CycleCycleI/O7I/O7I/O6I/O6I/O5I/O5I/O4I/O4I/O3I/O3I/O2I/O2I/O1I/O1I/O0I/O0Fi

16、rstA7A6A5A4A3A2A1A0ColumnSecondLOWLOWLOWLOWA11A10A9A8ColumnThirdA19A18A17A16A15A14A13A12RowFourthA27A26A25A24A23A22A21A20RowfifthLOWLOWLOWLOWLOWLOWA29A28Row 1、自从NAND结构被设计以来,标准规范中是允许存在坏块的,只要坏块比例小于总容量的2%就是允许的。 2、坏块列表是被要求的,因为NAND Flash只能执行有限次数的读和擦除次数(10w100w),所有的Flash存储器最终都会被磨损且不再能使用,坏块列表用来跟踪记录坏块。 3、坏块

17、分为两种: 1)生产过程中产生的 一般在该块的前两个Page的滴517字节处用非FF来标识(每页512字节) 2)使用过程中产生的 如果一个块在擦除整块或写一个页失败时,会被标志为坏块,并且以后不再访问 如果擦除了坏块,即标识位被改为0 xff,那么在无法单独对块测试的情况下是很难重新标识的,所以坏块表(invalid block table)是很重要的Invalid Block(坏块)的管理 4、嵌入式系统中对坏块的处理方式 1)Skip Block Method(跳过坏块模式) 在写入之前读取所有坏块的地址,然后写入数据,当目标地址是坏块地址时,跳过坏块,写入下一个好的块中,继续保留坏块中

18、的标识信息。所以在程序导入执行前,要先读取OOB中的坏块信息,建立列表。Invalid Block(坏块)的管理 4、嵌入式系统中对坏块的处理方式 2)Reserved Block Area Method(保留块区域方式) 这种烧录算法,首先决定哪些块 用来做UBA(User Block Area),这些 块被RBA map table记录,并保留。 接下来读取OOB建立一个map到RBA RBA第一第二块被用于存储列表。 Map中包含了哪些保留块被用来替代 坏块Invalid Block(坏块)的管理 1、一般的嵌入式系统会使用NAND Flash来存储文件(file)、启动代码(boot

19、code)、OS代码或简单的数据文件,这就需要像管理文件系统一样管理NAND FLASH。 功能包括 格式化、碎片收集、磁盘整理等等。 目前比较广泛的文件系统有fat、jffs2、yaffs2、ext4等等文件系统 Yaffs文件系统(Yet Another Flash File System) Yaffs文件系统是一个开源的专为NAND Flash设计的文件系统,具有很好的可移植性,可以在Linux、WinCE中运行。 Yaffs 对小页面(512+16Byte)支持很好,yaffs2对大页面支持较好(2K+64Byte) Yaffs 对文件系统上的所有内容都当做文件处理,每个文件都有一个页

20、专门存放文件头,文件头包含了文件的模式、所有者ID、组ID、长度、文件名、Parent Object ID等,因为页的大小有限,所以对这些都有长度限制。一般都存放在OOB中文件系统字节字节内容内容0511数据区域512515YAFFS TAG516坏块标志位517数据状态518、519YAFFS TAG520522后512字节的ECC校验结果 1、硬盘的硬盘的组成组成 一般说来,无论哪种硬盘,都是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部份组成。 所有的盘片都固定在一个旋转轴上,这个轴即盘片主轴。 而所有盘片之间是绝对平行的,在每个盘片的存储面上都有一个磁头,

21、磁头与盘片之间的距离比头发 丝的直径还小。 所有的磁头连在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向动作,而盘片以每分钟数千转到上万转的速度在高 速旋转,这样磁头就能对盘片上的指定位置进行数据的读写操作。 中间是起飞区,高速旋转后,磁头悬浮起来, 然后移动到对应的位置读取数据硬盘的结构 2 2、硬盘硬盘的工作的工作原理原理 硬盘在逻辑上被划分为磁道、磁头以及扇区 磁道 由外向内0 xxx 磁头 由上到下0 xxx 扇区 由左到右1xxxx 扇区头存放了3围坐标 磁道、磁头、扇区号硬盘的结构 1、Linux中MTD子系统在系统的硬件驱动程序和文件系统之间提供通用接口

22、,常用的文件系统是yaffs2 2、MTD内存技术设备层次结构 FLASH硬件驱动主要指NAND驱动 Kernel/drivers/mtd/nand/ MTD原始设备实际上是一种块设备,MTD字符设备的读写函数也调用原始设备的操作函数来实现Kernel/drivers/mtd/mtdcore.cMTD原始设备到具体设备之间存在的一些映射关系数据在drivers/mtd/maps/中包括分区信息、I/O映射及特定函数的映射MTD内存技术设备字符设备节点根文件系统MTD字符设备MTD原始设备(块设备)FLASH硬件驱动MTD块设备块设备节点文件系统 1、SD/MMC卡组成的存储系统是许多嵌入设备的

23、主要存储设备,相当于PC机的硬盘,在嵌入设备上的SD/MMC卡控制器通过MMC协议来解析命令控制SD/MMC卡的操作。 2、SD/MMC卡上有一些寄存器来控制卡的状态及读写操作。MMC协议规定的寄存器有: CID寄存器,128位,是卡的鉴别寄存器,存有卡的鉴别信息; CA寄存器,16位,存有卡的本地系统的相对地址,在初始化时由控制器动态指定。 DSR寄存器,16位,是配置卡的驱动程序的寄存器,是可选的。 CSD寄存器,卡特定数据信息描述寄存器,是可选的。 OCR寄存器,操作控制寄存器。SD/MMC卡块设备驱动程序 1、MMC驱动程序的层次结构 通用设备层对于块设备来说,主要负责设备内核对象在s

24、ysfs文件系统中的管理、请求队列管理、及与文件系统的接口; MMC抽象设备层抽出 MMC卡的共有特性,如: MMC卡的请求管理、电源管理等. MMC协议层将MMC操作分解成标准的MMC协议. 具体设备层则负责具体物理设备的寄存器控制等。这种分层结构层次分明,管理有效。MMC驱动程序的层次结构如下图:SD/MMC卡块设备驱动程序通用设备层(device/drivers/resource)MMC描象设备层(mmc_host/mmc_driver/mmc_card)MMC协议层(将MMC操作分解成标准的MMC协议传给设备)具体设备层(用特定的物理设备的mmci_host/amba_driver/amba_device) 1、MMC块设备驱动程序初始化 mmc_blk_init()【drivers/mmc/card/block.c】 它先将MMC块设备名注册到名称数组major_names中,然后,还把驱动程序注册到sysfs文件系统中的总线和设备目录中。一方面,sysfs文件系统中可显示MMC块设备相关信息,另一方面,sysfs文件系统以树形结构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论