1. 程式人生 > >Linux裝置驅動程式架構分析之SD Spec摘要

Linux裝置驅動程式架構分析之SD Spec摘要

作者:劉昊昱 

本文是對SDSpecifications Part 1 Physical Layer Simplified Specification Version 4.10的摘要記錄,具體資訊可參考該文件。

3、SD Memory Card System Concept

3.1 讀-寫屬性

按照讀/寫屬性分,SD Memory Card可以分為兩種型別:

u  Read/Write(RW) cards(例如Flash,One TimeProgrammable - OTP,Multiple Time Programmable - MTP)。這種型別的卡通常以空白卡的形式銷售,用來儲存資料、使用者視訊、音訊、圖片等等。

u  Read Only Memory(ROM) cards。這種卡內容是固定的,不能更改或刪除,通常用來分發軟體、音訊、視訊等等。

3.2 工作電壓

按照工作電壓分類,SDMemory Card可以分為兩種型別:

u  High Voltage SD Memory Cards,工作電壓為2.7 - 3.6V。

u  UHS-II SD Memory Card,工作電壓 VDD1為2.7 - 3.6V, VDD2為1.7 - 1.95V

3.3 卡容量

3.3.1 使用者空間和保護空間

SD Memory Card有兩種相互獨立的儲存空間:使用者空間和保護空間。使用者空間是主要的儲存空間,而保護空間必須通過認定機制才能訪問。卡容量是使用者空間和保護空間的總和。

3.3.2 卡容量分類

按照卡容量,SDMemory Card可以分為三類:

u  Standard Capacity SD Memory Card(SDSC),支援的容量最大為2Gbytes。

u  High Capacity SD Memory Card(SDHC),支援的容量從2G到32G bytes。從Physical Layer SpecificationVersion 2.00開始支援這種卡。

u  Extended Capacity SD Memory Card(SDXC),支援的容量從32Gbytes到2TB。

3.4 速度分類

SD Memory Card的速度可以分為5個級別:

u  Class 0,它包括Physical Layer Specification Version 2.00之前的所有早期卡,不考慮其速度效能。

u  Class 2,速度大於或等於2MB/sec。

u  Class 4,速度大於或等於4MB/sec。

u  Class 6,速度大於或等於6MB/sec。

u  Class 10,速度大於或等於10MB/sec。

SDHC和SDXC卡的速度級別必須大於或等於Class2。

3.5 匯流排拓撲

3.6 匯流排協議

3.6.1 SD匯流排協議

SD匯流排通訊基於命令和資料流。

u  命令:命令是標誌著一個操作開始執行的令牌。命令從host發出,可以傳遞給單個Card(單一地址命令),也可以傳遞給所有連線的Card(廣播命令)。命令在CMD線上序列傳輸。

u  應答:應答是一個Card或所有連線的Card傳送給host的一個令牌,做為對前面接收到的命令的迴應。應答在CMD線上序列傳輸。

u  資料:資料可以從card傳送到host,也可以從host傳送給card,資料的傳輸是通過資料線進行的。

card地址是一種動態分配的會話地址,在卡的初始化階段分配。我們將在第4章介紹命令、應答、資料的具體結構。最基本的傳輸是命令/應答傳輸,如下圖所示:

這種傳輸直接通過命令/應答傳遞資訊,但是,有些操作需要傳輸資料。

資料傳輸以塊為單位進行,資料塊之後緊跟著CRC校驗位。我們可以定義傳輸單個數據塊或傳輸多個數據塊。多個數據塊傳輸以一個stop命令結束。host可以配置資料傳輸使用一條或多條資料線。

塊資料傳輸如下圖所示:

塊寫操作使用在DAT0資料線上的一個busy訊號表明寫操作正在進行中,不論資料傳輸過程中使用了多少根資料線。

命令具有如下格式:

每個命令由一個起始位0開始,由一個結束位1結束。命令由CRC校驗位進行校驗,命令長度為48個bit。

應答依據其內容,有4種格式,如下圖所示:

應答長度為48 bit或136 bit。具體定義我們將在第4.7節介紹。

在CMD線上,最高有效位(MSB, Most Significant Bit)先傳送,最低有效位(LSB, Least SignificantBit)最後傳送。

當使用寬匯流排模式,資料一次傳輸4 bit,每條資料線上有自己對應的開始位、結束位和CRC校驗位,CRC校驗報告和Busy報告只通過DAT0資料線傳遞給host,此時,DAT1 – DAT3被忽略。

對於SD卡,有兩種資料包格式:

l  Usual data(8-bit width):usual data的最低有效位元組(Least Significant Byte)首先傳送,最高有效位元組(Most Significant Byte)最後傳送。但是在每個獨立的位元組中,最高有效位(MSB, Most Significant Bit)先傳送,最低有效位(LSB, Least Significant Bit)最後傳送。

l  Wide width data(SD Memory Register):wide width data從最高有效位開始傳送。

3.6.2 SPI匯流排協議

我們將在第7章詳細介紹SPI匯流排協議

3.6.3 UHS-II匯流排協議

UHS-II匯流排協議的內容在UHS-II附件中介紹。

3.7 SD Memory Card引腳與暫存器

3.7.1 SD匯流排引腳分配

SD卡尺寸為24mmx 32mm x 2.1mm或者24mmx 32mm x 1.4mm,其外形和引腳如下圖所示:


下表描述了SD卡的引腳:

每個SD卡中都有如下表所示的暫存器,我們將在第5章對這些暫存器進行詳細說明:

host可以通過將供電電源關閉再開啟而達到重置SD card的目的。每個SD card都有自己的上電檢測電路,上電後,SD card將進入一個預定義的狀態。host也可以傳送GO_IDLE(CMD0)命令讓SD card進入重置狀態。

3.7.2 UHS-II引腳分配

UHS-II Card外形如下圖所示:

UHS-II的引腳安排在第二行,第一行引腳在非UHS-II模式下與SD Card引腳作用完全相同。在UHS-II模式下,第一行中的第7和8針引腳用作PCLK。

UHS-II引腳的作用如下表所示:

UHS-II Card在UHS-II模式下不使用SD I/F相關引腳。host不能將這些未使用的引腳懸空,而應該將它們保持在一個預定義的高或低電平,怎樣保持依賴於具體host的實現。例如使用上拉電阻,或者host不使用上拉電阻而直接驅動這些線為低電平。

在休眠狀態下,未使用的線應該在關閉VDD1之前被設定為低電平。

3.8 ROM Card

ROM Card是隻讀的儲存器,一個永久或臨時防寫的SD Card不屬於ROM Card。

ROM Card滿足下面的要求:

3.8.1 暫存器設定要求

下表是ROM Card的暫存器設定要求:

3.8.2 不支援的命令

ROM Card認為下面的命令是非法命令:

CMD24、CMD25、CMD27、CMD28、CMD29、CMD30、CMD32、CMD33、CMD38

3.8.3 可選命令

ROM Card認為下面的命令是可選命令

CMD42、安全命令

l  如果不支援CMD42命令,CCC的第7位應該被設定為0。此時CMD42被認為是非法命令。

l  如果ROM Card支援CMD42,應該通過預先設定密碼支援“Unlocking the card”和“Locking the card”功能。當接收到CMD42的其它不支援的功能時,標示LOCK_UNLOCK_FAILED。

l  如果不支援安全命令,SD_SECURITY應該被設定為0,此時安全命令被認為是非法命令。

l  ROM Card不支援寫或擦除保護區域。

3.8.4 WP開關

一個full-size的ROM Card沒有WP開關。

3.9 Ultra High Speed Phase I(UHS-I)Card

UHS-I在4-位 SD匯流排單一介面的情況下支援最高104MB/sec的傳輸速度。

3.9.1 UHS-I Card操作模式

l  DS:Default Speedup to 25MHz 3.3Vsignaling

l  HS:High Speed upto 50MHz 3.3V signaling

l  SDR12:SDR up to25MH 1.8V signaling

l  SDR25:SDR up to50MH 1.8V signaling

l  SDR50:SDR up to100MH 1.8V signaling

l  SDR104:SDR up to208MH 1.8V signaling

l  SDR50:SDR up to50MH 1.8V signaling

注意:1.8V訊號時鐘與3.3V不同

3.9.2 UHS-I卡型別

UHS-I支援兩種型別的卡:

l  UHS50

l  UHS104

UHS-I不支援SDSC卡,支援SDHC和SDXC卡。

下面的兩幅圖顯示了UHS-I支援的模式:

3.9.3 UHS-I host與card的連線

host可以使用SDR50、DDR50和SDR104模式連線UHS50卡或UHS104卡。

下表顯示了不同型別的host和card連線時UHS效能:

UHS-I對於可插撥卡假設只有一個卡連線到總線上。最高效能104MB/s只有有host支援SDR104模式並且card是UHS104卡(支援SDR104模式)。如果卡是UHS50卡,或者host不支援SDR104模式,效能則會被限制在50MB/s以內。

3.9.4 UHS-I匯流排速度模式選擇流程

上圖顯示了使用UHS-I的命令流。上電後,card處於3.3V訊號模式。第一個命令CMD0選擇匯流排模式:SD模式或SPI模式。1.8V訊號模式只能使用SD模式。一旦card進入1.8V訊號模式,除非重新上電,card就不能切換到SPI模式或3.3訊號模式。如果card收到CMD0命令,card就進入idle狀態但是仍然以SDR12時序在工作。UHS-I只支援SD模式,而不支援SPI模式。

因為高匯流排速度需要低電平訊號,UHS-I為SDR50、DDR50、SDR104模式採用1.8V電平,card仍然使用由host提供的3.3V電源,SDCLK、CMD和DAT[3:0]採用由3.3V電源線轉換過來的1.8V電平訊號。為了避免host和card之間電平不匹配,在初始化階段使用電壓切換器改變電平訊號。host和card使用ACMD41命令通訊是否支援1.8V訊號模式。如果host和card都支援1.8V電平,則表示可以使用UHS-I。CMD11呼叫電壓切換流程。card進入UHS-I模式,當電壓切換成功後,card的輸入輸出時序都發生變化(預設為SDR12)。

除了CMD42,UHS-I只支援4位匯流排模式。如果卡被鎖定,host需要使用CMD42在1位模式下解鎖卡,然後發出ACMD6轉換為4位匯流排模式。

host可以通過CMD6 Function Group 3選擇合適的output driver strength。

host可以通過CMD6 Function Group 1選擇一種UHS-I模式。

當卡被解鎖後,CMD19可以執行1.8V訊號模式轉換,其它情況下,CMD19被認為是非法命令。

3.9.5 UHS-I系統模組圖

3.9.6 UHS-I card匯流排速度模式總結

下表顯示了不同匯流排速度模式下對card的需求:

下表顯示了對於不同的card型別,可選/強制(option/mandatory)的匯流排速度模式:

3.10 Ultra High Speed Phase II(UHS-II)Card

3.10.1 UHS-II Card操作模式

SD匯流排介面模式

l  DS:Default Speedup to 25MHz 3.3V signaling

l  HS:High Speed upto 50MHz 3.3V signaling

l  SDR12:SDR up to25MHz 1.8V signaling

l  SDR25:SDR up to 50MHz1.8V signaling

l  SDR50:SDR up to 100MHz1.8V signaling

l  SDR104:SDR up to 208MHz1.8V signaling (Optional)

l  DDR50:DDR up to 50MHz1.8V signaling (Optional forStandard Size Card)

UHS-II介面模式

l  FD156:Full Duplexmode up to 156MB/s at 52MHz in Range B

l  HD312:Half Duplexwith 2 Lanes mode up to 312MB/s at 52MHz in Range B (Optional)

3.10.2 UHS-II Card型別

UHS-II只支援一種卡型別。

l  UHS156:這種型別的UHS-II卡在FD156模式下速率可達到1.56Gbps,在HD312模式(可選)下可達到312Gbps。

 

3.10.3 UHS-II host與card的連線

3.10.4 UHS-II介面選擇流程

支援UHS-II的host將同時支援SD Bus Interface (I/F)和UHS-II I/F。可移動UHS-II卡槽也將同時支援這兩種I/F。所以,UHS-II卡可以初始化為UHS-II模式也可以初始化為SD匯流排模式。

下圖顯示怎樣選擇UHS-II模式。上電後,UHS-II卡的SD bus I/F和UHS-II I/F都被使能。支援UHS-II的host提供PCLK和STB.L到D0線。host等待D1線將EIDL改變為STB.L,如果STB.L在D1線上被檢測到,host就開始初始化UHS-II.如果經過200us後,D1線上仍沒有檢測到STB.L,host就初始化card為SD Bus I/F模式。

 

下圖顯示了UHS-II初始化流程。第一步是PHY初始化。PLL被啟用並同步。在結束PHY初始化之前,SD Bus I/F是禁用的。第二步是裝置初始化,裝置的backend function被初始化。第三步是列舉。唯一的4位裝置ID被分配給每個裝置,通過裝置ID就可以選擇一人的裝置。第四步是配置。UHS-II暫存器被配置為能以優化的匯流排順序使用UHS-II裝置。第五步是SD-TRAN初始化。UHS-II通過SD-TRAN模擬SD命令。SD-TRAN初始化等同於SD匯流排初始化,但是host以UHS-II包的形式傳送SD命令。除了一些特別的命令,UHS-II card接受大部分SD命令。如果收到了CMD0命令,UHS-II card重新回到SD-TRAN初始化階段。

下圖顯示了UHS-IICard的SD Bus I/F初始化序列。在ACMD41命令執行結束之前,UHS-II card應該禁用UHS-II介面。

3.10.5 UHS-II Card匯流排速度模式總結

下表顯示了Card型別和支援的匯流排速度模式:

推薦UHS-II host實現UHS-I模式(至少SDR50),以實現向後相容UHS-I卡。

4、SD Memory Card功能說明

4.1 概述

host與card之間的通訊是由host控制的,host傳送的命令有兩種型別:廣播命令和指定地址命令(也叫點對點命令)。

u  廣播命令:廣播命令是傳送給所有card的命令,有些廣播命令要求一個應答。

u  指定地址命令(點對點命令):指定地址命令是傳送給指定地址card的命令,並且還要要求從這個card得到一個應答。

對於SD MemoryCard系統(包括host和card),有兩種操作模式:

u  card識別模式

對於host來說,重置之後,當它正在探測總線上的card時,該host處於card識別模式。

對於card來說,重置之後,直到接收到SEND_RCA命令(CMD3),該card處於card識別模式。

u  資料傳輸模式

對於host來說,當總線上的所有card都被識別之後,host進入資料傳輸模式。

對於card來說,當它的RCA第一次被髮送之後,該card進入資料傳輸模式。

下表列出了操作模式與card狀態的關係,每種card狀態都與一個操作模式相關聯:

4.2 Card識別模式

在Card識別模式下,host重置所有的card,驗證操作電壓範圍,識別卡並且要求他們傳送Relative CardAddress(RCA)。這些操作是在每個卡自己的CMD線上完成的。在Card識別模式中,所有的資料通訊都是在CMD線上完成的。

在卡識別過程中,card是在SD時鐘頻率下執行相應操作的。

4.2.1 Card重置

在SD模式下,命令GO_IDLE_STATE(CMD0)是軟重置命令,它設定card進入idle狀態。如果card當前處於inactive狀態,則不響應這個命令。

由host供電後,所有的卡都進入idle狀態,包括之前處於inactive狀態的卡。

當接收到CMD0或者由host供電後,所有card的CMD線都處於輸入模式,等待下一個命令的起始位。card初始化後,使用預設的relativecard address(RCA=0x0000),使用預設的driver strength和400KHz時鐘頻率。如果使用3.3V訊號,預設driver strength由Driver Stage Register(DSR)指定。如果使用1.8V訊號,預設driverstrength由B型別driver指定。

在UHS-II模式下,RCA並不是由CMD0設定為0x0000,而是保持它的裝置ID,裝置ID是由列舉決定的。

4.2.2 操作條件確認

host與card剛開始通訊時,host不知道card支援的工作電壓,card也不知道它是否能在當前的電壓下工作。當host發出重置命令CMD0時,同時發出一個特定電壓給card,host假設card能在這個電壓下工作。

為了驗證電壓,在PhysicalLayer Specification Version 2.00中,定義了一個新的命令CMD8。

SEND_IF_COND(CMD8)命令用來驗證SDMemory Card interface操作條件。card通過分析CMD8的引數來檢查操作環境的有效性;host通過分析CMD8的應答查檢有效性。提供的電壓由引數的VHS域指定。card假定VHS指定的電壓為當前供應電壓。在任何時候,VHS只能有一位被設定為1。CRC和檢查樣式都被host用來檢查host與card通訊的有效性。

如果card在給定的電壓下能工作,應答返回供應電壓和檢查樣式。

如果card不能在給定的電壓下工作,它不進行應答保持在idle狀態。

初始化SDHC或SDXC card時,強制要求在傳送ACMD41命令前先發送CMD8命令。如果card收到CMD8命令,它就可以知道host支援PhysicalLayer Version 2.00或之後的版本,card就可以使能新的功能。

SD_SEND_OP_COND(ACMD41)命令被設計用來使得SD Memory Card host能夠拒絕不匹配VDD範圍的card,host通過將需要的VDD電壓視窗作為命令的運算元傳送出去達到這個目的。在指定VDD範圍不能進行資料傳輸的card將被拋棄,該card進入inactive狀態。OCR暫存器的值將進行相應設定。

注意ACMD41是應用程式特有的命令,因此APP_CMD(CMD55)命令必須在ACMD41之前執行。在idle狀態下CMD55命令使用的RCA是card的預設RCA=0x0000。

host發出CMD0命令重置card後,host應該在傳送ACMD41命令前先發出CMD8命令重新初始化card。

下圖是SD I/F card識別模式的狀態圖:

4.2.3 Card初始化和識別

匯流排被啟用後,host就開始card的初始化和識別,具體過程如下圖所示:

初始化過程開始於SD_SEND_OP_COND(ACMD41)命令,通過設定該命令的操作環境和設定OCR的HCS位。HCS(Host CapacitySupport)位被設定為1,表明host支援SDHC或SDXC card。HCS(Host CapacitySupport)位設定為0,表示host不支援SDHC或SDXC card。

CMD8命令擴充套件了ACMD41的功能,引數中的HCS和CCS(Card Capacity Status)在應答中。HCS被不應答CMD8的card忽略,如果card不應答CMD8,host將設定HCS為0。Standard Capacity SD Memory Card忽略HCS,如果HCS設定為0,SDHC和SDXC永遠不會返回ready狀態(保持busy位為0)。

OCR中的busy位被card用來通知host ACMD41初始化是否已經完成。將busy位設定為0表示card仍然在初始化過程中。將busy位設定為1表明初始化已經結束。Card初始化應該在從第一個ACMD41開始的1秒鐘內結束。host重複傳送ACMD41至少1秒鐘或者直到busy位被設定為1。cardk只在第一個ACMD41檢查操作條件和OCR中的HCS位。

如果card應答CMD8,則ACMD41的應答中包括CCS域資訊。當card返回read狀態時(busy位被設定為1),CCS有效。CCS=0意味著card是SDSC,CCS=1意味著card是SDHC或SDXC。

host對系統中所有的card執行相同的初始化流程,不相容的card被設定為inactive狀態。接下來host會發送ALL_SEND_CID(CMD2)命令到每個card,獲取每個card唯一的CID號。還沒有被認證的card(即處於ready狀態的card)將傳送它的CID號應答(使用CMD線)。當card的CID被髮送之後,card進入identification狀態。然後,host傳送CMD3(SEND_RELATIVE_ADDR)命令要求card傳送一個新的relativecard address(RCA),該RCA比CID短,用來在後面的資料傳輸階段定址card。一旦card的RCA被接收,card就進入Stand-by狀態。此時,如果host想為這個card分配另外一個RCA,它可以向這個card再發送一個CMD3命令要求card傳送一個新的RCA。最後的傳送的RCA是該card真正的RCA。

host對每個card重複上述認證過程,即對每一個card重複CMD2和CMD3命令。

初始化SDXC的過程與初始化SDHC的過程一樣,SDXC card的使用者空間容量由C_SIZE指定,大於或等於32GB。

4.2.3.1 初始化命令(ACMD41)

下面是ACMD41的引數的一般原則:

(1)       如果引數的voltage window field(bit 23-0)被設定為0,則稱之為“inquiry ACMD41”,“inquiry ACMD41”不會啟動初始化過程,它用來獲取OCR。“inquiryACMD41”忽略引數的其它部分(bit31-24)。

(2)       如果引數的voltage window field(bit 23-0)第一次被設定為非0值,則稱之為“first ACMD41”,它用於啟動初始化過程,引數的其它部分(bit 31-24)有效。

(3)       接下來的ACMD41命令的引數與第一個ACMD41命令的引數相同。

下圖顯示了ACMD41引數格式:

下圖顯示ACMD41應答格式:

4.3 資料傳輸模式

Card識別模式結束之前,host將保持fOD頻率,因為一些card在卡識別模式下具有操作頻率限制。在資料傳輸階段,host將在fPP頻率下操作card。

host傳送SEND_CSD(CMD9)命令來獲得card相關資料(CSD暫存器),例如,塊長度、card儲存容量等等。

廣播命令SET_DSR(CMD4)配置所有已識別卡的driver stages。它根據匯流排佈局、總線上卡的數量以及資料傳輸頻率配置卡的DSR暫存器,同時,時鐘頻率也從fOD轉換到fPP。SET_DSR命令對host和card來說是一個選項。

CMD7用於選擇一個card,使之進入TransferState。在同一時刻,只能有一個card進入Transfer State。如果之前有一個card處於Transfer State,它與host的連線將被釋放,該card返回Stand-by狀態。如果CMD7以預留的relative card address “0x0000”發出,所有的card將被退回到Stand-by狀態。

各種資料傳輸模式之間的關係總結如下:

u  所有的資料讀命令可以在任何時候被stop命令(CMD12)中斷,此時,資料傳輸將終止,card返回Transfer State。讀命令包括讀一個塊命令(CMD17)、讀多個塊命令(CMD18)、傳送防寫(CMD30)、傳送SCR(ACMD51)以及一般命令在讀模式(CMD56)。

u  所有的資料寫命令可以在任何時候被stop命令(CMD12)中斷。在使用CMD7命令取消選擇card之前,寫命令將被停止。寫命令包括寫一個塊(CMD24、CMD25)、設定CSD(CMD27)、加鎖/解鎖(CMD42)以及一般命令在寫模式(CMD56)。

u  一旦資料傳輸完成,card將退出資料寫狀態,或者轉到Programming State(傳輸成功時),或者進入Transfer State(傳輸失敗時)。

u  如果塊寫操作被停止,並且塊長度和最後一個塊的CRC有效,資料將被programmed。

u  card可能為塊寫操作提供緩衝區,這意味著當前一個塊正在被programmed時,下一個塊就可以被髮送給card。如果所有的緩衝區都被佔用著,只要card正處於ProgrammingState,則DAT0線將被拉低(BUSY)。

u  對於寫CSD、防寫和擦寫命令來說,沒有緩衝區選項。這意味著當card正在執行這三個命令的任意一個時,不接受任何其它資料傳輸命令。

u  當card正在programming時,不允許執行引數設定命令。引數設定命令包括:設定塊長度(CMD16)、擦除塊起始(CMD32)、擦除塊結束(CMD33)。

u  當card正在programming時,不允許執行讀命令。

u  其它card從Stand-by轉換為Transfer State時(使用CMD7),擦除和programming操作不會被終止。card將切換到Disconnect State並釋放DAT線。

u  可以用CMD7重新選擇一個處於Disconnect State的card,該card將轉為ProgrammingState並重新啟用busy標誌。

u  重置一個card(使用CMD0或CMD15)將終止所有掛起或正在進行的programming操作,這可能會破壞card上的內容。host應該防止這種情況發生。

u  CMD34-37、CMD50、CMD57被保留,用於SD命令系統擴充套件。

4.7 命令

具體命令描述表參考SPEC,這裡不再詳細列出。

4.7.1 命令型別

SD Memory Card有四種類型的命令:

u  Broadcast commands(bc):沒有應答。

u  Broadcast commands with response(bcr)

u  Addressed (point-to-point) commands(ac),沒有資料在DAT上傳輸。

u  Addressed (point-to-point) data transfer commands(adtc),有資料在DAT上傳輸。

4.7.2 命令格式

所有的資料都有固定的格式,長度為48 bits,如下圖所示:

命令由一個start bit(總是為0)開始,緊跟著是一個標誌傳輸方向的位(host = 1),接下來6位表示命令編號(0到63),接下來是32位命令引數,有些命令需要引數,有些不需要。上表中的“x”表示依據具體命令而定。所有的命令都由CRC進行校驗。所有的命令都以一個endbit結束(總是為1)。

4.7.3 命令類別

SD Memory Card的命令被分為幾個類別,每個類別支援一系列card功能。

Class 0、2、4、5、8命令強制要求所有型別的SDMemory Card都必須支援。Class 7命令除了CMD40外,強制要求SDHC和SDXC card支援。其它class的命令是可選的。一個card所支援的Card Command Classes(CCC)做為引數被寫到Card Specific Data(CSD)暫存器中,為host怎樣訪問card提供資訊。

具體commandclass資訊參考SPEC。