eMMC 是 embedded MultiMediaCard 的簡稱。MultiMediaCard,即 MMC, 是一種閃存卡(Flash Memory Card)標準,它定義了 MMC 的架構以及訪問Flash Memory 的接口和協議。而 eMMC 則是對 MMC 的一個拓展,以滿足更高標準的性能、成本、體積、穩定、易用等的需求。
eMMC 的整體架構如下圖片所示:
圖片:eMMC 整體架構
eMMC 內部主要可以分為 Flash Memory、Flash Controller 以及 Host Interface 三大部分。
Flash Memory
Flash Memory 是一種非易失性的存儲器,通常在嵌入式系統中用于存放系統、應用和數據等,類似與 PC 系統中的硬盤。
目前,絕大部分手機和平板等移動設備中所使用的 eMMC 內部的 Flash Memory 都屬于 NAND Flash,關于 NAND Flash 的更多細節可以參考 Flash Memory 章節。
eMMC 在內部對 Flash Memory 劃分了幾個主要區域,如下圖所示:
圖片:eMMC 內部分區
-
BOOT Area Partition 1 & 2
此分區主要是為了支持從 eMMC 啟動系統而設計的。
該分區的數據,在 eMMC 上電后,可以通過很簡單的協議就可以讀取出來。同時,大部分的 SOC 都可以通過 GPIO 或者 FUSE 的配置,讓 ROM 代碼在上電后,將 eMMC BOOT 分區的內容加載到 SOC 內部的 SRAM 中執行。
-
RPMB Partition
RPMB 是 Replay Protected Memory Block 的簡稱,它通過 HMAC SHA-256 和 Write Counter 來保證保存在 RPMB 內部的數據不被非法篡改。
在實際應用中,RPMB 分區通常用來保存安全相關的數據,例如指紋數據、安全支付相關的密鑰等。
-
General Purpose Partition 1~4
此區域則主要用于存儲系統或者用戶數據。General Purpose Partition 在芯片出廠時,通常是不存在的,需要主動進行配置后,才會存在。
-
User Data Area
此區域則主要用于存儲系統和用戶數據。
User Data Area 通常會進行再分區,例如 Android 系統中,通常在此區域分出 boot、system、userdata 等分區。
更多 eMMC 分區相關的細節,請參考 eMMC 分區管理 章節。
Flash Controller
NAND Flash 直接接入 Host 時,Host 端通常需要有 NAND Flash Translation Layer,即 NFTL 或者 NAND Flash 文件系統來做壞塊管理、ECC等的功能。
eMMC 則在其內部集成了 Flash Controller,用于完成擦寫均衡、壞塊管理、ECC校驗等功能。相比于直接將 NAND Flash 接入到 Host 端,eMMC 屏蔽了 NAND Flash 的物理特性,可以減少 Host 端軟件的復雜度,讓 Host 端專注于上層業務,省去對 NAND Flash 進行特殊的處理。同時,eMMC 通過使用 Cache、Memory Array 等技術,在讀寫性能上也比 NAND Flash 要好很多。
圖片:NAND Flash 與 eMMC
Host Interface
eMMC 與 Host 之間的連接如下圖所示:
圖片:eMMC Interface
各個信號的用途如下所示:
CLK
用于同步的時鐘信號
Data Strobe
此信號是從 Device 端輸出的時鐘信號,頻率和 CLK 信號相同,用于同步從 Device 端輸出的數據。該信號在 eMMC 5.0 中引入。
CMD
此信號用于發送 Host 的 command 和 Device 的 response。
DAT0-7
用于傳輸數據的 8 bit 總線。
Host 與 eMMC 之間的通信都是 Host 以一個 Command 開始發起的。針對不同的 Command,Device 會做出不同的響應。
-
NAND
+關注
關注
16文章
1678瀏覽量
136029 -
存儲器
+關注
關注
38文章
7455瀏覽量
163624 -
GPIO
+關注
關注
16文章
1196瀏覽量
51935 -
SRAM控制器
+關注
關注
0文章
11瀏覽量
5891 -
emmc
+關注
關注
7文章
200瀏覽量
52623
發布評論請先 登錄
相關推薦
評論