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