0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瀚海微SD NAND应用存储功能描述(7)擦除和写保护

吕辉 来源:jf_40298777 作者:jf_40298777 2024-08-07 10:36 次阅读

多块写操作之前的预擦除设置

设置预擦除的写块数量(ACMD23)将使后续的多块写操作比不使用ACMD23的相同操作更快。主机将使用这个命令来定义在下一次写操作中要发送多少个写块。如果主机将在所有数据块发送到卡之前终止写操作(使用停止传输),则剩余写块的内容是未定义的(可以被擦除或仍然有旧数据)。

如果主机发送的写块数量超过ACMD23中定义的数量,卡将逐个擦除块(当接收到新数据时)。“Multiple block Write”操作完成后,该数值将复位为默认值1。建议在CMD25之前使用此命令,有些卡对于多写块操作会更快。

注意,如果主机想要使用预擦除特性,则应该在WRITE命令之前发送ACMD23。否则,在执行其他命令(例如:Security Application commands)时,可能会自动清除pre-erase-count。

发送写块数使用

Pipeline机制进行数据缓冲区管理的系统,在某些情况下,如果在多块写入操作中发生错误,则无法确定哪个块是最后一个被写入闪存的。卡将用写入良好的块的数量响应ACMD22。

擦掉

为了提高数据吞吐量,需要同时擦除多个写块。这些写块的识别是通过ERASE_WR_BLK_START (CMD32)、ERASE_WR_BLK_END (CMD33)命令完成的。

主机应该遵循以下命令顺序:ERASE WR_BLK_START、ERASE_WR_BLK_END和ERASE (CMD38)。

如果收到顺序错误的擦除(CMD38)或地址设置(CMD32, 33)命令,卡将在状态寄存器中设置ERASE_SEQ_ERROR位,并重置整个序列。如果收到乱序命令(SEND_STATUS除外),卡将在状态寄存器中设置ERASE_RESET状态位,重置擦除顺序,执行最后一条命令。

如果擦除范围包括写保护扇区,则保留写保护扇区,只擦除非保护扇区。应该设置状态寄存器中的WP_ERASE_SKIP状态位。地址设置命令中的地址字段是以字节为单位的写块地址。卡将忽略WRITE_BL_LEN(参见CSD)大小以下的所有LSB。

如上所述,对于块写入,卡将通过保持低DATo来指示擦除正在进行中。实际擦除时间可能相当长,并且主机可能发出CMD7来取消卡的选择或执行卡的断开,如上面的块写入部分所述。擦除操作后卡上的数据要么是“0”,要么是“1”,这取决于卡的供应商。

SCR寄存器位DATA_STAT_AFTER_ERASE(位55)定义它是'0'还是'1'。

写保护管理

SD存储卡支持以下三种写保护方式:

机械写保护开关(仅主机负责)、卡内部写保护(卡方责任)、密码保护卡锁操作。

卡的内部写保护(可选)

卡片数据可以防止擦除或写入。制造商或内容提供商可以通过在CSD中设置永久或临时写保护位,对整个卡进行永久写保护。对于通过在CSD中设置WP_GRP_ENABLE位来支持扇区组写保护的卡,可以保护部分数据(以CSD中指定的WP_GRP_SIZE扇区为单位),并且可以由应用程序更改写保护。

SET WRITE_PROT命令用来设置地址写保护组的写保护CLR_WRITE_PROT命令用于清除指定地址写保护组的写保护。SEND_WRITE_PROT命令类似于单个块读取命令。卡发送一个包含32个写保护位(代表从指定地址开始的32个写保护组)的数据块,后跟16个CRC位。写保护命令中的地址字段为组地址,单位为字节。该卡将忽略所有低于组大小的LSB。Password Card Lock保护将在下面的章节中介绍。

注意:SDHC和SDXC卡不支持写保护,也不响应写保护命令(CMD28、CMD29和CMD30)。

卡片锁定/解锁操作

一般密码保护功能使主机能够在提供密码的同时锁定卡片,稍后将用于解锁卡片。密码及其大小分别保存在128位PWD和8位PWD_LEN寄存器中。这些寄存器是非易失性的,因此电源周期不会擦除它们。

锁定卡响应(并执行)“基本”命令类(O类)、l ACMD41、CMD16和“锁定卡”命令类中的所有命令。因此,允许主机进行复位、初始化、选择、查询状态等操作,但不允许访问卡上的数据。如果之前设置过密码(PWD LEN值不是0),上电后卡将自动锁定。与现有的CSD寄存器写命令类似,lock/unlock命令只能在“传输状态”下使用。这意味着它不包括地址参数,卡必须在使用前进行选择。

card lock/unlock命令具有普通单块写命令的结构和总线事务类型。传输的数据块包括命令所需的所有信息(密码设置模式、PWD本身、卡锁/解锁等)。命令数据块的结构如下表所示。注意:物理规范版本2.00及以后的主机在发布CMD42时需要将保留位(Bit7-4)设置为0。

wKgZomay3WSALPWdAACPKCD9IiM812.png

ERASE: 1定义强制擦除操作。在字节0中,第3位将被设置为1(所有其他位将被设置为1)该命令的所有其他字节将被卡忽略。

LOCK/UNLOCK: 1=锁定卡片。0=解锁卡(注意,将此位与SET_PWD一起设置是有效的,但不允许与CLR_PWD一起设置)。

CLR_PWD: 1=清除 PWD。SET_PWD: 1=设置新密码为

PWDPWDS_LEN:定义以下密码长度(以字节为单位)。在修改密码的情况下,该字段包括旧密码和新密码的总长度。密码长度不超过16个字节。在修改密码的情况下,旧密码和新密码的总长度最多为32字节。

PASSWORD DATA:设置新密码时,包含新密码。在修改密码的情况下,它包含旧密码和新密码。

数据块大小由主机在发送卡片锁/解锁命令之前定义。块长度应设置为大于或等于lock/unlock命令所需的数据结构。

在下面的解释中,通过CMD16更改块大小并不是lock/unlock命令的强制要求。因为在DDR50模式下,块长度总是偶数,所以CMD42的块长度应该总是四舍五入到一个偶数的大小。如果在CMD42之前使用CMD16来设置块长度,它应该总是指定一个偶数长度。

强制擦除

在用户忘记密码(PWD内容)的情况下,可以擦除所有卡数据内容以及PWD内容。此操作称为强制擦除。选择一张卡(CMD7),如果之前没有选择的话。定义块长度(CMD16)为1字节(8位卡锁定/解锁命令)。

发送卡片锁/解锁命令,并在数据线上发送相应的一个字节的数据块,包括16位CRC。数据块应该指示模式ERASE (ERASE位应该是唯一设置的位)。

如果数据字段中没有设置唯一的ERASE位,则在状态寄存器中设置LOCK_UNLOCK_FAILED错误位,并拒绝擦除请求。

如果该命令被接受,那么所有的卡片内容将被擦除,包括PWD和PWD LEN寄存器内容,锁定的卡将被解锁。在未锁定的卡上强制擦除将失败,并且在状态寄存器中设置LOCK_UNLOCK_FAILED错误位。

强制擦除锁定卡

强制擦除与写保护的关系如下表所示。强制擦除不会擦除安全区域。在擦除过程中,该卡保持锁定状态,待所有用户区擦除完成后,该卡变为解锁状态。同样,在执行擦除时,该卡应保持“临时写保护”和“组写保护”,并在所有用户区擦除完成后清除“写保护”。在擦除错误发生的情况下,如果错误扇区的数据被破坏,卡可以继续强制擦除。

wKgZomay3XiAerttAACPlMOJZ_E615.png

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4110

    浏览量

    85234
  • SD NAND
    +关注

    关注

    0

    文章

    57

    浏览量

    1156
收藏 人收藏

    评论

    相关推荐

    瀚海SD NAND存储功能描述(24)擦除超时计算

    擦除单元速度类规范定义了一个新的管理单元AU(分配单元)。擦除超时计算被定义为AU的基础。SD存储卡支持块擦除,但
    的头像 发表于 09-07 10:58 113次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(24)<b class='flag-5'>擦除</b>超时计算

    瀚海SD NAND存储功能描述(22)Timing Values

    Timing Values 块读取Gap 在读取操作过程中,由于主机缓冲区已满,主机需要通过停止SDCLK来停止从卡中读取数据的输出。考虑到使用采样时钟调优方法,主机需要在块间隙停止SDCLK,而不是在数据传输过程中停止SDCLK。 由于数据的变化,DAT[3:0]应该被认为是与SDCLK异步的。因此,通过检测数据块的结束位来停止SDCLK需要很少的时钟,因为需要同步。最小块间隙时钟(Nac)定义为8,以便主机可以在卡开始输出下一个数据块之前停止SDcLK。 下图给出了在块间隙处停止
    的头像 发表于 09-04 11:20 79次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(22)Timing Values

    瀚海SD NAND存储功能描述(21)数据读写

    数据读取 注:数据线表示数据总线(1位或4位)。 单块读取 主机选择一张卡进行CMD7的数据读取操作,并设置CMD16面向块的数据传输的有效块长度。读操作的基本总线时序如下图所示。该序列从单个块读取
    的头像 发表于 09-03 10:14 132次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(21)数据读写

    瀚海SD NAND存储功能描述(18)命令类e

    SD存储SD 状态 SD状态包含与SD存储卡专有特性相关的状态位,并且可能用于未来特定应用程序
    的头像 发表于 08-26 10:00 142次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(18)命令类e

    瀚海SD NAND存储功能描述(17)命令类d

    以“x”表示的值表示变量项。除了R3类型(见下文)之外的所有响应都受CRC保护。每个命令码字以结束位(总是1)结束。 对于SD存储卡有五种类型的响应。SDIO卡支持额外的R4和R5响应类型。有关SDIOl命令和响应的详细信息,请
    的头像 发表于 08-23 10:40 145次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(17)命令类d

    瀚海SD NAND存储功能描述(15)命令类b

    节单位地址,SDHC和SDXC卡(CCS=1)使用块单位地址(512字节单位)。 1) 32个写保护位(代表从指定地址开始的32个写保护组)后跟16个cRC位,通过数据线以有效载荷格式传输。保护位的最后一位
    的头像 发表于 08-20 21:18 559次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(15)命令类b

    瀚海SD NAND存储功能描述(14)命令类a

    的类总是被设置为1。具有特定功能的卡可能需要支持一些可选命令。 例如,Combo Card应该支持CMD5。等级0、2、4、5和8是强制性的,所有SD存储卡都应支持。除CMD40外,SDHC和SDXC是强制性的。其他类是可选的。
    的头像 发表于 08-19 10:26 162次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(14)命令类a

    瀚海SD NAND存储功能描述(13)读写擦除超时

    读、写、擦除超时条件 如果主机在给定的超时时间内没有收到任何响应,则应假定该卡不会响应,并尝试恢复(例如重置卡,电源周期,拒绝等)。 Read 对于标准容量SD存储卡,读取操作的超时条件发生的时间
    的头像 发表于 08-18 13:43 135次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(13)读写<b class='flag-5'>擦除</b>超时

    瀚海SD NAND存储功能描述(11)命令系统CMD8

    高速模式(25mb /秒接口速度) 虽然Rev 1.01 SD存储卡支持高达12.5 MB/秒的接口速度,但为了支持主机不断增长的性能需求和内存大小持续增长,25 MB/秒的速度是必要的。为了实现
    的头像 发表于 08-12 16:03 183次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(11)命令系统CMD8

    瀚海SD NAND存储功能描述(9)切换功能

    开关功能状态 开关功能状态是返回的数据块,其中包含功能和当前消耗信息。块长度预定义为512位,不需要使用SET_BLK_LEN命令。状态数据结构如下表所示。响应的状态位包含功能组的信息
    的头像 发表于 08-09 10:15 149次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(9)切换<b class='flag-5'>功能</b>

    瀚海SD NAND应用存储功能描述(6)读写数据

    宽总线选择/取消 选择宽总线(4位总线宽度)操作模式可以使用AcMD6选择/取消选择。默认总线上电或GO IDLE (CMDO)后的宽度为1位总线宽度。 要改变母线宽度需要满足两个条件: a)卡处于“传输状态”。 b)卡未锁定被锁定的卡将响应ACMD6为非法命令。 2GB卡 要制作2GByte卡,最大块长度(READ BL LEN- write BL LEN)应设置为1024字节。但是,CMD16设置的块长度最多为512字节,以保持与512字节最大块长度卡(小于等于2GByte卡)的一致性。 数据读取 当没有数据传输时,通过上拉使数
    的头像 发表于 08-06 14:21 194次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>应用<b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(6)读写数据

    瀚海SD NAND应用之SD协议存储功能描述2 初始化命令

    ACMD41的功能;争论中的HCS和回应中的CCS(卡容量状态)。 HCS被卡忽略,卡对CMD8没有反应。 但是,如果卡没有返回CMD8响应,主机应该将HCS设置为0。标准容量SD存储卡忽略HCS。如果
    的头像 发表于 07-22 10:54 207次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>应用之<b class='flag-5'>SD</b>协议<b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>2 初始化命令

    如何在Micro SD卡上设置写保护

    我们了解客户对Micro SD写保护的疑问。在这篇文章中,拓优星辰将详细解释如何在Micro SD卡上设置写保护,以及相关的步骤和注意事项。
    的头像 发表于 07-11 16:37 644次阅读
    如何在Micro <b class='flag-5'>SD</b>卡上设置<b class='flag-5'>写保护</b>?

    SD NAND:儿童玩具的多功能存储神器

    儿童玩具的发展一直在不断创新,而SD NAND作为一种多功能存储器,为儿童玩具带来了全新的应用体验。无论是音乐和故事播放器,还是教育游戏和应用,甚至是图像和视频
    的头像 发表于 01-31 16:47 472次阅读
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>:儿童玩具的多<b class='flag-5'>功能</b><b class='flag-5'>存储</b>神器

    什么是SD NAND存储芯片?

    前言   大家好,我们一般在STM32项目开发中或者在其他嵌入式开发中,经常会用到存储芯片存储数据。今天我和大家来介绍一款存储芯片,我这里采用(雷龙) CS创世 SD
    发表于 01-05 17:54