1. 程式人生 > >exynos 4412 eMMC配置及使用方法

exynos 4412 eMMC配置及使用方法

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.0 * @date       Feb-2015 ****************************************************************************** * < COPYRIGHT 2015 ISE of SHANDONG UNIVERSITY > ******************************************************************************
**/ 開發板:迅為4412精英版。 uboot:uboot-2014-10。 開發板上的eMMC:三星 KLMxGxxEMx-B031 容量4GB 使用eMMC 5.0標準。 exynos4412上的eMMC控制器:使用的eMMC4.41標準。 參考文件:見文末。參考文件 [2] 需要到JESD網站下載。 此款三星eMMC相容e.MMC 5.0標準協議,但是4412的eMMC控制器是使用的e.MMC 4.4標準,這樣的搭配是不是不太好暫且不表。

一、時鐘

1.1 eMMC時鐘部分

最基礎的部分還是時鐘,eMMC支援的時鐘分為好多種比如26M 52M HS200 HS400,當然eMMC越高階支援的時鐘模式也就越多。
怎麼知道eMMC支援的時鐘模式,查一下Extended CSD Register 的 [196] 位元組即可,這裡的這款B031晶片讀數為0x57,那麼這個0x57中的每一位含義是什麼呢,查閱文件 [2] 的7.4.54節: NewImage 對照後0 1 2 4 6 位為1,即支援HS400 HS200 HS52-DDR HS52 HS26,4412可以選用任意一種時鐘模式操作eMMC。 這裡還有不同的模式需要的時鐘速率及最大傳輸速率。 NewImage

1.2 4412 eMMC控制器部分

從CMU(Clock Management Unit)模組中找到MMC控制器時鐘圖,如下: NewImage 系統上電預設使用XusbXTI時鐘源,但是在實際使用中24M時鐘是遠遠不夠的,所以我們按照手冊推薦將時鐘源選擇到SCLKmpll_user_t ,選擇方法請參考
《exynos 4412 時鐘配置》
MUXmmc0-3涉及的暫存器:

    CLK_SRC_FSYS

    地址:0x1003C240

    預設值:0x00011111

    設定後的值:0x00066666

DIVmmc0-3和DIVmmc0-3_pre涉及的暫存器:

    CLK_DIV_FSYS1 & CLK_DIV_FSYS2 & CLK_DIV_FSYS3

    地址:0x1003C544 & 0x1003C548 & 0x1003C54C

    預設值:0x00000000 & 0x00000000 & 0x00000000

    設定後的值:0x09010901 & 0x09010901 & 0x09010901

這樣在MPLL為800MHz的情況下,先二分頻再十分頻,最後eMMC控制器的時鐘是40MHz。但是如果eMMC晶片支援HS200或者HS400高速模式,那麼隨後對控制器時鐘進行修改即可。 

二、確定Class

我們都知道,eMMC也是分等級的,分別從Class0 ~ Class11 ,不同的Class支援的命令範圍不同,不先確定Class就不敢確定發出的指令eMMC能夠正確響應。 查一下CSD Register的[95:84]共12bit。這裡的這款B031讀數為0xF5(11110101),支援Class0 Class2 Class4 Class5 Class6 Class7指令集。

三、確定支援的CMD

從支援的Class指令集就可以推出支援的CMD命令, NewImage 這樣可以得出這款B031不支援的命令有CMD11 CMD20 CMD39 CMD40 CMD53~56。

四、CMD列表

NewImage NewImage NewImage NewImage NewImage NewImage NewImage NewImage NewImage 

五、CMD回覆格式

先看上面表格的第4列Resp列,代表eMMC回覆給4412控制器的訊息,他們的含義如下:

5.1 R1回覆格式

NewImage 共48bit,最高bit永遠是0,後緊接0代表從eMMC傳給控制器,而後[45:40]共6bit代表回覆的哪個CMD(0 ~ 63),而後的[39:8]共32bit代表eMMC的裝置狀態,而後就是CRC和結束位。Device status的含義如下: NewImage NewImage NewImage NewImage

5.2 R1b回覆格式

NewImage

5.3 R2回覆格式

R2用來回復CMD2 9 10這三個命令,當回覆CMD2 10的時候內容是CID暫存器的值,當回覆CMD9的時候內容是CSR暫存器的值。 NewImage NewImage

5.4 R3回覆格式

NewImage 

5.5 R4回覆格式

NewImage

5.6 R5回覆格式

NewImage

六、幾種常用CMD 

6.1 CMD0

這個命令用來複位eMMC,沒有回覆: NewImage

6.2 CMD1

這個命令得到eMMC的OCR暫存器值: NewImage NewImage 在這裡[31]位比較重要,如果是1代表eMMC復位完成了,0x40FF8080復位未完成,0xC0FF8080復位完成。

6.3 CMD2

這個命令得到eMMC的CID暫存器值,共128bit,16位元組: NewImage 下面是在實際操作過程中讀取到的資料: NewImage 與文件(1)中CID暫存器對照後就會發現完全一致。

6.4 CMD3

此命令用來設定eMMC的相對地址,相對地址是為一條匯流排掛接多個eMMC準備的,如果只有一個eMMC這個命令沒有很大意義。 NewImage eMMC回覆R1給控制器。 

6.5 CMD6

這個命令用來設定eMMC中EXT_CSR中暫存器的值: NewImage [31:26]:為0 [25:24]:見下表, NewImage [23:16]:為將要操作的暫存器索引 [15:8]:為將要寫入暫存器的值 [7:3]:為0 [2:0]:如果[25:24]為00b,那麼這三位含義如下, NewImage

6.6 CMD7

此命令用來設定eMMC的狀態,因為當使用CMD0使eMMC復位後,eMMC處於idle或pre_idle狀態,如果需要資料傳輸,必須將eMMC置於transfer_state,CMD7就是這個作用。 NewImage eMMC回覆R1給控制器。

6.7 CMD8

此命令用來獲取EXT_CSD的值,雖然回覆為R1,但是EXT_CSD的512位元組值會被讀取並存儲到記憶體裡,然後使用者可以根據這些資料分析出eMMC當前支援的各種引數和狀態。 NewImage 注意由於EXT_CSD是eMMC4之後才引入的暫存器組,所以只有判斷eMMC版本大於4之後,才會發出這條指令讀取EXT_CSD。

6.8 CMD13

要求eMMC傳送自己的狀態。 NewImage

七、操作順序

 eMMC上電後首先需要復位,CMD0實現,然後eMMC會進入自行復位busy狀態,迴圈傳送CMD1來檢測busy狀態,當busy狀態結束後,eMMC進入ready狀態,然後傳送CMD2進行認證(獲取CID),然後傳送CMD3,之後eMMC進入stby狀態,最後使用CMD7進入transfer狀態,這時候就可以使用CMD16讀取單塊,CMD17讀取多塊了。 以上是一般的操作順序,包括最關鍵的指令,當然也可以在這中間插入一些不是必需的指令,比如CMD6、CMD13等等。 詳細的狀態切換圖見下: NewImage 參考文件: [1] KLMxGxxEMx-B031 Spec [2] JESD84-B50(注:eMMC 5.0標準協議)

相關推薦

exynos 4412 eMMC配置使用方法

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.0 * @date       Feb-2015 *****

[轉]exynos 4412 eMMC配置使用方法

exynos 4412 eMMC配置及使用方法 /** @author Maoxiao Hu @version V1.0.0 @date Feb-2015 < COPYRIGHT 2015 ISE of SHANDONG

exynos 4412 時鐘配置

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.0 * @date       Jan-2015 *****

JDBC(一)之與SQL Server的連線配置方法

PS:文中所用SQL Server版本為2008一、SQL Server準備工作1.配置例項的登入驗證方式    右擊 例項,選擇 屬性    單擊 安全性,選擇 SQL Server和Windows身

exynos 4412 電源管理晶片PMIC 的配置使用方法

轉載:http://www.cnblogs.com/humaoxiao/p/4267614.html/********************************************************************************* @author    Maoxiao Hu*

exynos 4412 電源管理晶片PMIC 的配置使用方法

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.0 * @date       Feb-2015 *****

Windows 2008服務器環境PHP連接SQL Server數據庫的配置連接方法

word ref 網關 sage 軟件 代碼 正文 服務器 安全 背景:   PHP程序常用的數據庫是Mysql數據庫,但是由於實際項目需要,要求PHP網站連接SQL Server數據庫查詢一些必要信息。因此,本文就來給大家介紹一下如何安裝及配置PHP擴展,可以實現PHP利

django2.0media用戶上傳文件配置使用方法

template img serve templates med setting 配置 code url 1.setting.py配置 #用戶文件上傳至media MEDIA_URL=‘/media/‘ MEDIA_ROOT=os.path.join(BASE_DIR,"m

Staruml for mac 2.81版本修改配置free方法

http://www.xue51.com/mac/6037.html 下載地址 注:下載包中有staruml for mac 破解版安裝包以及軟體安裝必讀檔案,安裝包在未使用時請不要輕易刪除和更改檔案型別。 3.0版本以後安裝包檔案變化,此方法不適合。 準備: 提示不明開發者、檔

matlab和c++混合程式設計---matlab和vs的環境配置問題方法和步驟(轉載)

matlab和c++混合程式設計---方法和步驟 matlab和c++混合程式設計---matlab和vs的環境配置問題 摘要:Matlab具有很強的數值計算和分析等能力,而C/C++是目前最為流行的高階程式設計語言,兩者互補結合的混合程式設計在科學研究和工程實踐中具有非常重要的意義。從Matlab呼叫C

Java日誌框架-logback的介紹配置使用方法(純Java工程)

說明:內容估計有些舊,2011年的,但是大體意思應該沒多大變化,最新的配置可以參考官方文件。 一、logback的介紹 Logback是由log4j創始人設計的又一個開源日誌元件。logback當前分成三個模組:logback-core,logback- classic和

AngularJs之ui.router路由基本配置傳參方法

使用AngularJs可以方便的做出單頁面應用,既然是應用,那就涉及到頁面跳轉的問題,使用Angularjs的路由外掛可以方便的使用路由功能,而且可以傳參非常容易。程式碼如下:路由外掛:angular-ui-router.js。檔案:index.html01<!DOCT

jqGrid單元格編輯配置,事件方法

要使用單元格編輯模組,你需要在下載頁面勾選Cell editing 和 Common這2個功能,然後再點選 Download 下載按鈕下載jqGrid。下載地址:http://www.trirand.com/blog/?page_id=6 要看元代可以從src目錄中找到 grid.celledit.js

GitLabTortoiseGit的基本配置使用方法

Git的安裝 在網上下載git安裝包,本文以Git-1.9.5-preview20150319.exe作為演示,請自行下載最新版 開啟安裝檔案,直接“Next” 這裡直接預設即可,第一項為是否建

CentOS6.5系統光纖連線儲存的多路徑配置使用方法

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to  switch off the mode (command 'c') and change display units t

Visual Studio 2017離線安裝包配置安裝方法

  微軟最近釋出了正式版Visual Studio 2017並公開了其下載方式,不過由於VS2017採用了新的模組化安裝方案,所以微軟官方並未提供ISO映象,但是官方提供瞭如何進行離線下載的方案給需要進行離線安裝的使用者,只不過都是英文。visual studio 2017 for mac 官方中文版  本文

Hbase叢集安裝配置常見問題解決方法

Hbase介紹 HBASE是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBASE技術可在廉價PC Server上搭建起大規模結構化儲存叢集。 HBASE的目標是儲存並處理大型的資料,更具體來說是僅需使用普通的硬體配置,就能夠處理由成千上萬的行和列所組成的大型

未聯網主機Python環境配置包管理簡單方法

之前一直為python的包管理感到頭疼, 今天需要在一臺尚未聯網的主機上配置python環境,並且安裝幾個包,我便重新梳理了一下python的包管理機制。 其實在現行的python框架下有種簡單的管理辦法,那就是pip + wheel格式的包安裝方法。 首先安裝pyth

Servlet 的配置生命周期方法

ppi url rtu 數值 被調用 pan 設置 時機 使用 Servlet 容器: 運行Servlet,JSP,Fiter 等的軟件環境   可以創建Servlet,並調用Servlet的相關生命周期方法 Servlet 生命周期的方法   構造方法:只有第一次請求Se

https原理tomcat配置https方法

一、 什麼是HTTPS 在說HTTPS之前先說說什麼是HTTP,HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的資料都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私資訊非常不安全。為了保證這些隱私資料能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協