本章提供了長擦除的指導原則和計算擦除超時值的方法。
擦除單元速度類規范定義了一個新的管理單元AU(分配單元)。擦除超時計算被定義為AU的基礎。SD存儲卡支持塊擦除,但擦除塊需要更多的時間,這是AU(部分擦除AU)的一部分。在這種情況下,主機應該在以AU為基礎計算的超時結果中添加250毫秒。當開始和結束塊位于相同的部分擦除AU時,應添加500ms。
擦除時間特性案例分析
下圖顯示了擦除特性的示例,擦除的AU數量與擦除時間的關系。擦除時間是通過使用一個Erase命令擦除指定數量的au得來的。假設擦除是在AU基礎上進行的,其擦除特性可以近似為一條直線。圖中線A為典型特征。紅線表示主機應該使用的擦除超時值。超時值可由a行確定。如果擦除超時小于1秒,則主機應使用1秒作為超時。如果超時大于1秒,主機應該使用行A確定的值。寄存器參數Nerase, Terase和Toffset定義線的形狀。TERASE表示從TOFFSET中擦除NERASE AUs的超時時間。TERASE和NERASE決定直線的斜率。ToFFSET通過在上方平行移動來調整線條。卡制造商應確定這些參數,使線路始終大于任何AUs的擦除時間。實際擦除時間為始終小于擦除超時時間,線的斜率應小于3秒每AU。
下圖中的行B是擦除特性的另一個示例。紅線表示主機應該使用的擦除超時值。由于超時大于1秒,紅線和B線是等效的。
AU的擦除時間不得超過3秒。ToFFSET主要用于調整AU的擦除超時時間。
SD NAND 或SD卡 大面積擦除方法
多個AUs計算的擦除超時時間可能與實際擦除時間相比太大擦除超時的計算不準確,因為計算的超時包括空白。每個AU的余量會累積,并且為大量AU計算超時的結果將包含較大的余量。這樣的計算是沒有意義的,因為差額的范圍可能以分鐘為單位。因此,應一次擦除少量au。這使主機能夠以更少的錯誤計算更小的超時。
應用說明:當大面積擦除時,主機應在AU邊界處將其劃分為小區域,并使用小區域擦除超時時間連續擦除小區域。擦除一個大的區域可能需要很長時間,因此主機應該通知用戶擦除的進度,否則用戶可能會中止擦除的執行。
通過參數寄存器計算擦除超時時間
X AU的Erase Timeout可由式(6)計算。
擦除超時時間由以下步驟確定:
(1)計算式(6)。
(2)如果(1)的結果小于1秒,則將超時時間設置為1秒。
(3)對于每個部分擦除AU,應在(2)的結果上增加250 ms。當開始和結束塊處于部分擦除au時,將(2)的結果增加500 ms。
設置塊計數命令
CMD12用于停止多塊讀/寫操作。然而,CMD12是定時依賴的,很難控制定時以精確定時發出CMD12。由于UHS104卡時鐘和數據之間的延遲變化較大,CMD23可以代替CMD12,用于主機停止多個讀寫操作。主機不需要控制CMD12的定時。該命令適用于始終為512字節塊長度的讀寫操作,此時SDSc卡不支持此命令。UHS104卡必須支持CMD23。
在SCR中定義了對CMD23的支持。CMD23的響應類型為R1,未顯示忙。l CMD23在傳輸狀態下被接受,對CMD23后面的多塊讀/寫命令(CMD18或CMD25)有效。如果CMD23后面有其他命令,則取消設置塊計數(包括CMD13)。如果發生命令CRC錯誤,卡不返回R1響應CMD23。此時Set block count無效,需要重試CMD23。如果發布了多個CMD23,最后一個有效。
CMD23的定義如下圖所示。如果參數中的塊計數設置為0。CMD23無效。CMD23設置的塊計數值不被卡檢查,然后CMD23在響應中不指示任何錯誤(CMD23的響應中指示先前的命令錯誤)。如果設置了非法塊計數,讀寫時會出現超出范圍錯誤(例如,在用戶區邊界處停止傳輸數據)。
如果在CMD18和CMD25操作中檢測到任何錯誤,主機需要發出CMD12。如果一個CMD25被終止,并且傳輸的數據量小于前一個CMD23所指示的數據量,則CMD23所指定的未寫入區域可能包含未定義數據。如果傳輸的數據量大于前面CMD23所指示的數據量,則不寫入額外的數據。
-
NAND
+關注
關注
16文章
1678瀏覽量
136028 -
存儲卡
+關注
關注
0文章
252瀏覽量
28172 -
SD
+關注
關注
1文章
161瀏覽量
33645
發布評論請先 登錄
相關推薦
評論