多塊寫操作之前的預(yù)擦除設(shè)置
設(shè)置預(yù)擦除的寫塊數(shù)量(ACMD23)將使后續(xù)的多塊寫操作比不使用ACMD23的相同操作更快。主機(jī)將使用這個(gè)命令來定義在下一次寫操作中要發(fā)送多少個(gè)寫塊。如果主機(jī)將在所有數(shù)據(jù)塊發(fā)送到卡之前終止寫操作(使用停止傳輸),則剩余寫塊的內(nèi)容是未定義的(可以被擦除或仍然有舊數(shù)據(jù))。
如果主機(jī)發(fā)送的寫塊數(shù)量超過ACMD23中定義的數(shù)量,卡將逐個(gè)擦除塊(當(dāng)接收到新數(shù)據(jù)時(shí))?!癕ultiple block Write”操作完成后,該數(shù)值將復(fù)位為默認(rèn)值1。建議在CMD25之前使用此命令,有些卡對于多寫塊操作會(huì)更快。
注意,如果主機(jī)想要使用預(yù)擦除特性,則應(yīng)該在WRITE命令之前發(fā)送ACMD23。否則,在執(zhí)行其他命令(例如:Security Application commands)時(shí),可能會(huì)自動(dòng)清除pre-erase-count。
發(fā)送寫塊數(shù)使用
Pipeline機(jī)制進(jìn)行數(shù)據(jù)緩沖區(qū)管理的系統(tǒng),在某些情況下,如果在多塊寫入操作中發(fā)生錯(cuò)誤,則無法確定哪個(gè)塊是最后一個(gè)被寫入閃存的??▽⒂脤懭肓己玫膲K的數(shù)量響應(yīng)ACMD22。
擦掉
為了提高數(shù)據(jù)吞吐量,需要同時(shí)擦除多個(gè)寫塊。這些寫塊的識(shí)別是通過ERASE_WR_BLK_START (CMD32)、ERASE_WR_BLK_END (CMD33)命令完成的。
主機(jī)應(yīng)該遵循以下命令順序:ERASE WR_BLK_START、ERASE_WR_BLK_END和ERASE (CMD38)。
如果收到順序錯(cuò)誤的擦除(CMD38)或地址設(shè)置(CMD32, 33)命令,卡將在狀態(tài)寄存器中設(shè)置ERASE_SEQ_ERROR位,并重置整個(gè)序列。如果收到亂序命令(SEND_STATUS除外),卡將在狀態(tài)寄存器中設(shè)置ERASE_RESET狀態(tài)位,重置擦除順序,執(zhí)行最后一條命令。
如果擦除范圍包括寫保護(hù)扇區(qū),則保留寫保護(hù)扇區(qū),只擦除非保護(hù)扇區(qū)。應(yīng)該設(shè)置狀態(tài)寄存器中的WP_ERASE_SKIP狀態(tài)位。地址設(shè)置命令中的地址字段是以字節(jié)為單位的寫塊地址??▽⒑雎訵RITE_BL_LEN(參見CSD)大小以下的所有LSB。
如上所述,對于塊寫入,卡將通過保持低DATo來指示擦除正在進(jìn)行中。實(shí)際擦除時(shí)間可能相當(dāng)長,并且主機(jī)可能發(fā)出CMD7來取消卡的選擇或執(zhí)行卡的斷開,如上面的塊寫入部分所述。擦除操作后卡上的數(shù)據(jù)要么是“0”,要么是“1”,這取決于卡的供應(yīng)商。
SCR寄存器位DATA_STAT_AFTER_ERASE(位55)定義它是'0'還是'1'。
寫保護(hù)管理
SD存儲(chǔ)卡支持以下三種寫保護(hù)方式:
機(jī)械寫保護(hù)開關(guān)(僅主機(jī)負(fù)責(zé))、卡內(nèi)部寫保護(hù)(卡方責(zé)任)、密碼保護(hù)卡鎖操作。
卡的內(nèi)部寫保護(hù)(可選)
卡片數(shù)據(jù)可以防止擦除或?qū)懭搿V圃焐袒騼?nèi)容提供商可以通過在CSD中設(shè)置永久或臨時(shí)寫保護(hù)位,對整個(gè)卡進(jìn)行永久寫保護(hù)。對于通過在CSD中設(shè)置WP_GRP_ENABLE位來支持扇區(qū)組寫保護(hù)的卡,可以保護(hù)部分?jǐn)?shù)據(jù)(以CSD中指定的WP_GRP_SIZE扇區(qū)為單位),并且可以由應(yīng)用程序更改寫保護(hù)。
SET WRITE_PROT命令用來設(shè)置地址寫保護(hù)組的寫保護(hù)CLR_WRITE_PROT命令用于清除指定地址寫保護(hù)組的寫保護(hù)。SEND_WRITE_PROT命令類似于單個(gè)塊讀取命令??òl(fā)送一個(gè)包含32個(gè)寫保護(hù)位(代表從指定地址開始的32個(gè)寫保護(hù)組)的數(shù)據(jù)塊,后跟16個(gè)CRC位。寫保護(hù)命令中的地址字段為組地址,單位為字節(jié)。該卡將忽略所有低于組大小的LSB。Password Card Lock保護(hù)將在下面的章節(jié)中介紹。
注意:SDHC和SDXC卡不支持寫保護(hù),也不響應(yīng)寫保護(hù)命令(CMD28、CMD29和CMD30)。
卡片鎖定/解鎖操作
一般密碼保護(hù)功能使主機(jī)能夠在提供密碼的同時(shí)鎖定卡片,稍后將用于解鎖卡片。密碼及其大小分別保存在128位PWD和8位PWD_LEN寄存器中。這些寄存器是非易失性的,因此電源周期不會(huì)擦除它們。
鎖定卡響應(yīng)(并執(zhí)行)“基本”命令類(O類)、l ACMD41、CMD16和“鎖定卡”命令類中的所有命令。因此,允許主機(jī)進(jìn)行復(fù)位、初始化、選擇、查詢狀態(tài)等操作,但不允許訪問卡上的數(shù)據(jù)。如果之前設(shè)置過密碼(PWD LEN值不是0),上電后卡將自動(dòng)鎖定。與現(xiàn)有的CSD寄存器寫命令類似,lock/unlock命令只能在“傳輸狀態(tài)”下使用。這意味著它不包括地址參數(shù),卡必須在使用前進(jìn)行選擇。
card lock/unlock命令具有普通單塊寫命令的結(jié)構(gòu)和總線事務(wù)類型。傳輸?shù)臄?shù)據(jù)塊包括命令所需的所有信息(密碼設(shè)置模式、PWD本身、卡鎖/解鎖等)。命令數(shù)據(jù)塊的結(jié)構(gòu)如下表所示。注意:物理規(guī)范版本2.00及以后的主機(jī)在發(fā)布CMD42時(shí)需要將保留位(Bit7-4)設(shè)置為0。
ERASE: 1定義強(qiáng)制擦除操作。在字節(jié)0中,第3位將被設(shè)置為1(所有其他位將被設(shè)置為1)該命令的所有其他字節(jié)將被卡忽略。
LOCK/UNLOCK: 1=鎖定卡片。0=解鎖卡(注意,將此位與SET_PWD一起設(shè)置是有效的,但不允許與CLR_PWD一起設(shè)置)。
CLR_PWD: 1=清除 PWD。SET_PWD: 1=設(shè)置新密碼為
PWDPWDS_LEN:定義以下密碼長度(以字節(jié)為單位)。在修改密碼的情況下,該字段包括舊密碼和新密碼的總長度。密碼長度不超過16個(gè)字節(jié)。在修改密碼的情況下,舊密碼和新密碼的總長度最多為32字節(jié)。
PASSWORD DATA:設(shè)置新密碼時(shí),包含新密碼。在修改密碼的情況下,它包含舊密碼和新密碼。
數(shù)據(jù)塊大小由主機(jī)在發(fā)送卡片鎖/解鎖命令之前定義。塊長度應(yīng)設(shè)置為大于或等于lock/unlock命令所需的數(shù)據(jù)結(jié)構(gòu)。
在下面的解釋中,通過CMD16更改塊大小并不是lock/unlock命令的強(qiáng)制要求。因?yàn)樵?a target="_blank">DDR50模式下,塊長度總是偶數(shù),所以CMD42的塊長度應(yīng)該總是四舍五入到一個(gè)偶數(shù)的大小。如果在CMD42之前使用CMD16來設(shè)置塊長度,它應(yīng)該總是指定一個(gè)偶數(shù)長度。
強(qiáng)制擦除
在用戶忘記密碼(PWD內(nèi)容)的情況下,可以擦除所有卡數(shù)據(jù)內(nèi)容以及PWD內(nèi)容。此操作稱為強(qiáng)制擦除。選擇一張卡(CMD7),如果之前沒有選擇的話。定義塊長度(CMD16)為1字節(jié)(8位卡鎖定/解鎖命令)。
發(fā)送卡片鎖/解鎖命令,并在數(shù)據(jù)線上發(fā)送相應(yīng)的一個(gè)字節(jié)的數(shù)據(jù)塊,包括16位CRC。數(shù)據(jù)塊應(yīng)該指示模式ERASE (ERASE位應(yīng)該是唯一設(shè)置的位)。
如果數(shù)據(jù)字段中沒有設(shè)置唯一的ERASE位,則在狀態(tài)寄存器中設(shè)置LOCK_UNLOCK_FAILED錯(cuò)誤位,并拒絕擦除請求。
如果該命令被接受,那么所有的卡片內(nèi)容將被擦除,包括PWD和PWD LEN寄存器內(nèi)容,鎖定的卡將被解鎖。在未鎖定的卡上強(qiáng)制擦除將失敗,并且在狀態(tài)寄存器中設(shè)置LOCK_UNLOCK_FAILED錯(cuò)誤位。
強(qiáng)制擦除鎖定卡
強(qiáng)制擦除與寫保護(hù)的關(guān)系如下表所示。強(qiáng)制擦除不會(huì)擦除安全區(qū)域。在擦除過程中,該卡保持鎖定狀態(tài),待所有用戶區(qū)擦除完成后,該卡變?yōu)榻怄i狀態(tài)。同樣,在執(zhí)行擦除時(shí),該卡應(yīng)保持“臨時(shí)寫保護(hù)”和“組寫保護(hù)”,并在所有用戶區(qū)擦除完成后清除“寫保護(hù)”。在擦除錯(cuò)誤發(fā)生的情況下,如果錯(cuò)誤扇區(qū)的數(shù)據(jù)被破壞,卡可以繼續(xù)強(qiáng)制擦除。
審核編輯 黃宇
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4533瀏覽量
87464 -
SD NAND
+關(guān)注
關(guān)注
0文章
93瀏覽量
1503
發(fā)布評論請先 登錄
什么是SD卡、TF卡寫保護(hù)?寫保護(hù)的常見原因

國產(chǎn)安路FPGA SD NAND FLASH 初步描述
瀚海微SD NAND之SD 協(xié)議(29)硬件接口

瀚海微SD NAND存儲(chǔ)功能描述(28)RCA Registers

瀚海微SD NAND存儲(chǔ)功能描述(26)CSD Registers

瀚海微SD NAND存儲(chǔ)功能描述(25)SD Registers

瀚海微SD NAND存儲(chǔ)功能描述(24)擦除超時(shí)計(jì)算

瀚海微SD NAND存儲(chǔ)功能描述(21)數(shù)據(jù)讀寫

瀚海微SD NAND存儲(chǔ)功能描述(18)命令類e

瀚海微SD NAND存儲(chǔ)功能描述(15)命令類b

瀚海微SD NAND存儲(chǔ)功能描述(14)命令類a

瀚海微SD NAND存儲(chǔ)功能描述(13)讀寫擦除超時(shí)

瀚海微SD NAND存儲(chǔ)功能描述(11)命令系統(tǒng)CMD8

瀚海微SD NAND存儲(chǔ)功能描述(9)切換功能

瀚海微SD NAND應(yīng)用之SD協(xié)議存儲(chǔ)功能描述2 初始化命令

評論