资源描述
,单击此处编辑母版标题样式,2012/9/21,#,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,eMMC,存储简介,只是简介 囧,沙,贝,2012.9.21,eMMC,(Embedded,Multi Media Card,),嵌入式多媒体卡,MMC,协会所订立的内嵌式存储器标准,规格,主要应用于智能手机和移动嵌入式产品,什么是,eMMC,1,、,eMMC,拥有存储以及取代,Nor Flash,的开机功能,开机速度比传统的,MCP,要快几倍,2,、,eMMC,可以很好的解决对,MLC,和,TLC,的管理,,ECC,除错机制、区块管理、平均抹写储存区块技术、指令管理、低功耗管理等。,3,、厂商不用再为不同的,NAND Flash,重新设计规格,、,不用处理,NAND Flash,相容性和管理问题、缩短新品上市周期、研发成本,eMMC,的优点,eMMC,结构由一个嵌入式存储解决方案,组成:,标准,MMC,封装接口,主控制器,(,控制芯片,),快,闪存储器,设备,(,NAND Flash,芯片,),这三部分封装在一个,JEDEC(,固态技术协会,),标准的,BGA,上。,接口,速度高达每秒,52MB,,,eMMC,具有快速、可升级的性能。同时其接口电压可以是,1.8v,或者是,3.3v,。,eMMC,的结构,看图说话,Core Regulator,核心稳压器,eMMC,的结构,Memory,NAND Flash,存储介质,控制信号,数据总线,MMC I/O Block,NAND I/O Block,Core Regulator,(required for 3.3v),Core Logic Block,VCC,VCCQ,RESET,VDDi,CLK,CMD,DAT7:0,Creg,1.,I/O0 I/O7,:用于输入,地址/数据/命令,输出数据,,有可能,16,位,但高,8,位只用于数据,2.,CLE,:,Command Latch Enable,命令锁存使能,在输入命令之前,要先在模式寄存器中,设置CLE使能,3.,ALE,:,Address Latch Enable,地址锁存使能,在输入地址之前,要先在模式寄存器中,设置ALE使能,4.,CE#,:,Chip Enable,芯片使能,在操作Nand Flash之前,要先选中此芯片,才能操作,5.,RE#,:,Read Enable,读使能,在读取数据之前,要先使CE,#,有效。,6.,WE#,:,Write Enable,写使能,在写取数据之前,要先使WE,#,有效。,7.,WP#,:,Write Protect,写保护,8.,R/B#,:,Ready/Busy Output,就绪/忙,主要用于在发送完编程/擦除命令后,检测这些操作是否完成,:,忙,表示编程/擦除操作仍在进行中,就绪表示操作完成.,9.,Vcc,:,Power,电源,10.,Vss,:,Ground,接地,11.,N.C,:,Non-Connection,未定义,未连接,。,小常识,在数据手册中,你常会看到,对于一个引脚定义,有些字母上面带一横杠的,那是说明此引脚/信号是低电平有效,比如你上面看到的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,个字节中的信息如下,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,,这与硬盘正好相反,。,Nor Flash,则反过来,电流从浮置栅极到源极,称为,热电子注入,NAND,存储单元硬件原理,1,、,NAND,的闪存单元比,NOR,要小,因为,NOR,的每个单元都需要独立的金属触点。,NAND,的与硬盘驱动器类似,基于扇区,(,页,Page),也存在坏的扇区,需要,ECC,纠错,2,、因为单元小,所以,NAND,的写,(,编程,),和擦除的速率快;而,NOR,的优点是具有随机存取和对字节执行写操作的能力,,NAND,的,则,比较慢。,Nand,和,Nor,物理上的区别,块,(Block),是擦除操作的最小,单位,(,相当于硬盘的扇区,),一,个nand flash由很多个块(Block)组成,,块,的大小一般,是,1,28,KB,,256,KB,,512KB,页,(Page),是编程操作的最小,单位,每个,块里面又包含了很多页(page),。页,的,大小,256B,、,512B,、,2KB,、,4KB,每一个页,对应还有一块区域,叫做空闲区域(spare area)/冗余区域(redundant area),而Linux系统中,一般叫做,OOB,(Out Of Band,),。,这个,区域,是最初基于Nand Flash的硬件特性:数据在读写时候相对容易错误,所以为了保证数据的正确性,必须要有对应的检测和纠错机制,此机制被叫做EDC(Error Detection Code)/ECC(Error Code Correction,或者Error Checking and Correcting),所以设计了多余的区域,用于放置数据的校验值,。,OOB,的第,6,个,Byte,标记为非,0 xff,时,表示坏块,ECC,一般每,256,字节生成,3,字节,ECC,校验数据。,(6bit,列校验,+16bit,行校验,+2bit,保留,),页的编程只能顺序进行:,Page1-Page2-Page3,Nand Flash,物理存储单元的阵列组织结构,Nand Flash,物理存储单元的阵列组织结构,以,2Gb(128MB)NAND,器件为例,它由,2048,个,Block,组成,,1Block=64 Page(128KB),1Page=2048Bytes+64Bytes,(,见下图,),即,128MB=2048(Block)*64(Page)*2048Bytes,页寄存器(Page Register):由于Nand Flash读取和编程操作来说,一般最小单位是页,所以,nand flash在硬件设计时候,就考虑到这一特性,对于每一,片,,都有一个对应的区域,专门用于存放,将要写入到物理存储单元中去的或者刚从存储单元中读取出来 的,一页的数据,这个数据缓存区,本质上就是一个buffer,但是只是名字叫法不同,datasheet里面叫做Page Register,此处翻译为页寄存器,实际理解为页缓存,更为恰当些,。,Nand Flash中的特殊硬件,结构,以三星的芯片为例,:,1,、配置寄存器,(NFCONF)0 x4E000000,2,、命令寄存器,(NFCMD)0 x4E000004,3,、地址寄存器,(NFADDR)0 x4E000008,4,、数据寄存器,(NFDATA)0 x4E00000C,5,、,状态,寄存器,(NFSTAT)0 x4E000010,6,、,ECC,校验寄存器,(NFECC)0 x4E000014,Nand Flash中的特殊硬件结构,Function,1,st,Cycle,地址周期数,2,nd,Cycle,忙碌时可用,Read,00h,5,30h,Read for Copy Back,00h,5,35h,Read ID,90h,1,-,Reset,FFh,-,-,o,Page Program,80h,5,10h,Two-Plane Page Program,80h-11h,81h-10h,Copy-Back,Program,85h,5,10h,Two-Plane,Copy-Back Program,85h-11h,81h-10h,Block Erase,60h,3,D0h,Two-Plane,Block Erase,60h-60h,D0h,Random Data,Input,85h,2,-,Random Data Output,05h,2,E0h,Read Status,70h,-,0,Read EDC Status,7Bh,-,0,Chip1 Status,F1h,-,0,Chip2 Status,F2h,-,0,Nand Flash,的命令合集,(,某款芯片,),Nand flash的写操作叫做,编程,(,Program,),,一般以页为,单位的,。,写操作只能在空页面或者已经被擦除的页面进行,(,全,0 xFF),擦除的步骤,(,以块为单位,),1,、发送,擦除,设置,命令,0 x60,2,、发送要擦除的块地址,3,、发送开始擦除命令,0 xD0,写操作的步骤,(,以页为单位,),1,、发送写命令,0 x80,2,、发送要编程的页地址和数据,(1,个,Page),3,、发送开始写命令,0 x10,NAND Flash,的编程操作,(,写,),步骤同写操作,1,、发送写命令,0 x00,2,、发送,要读取的,页,地址,3,、发送开始写,命令,0 x30,4,、查看寄存器状态,,R/B,#,为,ready(1),时,可以从缓存中取数据,时序图,Nand Flash,的读操作,以K9K8G08U0A为,例,此nand flash,一共有8192个块,每个块内有64页,每个页是2K+64,Bytes,假设我们,要,访问第7000,个块中的第25页中的1208,字节的地址,物理地址=,块,号,块,大小,+,页,号,页,大小,+,页内地址,=7000,128K+25,2K+1208=0 x36B0CCB8(917556408,),计算地址的时候计算,OOB,的大小吗?,不计算,如何计算,地址,1,、地址周期的说明,(,不同的,Flash,可能会有不同,),0 x36B0CCB8=,0011,0110,1011,0000,1100,1100,1011,1000,地址,:,1,、,A7A0,:,1011 1000,2,、,A11A8,:,0000,1,100 (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,:块地址,如何传输地址,Cycle,I/O7,I/O6,I/O5,I/O4,I/O3,I/O2,I/O1,I/O0,First,A7,A6,A5,A4,A3,A2,A1,A0,Column,Second,LOW,LOW,LOW,LOW,A11,A10,A9,A8,Column,Third,A
展开阅读全文