本章提供了长擦除的指导原则和计算擦除超时值的方法。
擦除单元速度类规范定义了一个新的管理单元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的擦除超时时间。
大面积擦除方法
多个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所指示的数据量,则不写入额外的数据。