一、定義及區(qū)別 emmc:全稱為embeded MultiMedia Card,是一種嵌入式非易失性存儲(chǔ)器系統(tǒng),由Nand flash和Nand flash控制器組成,以BGA方式封裝在一款chip上。 Nand flash:一種存儲(chǔ)數(shù)據(jù)介質(zhì);若要讀取其中的數(shù)據(jù),需要外接的主控電路。 Nor flash:也是一種存儲(chǔ)介質(zhì);它的存儲(chǔ)空間一般比較小,但它可以不用初始化,可以在其內(nèi)部運(yùn)行程序,一般在其存儲(chǔ)一些初始化內(nèi)存的固件代碼; 這里主要重點(diǎn)講的是emmc 和Nand flash 之間的區(qū)別,主要區(qū)別如下: (1)、在組成結(jié)構(gòu)上:emmc存儲(chǔ)芯片簡(jiǎn)化了存儲(chǔ)器的設(shè)計(jì),將NAND Flash芯片和控制芯片以MCP技術(shù)封裝在一起,省去零組件耗用電路板的面積,同時(shí)也讓手機(jī)廠商或是計(jì)算機(jī)廠商在設(shè)計(jì)新產(chǎn)品時(shí)的便利性大大提高。而NAND Flash僅僅只是一塊存儲(chǔ)設(shè)備,若要進(jìn)行數(shù)據(jù)傳輸?shù)脑挘荒芡ㄟ^(guò)主機(jī)端的控制器來(lái)進(jìn)行操作,兩者的結(jié)構(gòu)圖如下: (2)、在功能上:eMMC則在其內(nèi)部集成了 Flash Controller,包括了協(xié)議、擦寫(xiě)均衡、壞塊管理、ECC校驗(yàn)、電源管理、時(shí)鐘管理、數(shù)據(jù)存取等功能。相比于直接將NAND Flash接入到Host 端,eMMC屏蔽了 NAND Flash 的物理特性,可以減少 Host 端軟件的復(fù)雜度,讓 Host 端專注于上層業(yè)務(wù),省去對(duì) NAND Flash 進(jìn)行特殊的處理。同時(shí),eMMC通過(guò)使用Cache、Memory Array 等技術(shù),在讀寫(xiě)性能上也比 NAND Flash要好很多。而NAND Flash 是直接接入 Host 端的,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系統(tǒng)來(lái)做壞塊管理、ECC等的功能。另一方面,emmc的讀寫(xiě)速度也比NAND Flash的讀寫(xiě)速度快,emmc的讀寫(xiě)可高達(dá)每秒50MB到100MB以上; 二、emmc的初始化和數(shù)據(jù)通信 emmc與主機(jī)之間通信的結(jié)構(gòu)圖: 其中包括Card Interface(CMD,DATA,CLK)、Memory core interface、總線接口控制(Card Interface Controller)、電源控制、寄存器組。 圖中寄存器組的功能見(jiàn)下表: CID: 卡身份識(shí)別寄存器 128bit,只讀, 廠家號(hào),產(chǎn)品號(hào),串號(hào),生產(chǎn)日期。 RCA: 卡地址寄存器,可寫(xiě)的16bit寄存器,存有Device identification模式由host分配的通信地址,host會(huì)在代碼里面記錄這個(gè)地址,MMC則存入RCA寄存器,默認(rèn)值為0x0001。保留0x0000以用來(lái)將all device設(shè)置為等待CMD7命令狀態(tài)。 CSD: 卡專有數(shù)據(jù)寄存器部分可讀寫(xiě)128bit,卡容量,最大傳輸速率,讀寫(xiě)操作的最大電流、電壓,讀寫(xiě)擦出塊的最大長(zhǎng)度等。 SCR: 卡配置寄存器, 可寫(xiě)的 64bit 是否用Security特性(LINUX不支持),以及數(shù)據(jù)位寬(1bit或4bit)。 OCR: 卡操作電壓寄存器 32位, 只讀,每隔0.1V占1位, 第31位卡上電過(guò)程是否完成。 (5)Device Identification Mode和初始化 MMC通過(guò)發(fā)CMD的方式來(lái)實(shí)現(xiàn)卡的初始化和數(shù)據(jù)通信 Device Identification Mode包括3個(gè)階段Idle State、Ready State、Identification State。 Idle State下,eMMC Device會(huì)進(jìn)行內(nèi)部初始化,Host需要持續(xù)發(fā)送CMD1命令,查詢eMMC Device是否已經(jīng)完成初始化,同時(shí)進(jìn)行工作電壓和尋址模式協(xié)商:eMMC Device 在接收到這些信息后,會(huì)將OCR的內(nèi)容(MMC出廠就燒錄在里面的卡的操作電壓值)通過(guò) Response 返回給 Host,其中包含了 eMMC Device 是否完成初始化的標(biāo)志位、設(shè)備工作電壓范圍 Voltage Range 和存儲(chǔ)訪問(wèn)模式 Memory Access Mode 信息。 如果 eMMC Devcie 和 Host 所支持的工作電壓和尋址模式不匹配,那么 eMMC Device 會(huì)進(jìn)入Inactive State。 Ready State,MMC完成初始化后,就會(huì)進(jìn)入該階段。 在該 State 下,Host 會(huì)發(fā)送 CMD2命令,獲取eMMC Device 的CID。 CID,即 Device identification number,用于標(biāo)識(shí)一個(gè) eMMC Device。它包含了 eMMC Device 的制造商、OEM、設(shè)備名稱、設(shè)備序列號(hào)、生產(chǎn)年份等信息,每一個(gè) eMMC Device 的 CID 都是唯一的,不會(huì)與其他的 eMMC Device 完全相同。 eMMC Device 接收到CMD2后,會(huì)將 127 Bits 的CID的內(nèi)容通過(guò) Response返回給 Host。 Identification State,發(fā)送完 CID 后,eMMC Device就會(huì)進(jìn)入該階段。 Host 會(huì)發(fā)送參數(shù)包含 16 Bits RCA 的CMD3命令,為eMMC Device 分配 RCA。設(shè)定完 RCA 后,eMMC Devcie 就完成了 Devcie Identification,進(jìn)入 Data Transfer Mode。 注:emmc初始化和數(shù)據(jù)通信的過(guò)程,有點(diǎn)類似USB協(xié)議,USB控制器去發(fā)送請(qǐng)求給USB設(shè)備,以IN包和OUT包的形式去建立與USB設(shè)備之間的通信,默認(rèn)狀態(tài)下,USB設(shè)備也是0地址的,與控制器分配設(shè)備地址。(感興趣的可以看一下USB2.0的協(xié)議,主要是第8和9章內(nèi)容) 三、eMMC工作電壓和上電過(guò)程 根據(jù)工作電壓的不同,MMC卡可以分為兩類: High Voltage MultiMediaCard,工作電壓為3.3V左右。 Dual Voltage MultiMediaCard,工作電壓有兩種,1.70V~1.95V和2.7V~3.6V,CPU可以根據(jù)需要切換 我所使用的eMMC實(shí)測(cè)工作電壓VCC為2.80V~2.96V,VCCQ為1.70V~1.82V。 其中VCC為MMC Controller/Flash Controller的供電電壓,VCCQ為Memory和Controller之間I/O的供電。 上電初始化階段MMC時(shí)鐘頻率為400KHz,需要等電壓調(diào)整到它要求的VCC時(shí)(host去獲取OCR中記錄的電壓值,上面有說(shuō)),MMC時(shí)鐘才會(huì)調(diào)整到更高的正常工作頻率。 注:本博客參考于xjw1874 的https://blog.csdn.net/xjw1874/article/details/81505967?utm_source=copy |
|
來(lái)自: Long_龍1993 > 《UFS》