目錄
1 eMMC簡介
通俗點說,eMMC就是一個存儲芯片,就像SD卡一樣,用於存取數據。從普通開發者角度看,只要遵循eMMC協議,就可以對eMMC芯片進行讀寫操作。(拓展:SD卡、UFS芯片、eMMC芯片、U盤都是類似的功能,從使用角度看,只是接口不同、通信協議不同,本教程只涉及目前最新的eMMC芯片,遵循eMMC5.1協議。)
1.1eMMC的外觀圖與引腳說明圖
下圖(圖一)是網上搜索到的一款國產eMMC芯片(eMMC採用BGA封裝):
圖一 eMMC芯片外觀而關於其引腳定義,筆者也在網上找到一個圖(圖二):
圖二 eMMC引腳定義圖
其中,RFU 引腳暫無作用(RFU是 “Reserved for Future Use” 的縮寫)
而關於其他引腳的作用,見下圖圖三(具體作用後續會詳細描述):
注:圖三出自eMMC5.1協議文檔 第5.3章 (e•MMC Device Overview)
圖三 eMMC引腳說明
特別說明的是DS引腳,也就是Data Strobe引腳,原文檔描述爲:
1.2eMMC的定義
eMMC ,即:Embedded Multi Media Card 的縮寫。由一個嵌入式存儲解決方案組成,帶有MMC接口、快閃存儲器設備及主控制器。所有都在一個小型的BGA 封裝。接口速度最高可達每秒400MBytes,其接口電壓可以是1.8V或者是3.3V。(一般VCCQ 1.8V,VCC 3.3V)
1.3eMMC的基礎操作
對於一般的開發者,eMMC的基礎操作包括:初始化操作(CMD0+CMD1+CMD2+CMD3+CMD7)、(多種速率的)讀寫操作、寫保護操作、分區操作。
在此後的章節中將詳細展開敘述。本篇爲開篇簡介與概覽,故而只是簡單介紹。
2 eMMC5.1協議
2.1 eMMC5.1協議文檔的獲取
如下鏈接,無需C幣:
2.2 eMMC的初始化
eMMC上電後,需要先初始化,才能進行後續的讀寫操作。
初始化的命令序列爲:CMD0 發一次、CMD1發多次(直到返回值首位爲1)、CMD2、CMD3、CMD7
以上的命令序列發送成功後,eMMC便進入了transfer模式,可進行讀寫等操作。
2.3 eMMC的讀寫
eMMC進入了transfer模式後,也就是初始化序列發送成功後,eMMC上盤成功,可進行讀寫操作。
普通的讀寫方式有兩種:
(1)主控芯片先通過命令指定起始地址,再通過命令指定要傳輸的塊數,然後發送數據;
(2)主控芯片先通過命令指定起始地址,開始發送數據,發完數據再發命令通知eMMC芯片結束讀寫操作。
後續章節將詳細描述。
3 本專欄教程的目標
目標爲:從普通開發者角度,描述清楚eMMC的常用功能,使得讀者能對eMMC有一個較爲全面的瞭解,並具備一些基本的開發能力。
3.1 內容核心
(1)eMMC芯片的引腳說明;
(2)eMMC芯片的初始化;
(3)eMMC芯片的讀寫操作;
(4)eMMC芯片的速度模式調整;
(5)eMMC芯片的分區操作;
(6)eMMC芯片的寫保護操作。
3.2 教程安排
本教程篇幅計劃15篇,其中:
第1-3篇爲基礎篇,涉及內容爲本教程全部內容的簡單描述,供入門與瞭解使用;
第4-5篇爲初始化相關內容的專講;
第6-8篇爲讀寫操作的專講,包括普通讀寫與打包讀寫;
第9-11篇爲三種速度模式的專講(SDR50、HS200、HS400);
第12-13篇爲分區操作相關內容;
第13-14篇爲寫保護操作的相關內容;
第15篇爲幾個常用寄存器的專講與全教程的總結
第16-17篇(如果有時間寫的話)爲命令隊列 (CMDQ) 的相關內容