EMMC5.1协议讲解(emmc的寄存器)

7  EMMC的寄存器

在EMMC接口中定义了七个寄存器:OCR、CID、CSD、EXT_CSD、RCA、DSR和QSR。

这些寄存器只能通过相应的命令进行访问(参见6.10章节)。OCR、CID、CSD和QSR寄存器携带EMMC或者数据的对应信息,而RCA和DSR寄存器用于存储实际配置参数的配置寄存器。EXT_CSD寄存器既带有EMMC特定信息,又携带实际配置参数。

7.1 COR 寄存器

32位操作条件寄存器(OCR)存储着EMMC的VDD电压数据和访问模式。此外,该寄存器包括一个状态信息位。如果EMMC上电过程已经完成,则设置此状态位。所有EMMC都应包括OCR寄存器。 

表74 OCR 寄存器的定义

EMMC的支持电压范围编码如表74所示。只要EMMC处于繁忙操作状态中,就会将OCR寄存器的第31bit设置为0低电平。

如在6.4.4章节中的描述的“线与”操作,如果至少有一个EMMC处于忙碌状态的话,该位仍为低电平。

7.2  CID 寄存器

设备识别(CID)寄存器宽度为128位。包含了EMMC识别阶段(EMMC协议指定了阶段)中使用的设备识别信息。每个单独的闪存或I/O设备都会有一个唯一对应的识别号码。每种类型的EMMC设备都应该有一个唯一的识别号码。表75列出了这些标识符。CID寄存器的组成结构在本节中定义。

表75 CID 寄存器组成格式

7.2.1  MID字段[127:120]

MID字段由一个8位的二进制数字组成,用于识别EMMC的制造商。其中MID号码由JEDEC控制、定义和分配给EMMC制造商,以确保CID寄存器的信息具有唯一性。

7.2.2 CBX字段[113:112]

CBX表示EMMC的封装类型

表76 设备的封装类型

7.2.3 OID字段 [111:104]

OID是一个8位的二进制数字,用于识别EMMC的OEM(原始设备制造商)和/或设备内容(当用作分发介质时,出现在ROM或FLASH设备上)。OID号码由JEDEC控制、定义和分配给EMMC制造商,以确保CID寄存器的唯一性

7.2.4  PNM字段[55:48]

产品名称PNM是一个6个ASCII字符长的字符串。

7.2.5  产品迭代版本 [55:48]

产品修订版本PRV由两个二进制编码十进制(BCD)数字组成,每个数字有四个位,表示“n.m”修订号。其中,“n”是最高位的半字节,“m”是最低位的半字节。例如,产品修订版本“6.2”的PRV二进制值字段为:0110 0010。

7.2.6  产品序列号[47:16]

产品序列号是一个无符号的32位二进制数

7.2.7 MDT [15:8] 生产日期

制造日期MDT由两个十六进制数字组成,每个数字有四个位,表示两个数字的日期代码m/y;其中“m”字段是最高位的半字节,表示月份代码,1表示一月;“y”字段是最低位的半字节,表示年份代码,0表示1997年。例如,对于生产日期为“2000年4月”的MDT字段的二进制值将为:0100 0011。

对于4.41及更高版本的EMMC,通过EXT_CSD_REV [192]中的大于4的值来表示,4位的“y”字段在2012年之后将滚动,因此y = 0将用于2013年。请参见表77,了解特定e•MMC版本的有效y值列表。

表77 参数y表示的有效值

7.2.8  CRC校验和[7:1]

CRC7校验和(7位),这是根据0计算的CID内容的校验和。

7.3 设备特定数据(CSD)寄存器

设备特定数据(CSD)寄存器提供有关如何访问设备内容的信息。同时也定义了数据格式、纠错类型、最大数据访问时间、数据传输速度、是否可以使用DSR寄存器等内容。寄存器的可编程部分(以下标有W或E的条目)可以通过host 下发 CMD27更改。下面的CSD注册表条目类型编码如下:

R: 只读。

W: 一次可编程且不可读。

R/W: 一次可编程且可读。

W/E: 多次可写,断电后保留值,硬件复位断言和任何CMD0复位后不可读。

R/W/E: 多次可写,断电后保留值,硬件复位断言和任何CMD0复位后可读。

R/W/C_P: 在断电和硬件复位断言后清除值后可写(该值不被CMD0复位清除),并且可读。

R/W/E_P: 多次可写,断电后重置值,硬件复位断言和任何CMD0复位后可读。

W/E_P: 多次可写,断电后重置值,硬件复位断言和任何CMD0复位后不可读。

如下部分描述了CSD寄存器字段和相关数据类型。除非另有明确定义,所有位串都表示为从左边第一位开始的二进制编码数字。

7.3.1 CSD寄存器的结构[127:126]

表79 CSD寄存器结构

7.3.2 SPEC_VERS [125:122]

SPEC_VERS字段定义了EMMC支持的标准版本。

表80 系统规范版本

7.3.3 TAAC [119:112]

TAAC定义数据访问时间的异步部分。

/* TAAC是e•MMC卡CSD寄存器中的一个字段,它定义了数据访问时间的异步部分。TAAC的单位是1/4个时钟周期,它表示数据从存储芯片中读取并传输到控制器的时间。TAAC的值越小,设备的读写速度就越快。*/

表81 TAAC 访问时间定义

7.3.4 NSAC [111:104]

NSAC定义了数据访问时间时钟相关因素的典型情况。NSAC的单位是100个时钟周期。因此,数据访问时间时钟相关部分的最大值为25.5k个时钟周期。

根据表71中的表达式,总的访问时间NAC是基于TAAC和NSAC计算的。它必须由host根据实际的时钟速率计算。读取访问时间应该被理解为数据块或流的第一个数据位到来前的典型延迟。

7.3.5 TRAN_SPEED [103:96] 传输速度

表82定义了非高速模式下的时钟频率。对于支持标准版本为v4.0、v4.1和v4.2的EMMC,该值应为20 MHz (0x2A)。对于支持v4.3版本的设备,该值应为26 MHz (0x32)。

表82 总线的最大时钟频率定义

7.3.6 CCC [95:84]

EMMC命令集被分为子集(命令类)。设备命令类寄存器CCC定义了此EMMC支持的命令类。CCC位中的“1”表示支持相应的命令类。有关命令类定义,请参见表83。

表83 支持的命令等级

7.3.7 READ_BL_LEN [83:80]

数据块长度为2的READ_BL_LEN次方。因此块长度可能在1B、2B、4B...16kB的范围内。(详情请参见6.13节)。

注意:所有EMMC都必须支持512B为单位的读取访问,并且在上电或软件复位后默认为数据块长度为512B模式。

此寄存器的目的是指示支持的最大读取数据块长度:

表84 数据块长度

7.3.8 READ_BL_PARTIAL [79]

READ_BL_PARTIAL定义块读命令在容量为2GB以内的EMMC中可以使用部分块大小。(使用字节访问模式):

READ_BL_PARTIAL=0表示只能使用512B和READ_BL_LEN块大小进行块定向数据传输。

READ_BL_PARTIAL=1表示也可以使用较小的块。最小块大小将等于最小可寻址单元(一个字节)。

对于容量大于2GB的EMMC(使用扇区访问模式):

READ_BL_PARTIAL=0表示仅可以使用512B和READ_BL_LEN块大小进行块定向数据传输。

READ_BL_PARTIAL=1表示可以使用比READ_BL_LEN指示的更小的块。最小块大小将等于最小可寻址单元,即一个扇区(512B)。

7.3.9 WRITE_BLK_MISALIGN [78]

WRITE_BLK_MISALIGN [78] 指的是正在写入的块的起始地址与存储器物理块大小的对齐方式。

WRITE_BLK_MISALIGN定义了一个命令要写入的数据块是否可以分布在存储设备的多个物理块上。存储块的大小由WRITE_BL_LEN定义。

WRITE_BLK_MISALIGN=0表示跨越物理块边界是无效的。

WRITE_BLK_MISALIGN=1表示允许跨越物理块边界。

7.3.10 READ_BLK_MISALIGN [77]

READ_BLK_MISALIGN [77] 指的是正在读取的块的起始地址与存储器物理块大小的对齐方式。

READ_BLK_MISALIGN定义了一个命令要读取的数据块是否可以分布在存储设备的多个物理块上。存储块的大小由READ_BL_LEN定义。

READ_BLK_MISALIGN=0表示跨越物理块边界是无效的。

READ_BLK_MISALIGN=1表示允许跨越物理块边界。

7.3.11 DSR_IMP [76]

DSR_IMP定义了可配置的驱动器阶段是否集成在设备上。如果需要设置,则还需要实现一个驱动器阶段寄存器(DSR)。(请参见7.6节)

7.3.12 C_SIZE [73:62]

C_SIZE参数用于计算2GB以内的EMMC容量。有关计算大于2GB密度的详细信息,请参见7.4.52节中的SEC_COUNT [215:212]字段。当EMMC容量大于2GB时,应设置为此寄存器的最大可能值(0xFFF)。此参数用于计算设备容量。

EMMC的存储容量可以通过以下方式从C_SIZE、C_SIZE_MULT和READ_BL_LEN这三个参数计算后得出:

存储容量 = BLOCKNR * BLOCK_LEN,其中 BLOCKNR = (C_SIZE+1) * MULT,MULT = 2的(C_SIZE_MULT+2)次方(C_SIZE_MULT < 8),BLOCK_LEN = 2的READ_BL_LEN次方(READ_BL_LEN < 12)。

因此,可以编码的EMMC最大容量为4096 * 512 * 2048 = 4 GB。

示例:一个BLOCK_LEN为512,且容量为4MBytes的EMMC可以通过C_SIZE_MULT = 0和C_SIZE = 2047进行编码。当host执行分区配置时,EMMC将重新计算C_SIZE值,该值可以指示分区之后留给用户数据区域的大小。

7.3.13 VDD_R_CURR_MIN [61:59] and VDD_W_CURR_MIN [55:53]

VDD_R_CURR_MIN [61:59] 和 VDD_W_CURR_MIN [55:53] 是指设备在读取和写入操作期间所需的最小VDD电流。

这些参数用于指定EMMC在读取和写入操作期间所需的最小电流。host应该确保所提供的电源可以提供足够的电流以支持EMMC的操作。

表86 VDD电压最小时的电流值

当EMMC不在高速模式时,这些字段中的参数值是有效的。当EMMC处其中一种高速模式时,当前功耗由host从ext_csd寄存器中定义的PWR_ff_vvv字段的电源类别中进行选择。

7.3.15 C_SIZE_MULT [49:47] 用于计算EMMC容量

该参数用于编码计算EMMC总容量(参考“C_SIZE”)的因子MULT。

因子MULT定义为2的(C_SIZE_MULT+2)次方。

如果EMMC的容量大于2GB,则应将最大可能值设置该寄存器的参数0x7。

/*

  • 000b: MULT = 2 (C_SIZE_MULT = 0)
  • 001b: MULT = 4 (C_SIZE_MULT = 1)
  • 010b: MULT = 8 (C_SIZE_MULT = 2)
  • 011b: MULT = 16 (C_SIZE_MULT = 3)
  • 100b: MULT = 32 (C_SIZE_MULT = 4)
  • 101b: MULT = 64 (C_SIZE_MULT = 5)
  • 110b: MULT = 128 (C_SIZE_MULT = 6)
  • 111b: MULT = 256 (C_SIZE_MULT = 7)

*/

7.3.16 ERASE_GRP_SIZE [46:42]

该寄存器的内容是一个5位二进制编码值,用于计算设备的可擦除单元的大小。可擦除单元(也称为擦除组)的大小由CSD的ERASE_GRP_SIZE和ERASE_GRP_MULT条目确定,使用以下方程式:可擦除单元的大小=(ERASE_GRP_SIZE + 1)*(ERASE_GRP_MULT + 1)。该大小以最小的可写块数给出,可以在单个擦除命令中擦除。注意:对于支持增强擦除功能的设备,不使用ERASE_GRP_SIZE字段。

/*

  • 00000b: 1 block (default)
  • 00001b: 2 blocks
  • 00010b: 4 blocks
  • 00011b: 8 blocks
  • 00100b: 16 blocks
  • 00101b: 32 blocks
  • 00110b: 64 blocks
  • 00111b: 128 blocks
  • 01000b: 256 blocks
  • 01001b: 512 blocks
  • 01010b: 1024 blocks
  • 01011b: 2048 blocks
  • 01100b: 4096 blocks
  • 01101b: 8192 blocks
  • 01110b: 16384 blocks
  • 01111b: 32768 blocks

*/

7.3.17 ERASE_GRP_MULT [41:37]

ERASE_GRP_MULT是一个5位二进制编码值,用于计算设备可擦除单元的大小。请参见7.3.16章节以获取详细说明。

7.3.18 WP_GRP_SIZE [36:32]

WP_GRP_SIZE是写保护区域的最小大小。该寄存器的内容是一个5位二进制编码值,定义可以进行写保护的擦除组数量。实际大小通过将此数字增加一来计算。值为零表示1个擦除组,值为31表示32个擦除组。注意:对于不支持写保护的设备,不使用WP_GRP_SIZE字段。

7.3.19 WP_GRP_ENABLE [31]

WP_GRP_ENABLE指示是否可以对区域进行写保护。值“0”表示无法进行组写保护。

7.3.20 DEFAULT_ECC [30:29]

DEFAULT_ECC由设备制造商设置。它定义了推荐使用的ECC代码。该字段的定义与后面描述的ECC字段相同。

7.3.21 R2W_FACTOR [28:26]

R2W_FACTOR定义了典型的块编程时间与读取访问时间的倍数。表89定义了该字段的格式。

表89 R2W_参数

7.3.22 WRITE_BL_LEN [25:22]

WRITE_BL_LEN定义了写操作的块长度。有关字段编码,请参见READ_BL_LEN。对于所有EMMC,必须支持512B写访问,并且必须在EMMC上电后或软件复位后默认处于512B块长度模式。该寄存器的目的是指示支持的最大写数据块长度。

7.3.23 WRITE_BL_PARTIAL[21]

WRITE_BL_PARTIAL 定义了块写命令中是否可以使用部分块大小写入。

在最大容量为2GB 的EMMC(支持字节访问模式)下。

WRITE_BL_PARTIAL=’0’ 表示只有 512B 和 WRITE_BL_LEN 定义的块大小可用于块为单位的的数据写入。

WRITE_BL_PARTIAL=’1’ 表示较小的块也可以使用。最小块单位为一个字节。

大于2GB的EMMC(支持扇区访问模式):

WRITE_BL_PARTIAL=’0’ 表示只有 512B 和 WRITE_BL_LEN 块大小可用于块导向数据写入。

WRITE_BL_PARTIAL=’1’ 表示也可以使用较小的块。最小块等于最小可寻址单元,即一个扇区(512B)。

简单来说,WRITE_BL_PARTIAL 是一个设置参数,用于确定写入数据的最小块单位。

CSD寄存器中的这个字段指示是否支持内容保护应用程序。支持实现内容保护应用程序的 EMMC将设置此位为“1”。

7.3.25 FILE_FORMAT_GRP [15]

FILE_FORMAT_GRP 指示所选的文件格式组。对于 ROM中的此字段为只读格式。该字段的使用方法在表 90 中说明(请参见 FILE_FORMAT)。

7.3.26 COPY [14]

COPY字段定义内容是否为原始内容(=‘0’)还是已复制内容(=‘1’)。对于销售给最终消费者的 OTP 和 MTP 设备,COPY 位设置为“1”,表示该设备内容是备用。COPY 位是一次可编程位。

7.3.27 PERM_WRITE_PROTECT [13]

该寄存器永久性地保护整个EMMC(引导、RPMB 和所有用户区分区)内容免受覆盖或擦除(设备的所有数据写入和擦除命令都被永久性地禁用)。默认值为“0”,即不进行永久写保护。

EMMC的整体永久写保护优先级高于当前在EMMC上启用的任何其他写保护机制。通过设置 PERM_WRITE_PROTECT(CSD[13]) 可以永久性地保护EMMC,但这种功能可以通过设置 CD_PERM_WP_DIS(EXT_CSD[171] 的第 6 位) 来禁用。如果设置了 CD_PERM_WP_DIS 并且host尝试设置 PERM_WRITE_PROTECT(CSD[13]),则操作将失败,并在状态寄存器中设置 ERROR(第 19 位)错误位。

7.3.28 TMP_WRITE_PROTECT [12]

该位指定了暂时保护整个EMMC中的数据免受覆盖或擦除(该EMMC的所有写入和擦除命令都被暂时禁用)。

该位可以设置和复位。默认值为“0”,即还没有进行写保护。

临时写保护仅适用于EMMC上未启用其他写保护机制(密码、永久性或上电)的写保护组。

当 SECURE_WP_MASK 被设置时,无论 TMP_WRITE_PROTECT[12] 如何,用户区域都是可更新的。

7.3.29 FILE_FORMAT [11:10]

FILE_FORMAT 指示EMMC上的文件格式。对于 ROM,此字段为只读。定义了以下格式:

表90 文件格式

7.3.30 ECC [9:8]

ECC 定义用于在EMMC上存储数据的 ECC 编码。host(或应用程序)通过此字段对用户数据进行解码。表 91 定义了字段格式。

表91 ECC 类型

7.3.31 CRC [7:1] CRC 校验

CRC 字段携带 CSD 内容的校验和。它根据 0 进行计算。对CSD 寄存器的任何修改动作,host都必须重新计算校验和。默认值对应于初始 CSD 内容。表 92 列出了 CSD 条目和命令类之间的对应关系。‘+’条目表示 CSD 字段会影响相关命令类的命令。

表92 CSD寄存器的命令种类

7.4 Extended CSD register 外扩寄存器

外扩CSD寄存器定义了EMMC的属性和需要设定的工作模式。其长度为512字节。

最高位有效的320字节表示的是属性段,用于定义EMMC的功能,不可以被host侧修改。较低的192字节是模式段,用于定义EMMC正在工作的配置条件。这些模式可以通过SWITCH命令由host进行更改。

多字节字段按小端字节顺序进行解释。

R:只读。

W:一次可编程且不可读。

R/W:一次可编程且可读。

W/E:多次可写,断电、硬件复位断言和任何CMD0复位后保留值,不可读。

R/W/E:多次可写,断电、硬件复位断言和任何CMD0复位后保留值,可读。

R/W/C_P:在断电和硬件/重置断言清除值后可写(该值不会被CMD0重置清除),可读。

R/W/E_P:多次可写,断电、硬件复位断言和任何CMD0复位后重置值,可读。

W/E_P:多次可写,断电、硬件复位断言和任何CMD0复位后重置值,不可读。

表93 外扩寄存器(续表)

表93 外扩寄存器(续表)

表93 外扩寄存器(续表)

表93 外扩寄存器(续表)

表93 外扩寄存器(续表)

7.4.1 EXT_SECURITY_ERR [505] 外扩寄存器的安全错误位

/EXT_SECURITY_ERR指的是外部安全错误位,通常是指在SD卡或其他嵌入式设备中,外部安全措施被破坏或者被攻击,导致EMMC系统无法正常工作或者数据被泄露时需要报错的字节。*/

该字段是一个只读字段,通过该字段设备向主机指示与扩展安全协议使用相关的扩展安全错误(如果EXT_CSD中的异常事件状态字段的Bit4,即EXTENDED_SECURITY_FAILURE被设置,则应读取此字节)。给定的清除条件后将清除掉错误位。

表94 外扩寄存器的字节详细描述

7.4.2 S_CMD_SET [504] 命令集合

该字段定义EMMC支持的命令集。

表95 EMMC支持的命令集合

7.4.3 HPI_FEATURES [503]

/HPI_FEATURES [503]是指SD卡或其他嵌入式设备中的一个寄存器,用于定义主机控制器与设备之间的高速总线协议功能。/

该字段定义EMMC支持的命令集。

表96 高速总线接口功能

位[7:2]:保留

位[1]:HPI_IMPLEMENTATION

0x0:基于CMD13的HPI机制实现

0x1:基于CMD12的HPI机制实现

位[0]:HPI_SUPPORT

0x0:已过期不用

0x1:支持HPI机制(默认)

7.4.4 BKOPS_SUPPORT [502]

/ BKOPS_SUPPORT [502]是指SD卡或其他嵌入式设备中的一个寄存器,用于指示设备是否支持Background Operation (BKOPS)命令。BKOPS命令用于在设备空闲时执行后台操作,例如垃圾回收、坏块管理等。*/

该字段指示EMMC是否支持后台操作功能。

图97 支持的后台操作功能

位[7:1]:保留

位[0]:SUPPORTED

0x0:已过时

0x1:支持后台操作。支持BKOPS_STATUS、BKOPS_EN、BKOPS_START和URGENT_BKOPS字段(默认)。

7.4.5 MAX_PACKED_READS [501]

MAX_PACKED_READS [501]是指SD卡或其他嵌入式设备中的一个寄存器,用于指示设备支持的最大连续读取数据块的数量。这是为了提高读取性能而设计的,减少了主机与设备之间的通信开销。

该字段描述了可以包含在连续读取命令中的最大命令数量。这是为了提高读取性能而设计的,减少了host与EMMC之间的通信开销。该字段的强制最小值为5(MAX_PACKED_READS应为5或更高)。

7.4.6 MAX_PACKED_WRITES [500]

MAX_PACKED_WRITES [500]是指SD卡或其他嵌入式设备中的一个寄存器,用于指示设备支持的最大连续写入数据块的数量。这是为了提高写入性能而设计的,减少了host与EMMC之间的通信开销。

该字段描述了可以包含在连续写入命令中的最大命令数量。这是为了提高写入性能而设计的,减少了host与EMMC之间的通信开销。该字段的强制最小值为3(MAX_PACKED_WRITES应为3或更高)。

7.4.7 DATA_TAG_SUPPORT [499]

指SD卡或其他嵌入式设备中的一个寄存器,用于指示设备是否支持数据标签。数据标签是一种用于标识数据块的机制,可以用于管理数据块的顺序和完整性。

该字段指示EMMC是否支持数据标签机制功能。

位[7:1]:保留

位[0]:SYSTEM_DATA_TAG_SUPPORT

0x0:不支持系统数据标签机制(默认)

0x1:支持系统数据标签机制

7.4.8 TAG_UNIT_SIZE [498]

TAG_UNIT_SIZE是指SD卡或其他嵌入式设备中的一个参数,用于指示数据标签的大小。数据标签是一种用于标识数据块的机制,可以用于管理数据块的顺序和完整性。TAG_UNIT_SIZE定义了每个数据标签的大小,以字节为单位。

该字段用于由host计算Tag Unit的大小(以字节为单位)。

Tag Unit大小=2^TAG_UNIT_SIZE x 扇区大小

该参数可覆盖的范围为:

- 扇区大小为512字节时,范围从512字节到128K 字节

- 扇区大小为4K字节时,范围从4K字节到1M 字节

7.4.9 TAG_RES_SIZE [497]

是指SD卡或其他嵌入式设备中的一个寄存器,用于指示数据标签保留区域的大小。数据标签是一种用于标识数据块的机制,可以用于管理数据块的顺序和完整性。在数据标签中,一部分用于标记数据块,另一部分用于存储保留数据。TAG_RES_SIZE定义了保留数据的大小,以字节为单位。

该字段用于通知host,EMMC通过标记机制分配系统数据的最大资源数量,单位为字节:

系统数据标记资源大小 = [(N*标记单元大小) * 2

TAG_RES_SIZE]/2^10

(N * 标记单元大小)表示EMMC的标记单元大小容量

有效的TAG_RES_SIZE值范围为0到6;范围在7到0xFF的值被保留。

该公式涵盖了EMMC容量的约0.1%到6.25%的范围。

7.4.10 CONTEXT_CAPABILITIES [496]

CONTEXT_CAPABILITIES [496] 表示上下文能力,是一个协议中的字段。它描述了设备的能力和限制,包括支持的特性、数据传输速率、最大传输单元大小等。通常用于设备之间的通信和交互,以确保它们可以相互理解和协调。

表98 上下文的管理能力

MAX_CONTEXT_ID是上下文中可用的最高上下文ID。该字段的强制最小值是默认ID#0加5(MAX_CONTEXT_ID必须为5或更高)。

LARGE_UNIT_MAX_MULTIPLIER_M1是可为大单元上下文配置的最高乘数减一。大单元上下文的乘数范围可以配置为:

1≤乘数≤(LARGE_UNIT_MAX_MULTIPLIER_M1 + 1)

7.4.11 LARGE_UNIT_SIZE_M1 [495] 大单元容量

LARGE_UNIT_SIZE_M1 [495]是一个协议中的字段,用于描述大单元(Large Unit)上下文的大小。它表示可用于大单元上下文的最大字节数,减去1(即LARGE_UNIT_SIZE_M1 + 1为可用的最大字节数)。

大单元上下文是一种特殊类型的上下文,用于处理较大的数据块。在这种上下文中,传输的数据被分成多个单元,每个单元的大小由LARGE_UNIT_SIZE_M1定义。通常,大单元上下文用于需要高传输速率和低延迟的场景,例如流媒体传输。

该字段描述了大单元(Large Unit)的大小,减去1。具体地说,大单元的大小可以通过以下公式计算:

Large Unit size = 1MB * (LARGE_UNIT_SIZE_M1 + 1)

其中,1MB表示1兆字节,LARGE_UNIT_SIZE_M1是协议中定义的字段,表示可用于大单元上下文的最大字节数减1。因此,通过该公式可以计算出大单元上下文中可用的最大字节数。

7.4.12 EXT_SUPPORT [494] 外扩功能

EXT_SUPPORT [494] 是一个协议中的字段,用于描述设备是否支持协议的扩展功能。该字段是一个位域(bit field),每个位表示一种扩展功能的支持情况。

具体来说,该字段包括以下位:

- Bit 0: 表示设备是否支持大单元(Large Unit)上下文;

- Bit 1: 表示设备是否支持小单元(Small Unit)上下文;

- Bit 2-7: 保留位,未定义。

如果一个位被设置为1,则表示EMMC支持对应的扩展功能;如果被设置为0,则表示EMMC不支持。通过该字段,EMMC之间可以协商和确定协议的扩展功能,以满足特定的通信需求。

该字段描述了扩展分区属性的支持情况。每个位表示一种扩展分区属性类型的支持情况,如果一个位被设置为1,则表示EMMC支持对应的扩展分区属性类型;如果被设置为0,则表示EMMC不支持。

通常,扩展分区属性用于描述存储介质的特定属性,例如坏块管理、数据保护等。在协议中,该字段的位定义可能会有所不同,具体取决于协议的版本和实现。在本规范中,该字段的第0位和第1位被设置为1,表示EMMC支持对应的扩展分区属性类型。

7.4.13 SUPPORTED_MODES [493] 支持的模式

位[0]:“0”EMMC不支持FFU。 “1”EMMC支持FFU。

位[1]:“0”EMMC不支持供应商特定模式(VSM)。 “1”EMMC支持供应商特定模式。

表100 支持的模式

7.4.14 FFU_FEATURES [492] FFU 功能

FFU 功能

SUPPORTED_MODE_OPERATION_CODES:

· ‘0’ - EMMC不支持MODE_OPERATION_CODES字段

· ‘1’ - EMMC支持MODE_OPERATION_CODES字段

7.4.15 OPERATION_CODES_TIMEOUT [491]

此字段表示EMMC在执行操作代码时的超时时间,以毫秒为单位。如果EMMC无法执行操作代码,则此字段应设置为零。

该字段表示在将值设置为MODE_OPERATION_CODES字段时,SWITCH命令(CMD6)的最大超时时间。

计算最大超时值的公式为:

操作码超时 = 100us * 2 ^ OPERATION_CODES_TIMEOUT

定义的最大寄存器值为0x17,相当于838.86秒的超时时间。值在0x18和0xFF之间的保留。

表102 定义操作超时的参数值

7.4.16 FFU_ARG [490-487] FFU设置的参数

使用此字段,EMMC向host报告host应设置处于FFU模式下读写命令参数的值。

7.4.17 BARRIER_SUPPORT [486]

此字段指示EMMC是否支持障碍命令(CMD38)和障碍解除命令(CMD38),以及EMMC是否在执行这些命令时执行了内部缓冲区清除。

- ‘0’ – Device does not support barrier commands.

- ‘1’ – Device supports barrier commands and performs internal buffer clear upon executing them.

如果EMMC不支持障碍命令,则在执行这些命令时EMMC会选择忽略它们。

该字段指示设备是否支持障碍命令。值0x00表示设备不支持障碍命令,值0x01表示设备支持障碍命令。所有其他值均为保留值。

7.4.18 CMDQ_SUPPORT [308] 是否支持CMDQ功能

此字段指示EMMC是否支持命令队列(CMDQ)功能。

- ‘0’ – Device does not support CMDQ.

- ‘1’ – Device supports CMDQ.

如果EMMC不支持CMDQ,则在尝试使用CMDQ时,EMMC将返回错误。

位编码:

[7:1]:保留

[0]:命令队列支持:(0:不支持命令队列 1:支持命令队列)

7.4.19 CMDQ_DEPTH [307] CMDQ功能队列的深度

此字段用于计算EMMC支持的队列深度。标准允许的最大深度为32。允许的任务ID范围是0到N。

例如,如果N = 0x5,则队列深度为0x6,有效的任务ID为0、1、2、3、4、5。

位编码:

[7:5]:保留

[4:0]:N,用于计算EMMC中任务队列的队列深度的参数。

队列深度= N + 1。

7.4.20 NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED [305-302]

这个字段指示固件升级期间成功编程的扇区数。它仅在固件升级期间使用,并且在成功完成固件升级后被清除。它是一个4位十六进制数,表示成功编程的扇区数。

如果固件升级未成功,此字段将保持原值。如果固件升级成功,但未编程任何扇区,则此字段应设置为零。

使用此字段,EMMC报告从固件捆绑包中正确编程到EMMC中的扇区数。该值以512字节或8个512字节扇区(4K字节)的倍数表示,具体取决于DATA_SECTOR_SIZE字段的值。

7.4.21 VENDOR_PROPRIETARY_HEALTH_REPORT [301-270]

此字段由供应商使用,用于提供特定于设备的健康报告信息。它是一个32位二进制数,供应商可以使用它来提供设备的特定健康报告信息。此字段的格式和内容完全由供应商定义。如果设备不支持此字段,则此字段的值应设置为零。

该字段保留给供应商专有的健康报告信息。

7.4.22 DEVICE_LIFE_TIME_EST_TYP_B [269]

该字段提供了一个估计指标,用于反映相对于设备最大预计寿命而言,Type B内存的平均磨损程度,从而提供了设备寿命的估计指标。

该字段是一个8位二进制数,表示Type B内存的平均磨损程度。该字段的值介于0和255之间,其中0表示设备未磨损,255表示设备已磨损到最大程度。该字段的单位是百分比,例如,如果该字段的值为50,则表示设备的Type B内存已经磨损了50%。

该字段提供了一个估计指标,用于反映相对于设备最大预计寿命而言,Type B内存的平均磨损程度,从而提供了设备寿命的估计指标。

表103 EMMC寿命估计 Type B 参数值

7.4.23 DEVICE_LIFE_TIME_EST_TYP_A [268]

该字段提供了一个估计指标,用于反映相对于设备最大预计寿命而言,设备的平均磨损程度,从而提供了设备寿命的估计指标。

该字段是一个8位二进制数,表示设备的平均磨损程度。该字段的值介于0和255之间,其中0表示设备未磨损,255表示设备已磨损到最大程度。该字段的单位是百分比,例如,如果该字段的值为50,则表示设备已经磨损了50%。

该字段提供了关于设备寿命的估计指示,该指示反映了类型A内存相对于其最大估计设备寿命的平均磨损程度。

表104 设备寿命估计类型A参数值

7.4.24 PRE_EOL_INFO [267]

表示预结束寿命信息。该字段提供了有关存储设备预计寿命结束前的状态的信息。这些信息可以帮助系统判断何时需要更换设备以确保数据的安全和可靠性。该字段包含有关设备寿命的各种信息,例如写入次数、坏块数量等。

该字段提供了有关EMMC寿命的指示,反映了平均保留块所反映的EMMC寿命。

表105 预计EMMC寿命终止的参数值

7.4.25 OPTIMAL_READ_SIZE [266]

OPTIMAL_READ_SIZE是一个字段名,表示最佳读取大小。该字段提供了建议的最佳读取大小,以最大化读取速度和性能。在读取大量数据时,建议使用最佳读取大小来避免过多的磁盘访问和延迟。该字段通常由存储设备厂商提供,并根据设备的性能和特性进行优化。

该字段提供了不同分区的最小最佳(适用于设备)读取单元大小。

表106 最接读取单元容量

7.4.26 OPTIMAL_WRITE_SIZE [265]

该字段提供了不同分区的最小最佳(适用于EMMC)写入单元大小。“最佳”与EMMC所做的最小磨损有关。

表107 最佳写入尺寸

7.4.27 OPTIMAL_TRIM_UNIT_SIZE [264] 最佳修剪单元容量

该字段提供了不同分区的最小最佳(适用于EMMC)修剪单元大小。“最佳”与EMMC所做的最小磨损有关。

表108 最佳修剪单元尺寸

7.4.28 DEVICE_VERSION [263-262]

DEVICE_VERSION [263-262]是一个字段名,表示EMMC的版本号。该字段提供了有关EMMC芯片的版本信息,例如生产日期、硬件版本、固件版本等。这些信息可以帮助系统管理员和维护人员确定当前EMMC的性能和兼容性,以及是否需要进行升级或更换。该字段通常由存储设备厂商提供,并在生产过程中进行编程。

7.4.29 FIRMWARE_VERSION [261-254]

FIRMWARE_VERSION [261-254]是一个字段名,表示固件版本号。该字段提供了有关存储EMMC固件版本的信息。固件是存储设备中的一种软件,负责管理设备的功能和性能。固件版本号可以帮助系统管理员和维护人员确定EMMC是否需要进行更新,以提高性能和安全性。该字段通常由存储设备厂商提供,并在生产过程中进行编程。

7.4.30 CACHE_SIZE [252:249]

CACHE_SIZE [252:249]是一个字段名,表示缓存大小。该字段提供了存储设备中缓存的大小,以字节为单位。缓存是存储设备中的一种内存,用于加速读取和写入操作。较大的缓存大小通常可以提高EMMC的读取和写入性能。该字段通常由存储设备厂商提供,并在生产过程中进行配置。

该字段指示e•MMC设备中易失性缓存的存在和大小。值0x00表示不存在缓存。任何大于0x00的值都表示存在缓存,并且指示其大小。大小以千位为倍数表示。CACHE_SIZE寄存器的值指示乘数。乘数的最高有效位在[252]字节中,最低有效位在[249]字节中。缓存的大小= CACHE_SIZE x 1kb。

7.4.31 GENERIC_CMD6_TIME [248]

GENERIC_CMD6_TIME [248]是一个字段名,表示host下发CMD6时间。该字段提供了在EMMC设备上执行通用CMD6命令的时间,以毫秒为单位。通用CMD6命令是一种用于查询和设置e•MMC设备特性的命令。该字段通常由存储设备厂商提供,并在生产过程中进行配置。

该字段指示SWITCH命令(CMD6)的默认最大超时时间,除非在访问特定字段时定义了特定的超时时间。此外,该字段不定义启动后台操作(写入BKOPS_START[164]字段)或启动清洁操作(写入SANITIZE_START[165]字段)或刷新缓存(写入FLUSH_CACHE[32]字段)时的超时时间。时间以10毫秒为单位表示。

表109 EMMC执行CMD6的时间

7.4.32 POWER_OFF_LONG_TIME [247]

POWER_OFF_LONG_TIME [247]是一个字段名,表示长时间断电时间。该字段提供了EMMC在长时间断电情况下可以保留数据的时间,以分钟为单位。长时间断电是指EMMC设备在没有电源供应的情况下持续运行的时间。该字段通常由存储设备厂商提供,并在生产过程中进行配置。

该字段指示当通过写入POWER_OFF_NOTIFICATION[34]字节中的POWER_OFF_LONG来通知设备即将关闭电源时,SWITCH命令(CMD6)的最大超时时间。如果在POWER_OFF_NOTIFICATION中设置了其他模式,则超时时间为通用CMD6超时时间。时间以10毫秒为单位表示。

表110,下电后EMMC继续运行的时间

7.4.33 BKOPS_STATUS [246]

BKOPS_STATUS [246]是一个字段名,表示后台操作状态。该字段提供了有关后台操作状态的信息,例如后台操作是否正在进行、操作类型等。后台操作是一种在e•MMC设备上执行的操作,该操作不会影响EMMC的正常使用,例如执行坏块管理、垃圾回收等操作。该字段通常由存储设备厂商提供,并在生产过程中进行配置。

该字段指示后台操作紧急程度的级别。

表111 后台操作状态

位[7:2]:保留

位[1:0]:未完成操作:(0x0: 不需要操作,0x1: 有未完成的操作(非关键),0x2: 有未完成的操作(性能受到影响),0x3: 有未完成的操作(关键))

7.4.34 CORRECTLY_PRG_SECTORS_NUM [245:242]

这是一个4位的字段,用于指示在编程期间正确编程的扇区数量。

该字段指示上一个WRITE_MULTIPLE_BLOCK命令(CMD25)成功编程的扇区数量。该值以512字节或8个512字节扇区(4KB)的倍数表示,具体取决于DATA_SECTOR_SIZE字段的值。

表112 正确编程的扇区数量

正确编程的扇区数量 = [CORRECTLY_PRG_SECTORS_NUM_3 * 2^24 + CORRECTLY_PRG_SECTORS_NUM_2 * 2^16 + CORRECTLY_PRG_SECTORS_NUM_1 * 2^8 + CORRECTLY_PRG_SECTORS_NUM_0 * 2^0]

需注意:建议host以此字段作为参考,在重复中断的写入命令时避免再次重写已成功编程的扇区。

7.4.35 INI_TIMEOUT_AP [241]

INI_TIMEOUT_AP是指在自动引导模式下,eMMC设备在上电后等待主机启动初始化序列的时间。如果主机没有在指定的时间内启动初始化序列,则eMMC设备将自动切换到正常模式。

该寄存器指示在成功对EMMC后首次上电的最大初始化超时时间。请注意,连续上电期间的所有初始化超时时间都将具有最大1秒的超时时间(与未分区的EMMC相同)。

表13 初始化时的超时参数

7.4.36 CACHE_FLUSH_POLICY [240]

该字段用于指示eMMC在写入缓存命令(WRITE_CACHE或WRITE_MULTIPLE_BLOCK)后如何刷新缓存。它具有以下值:

- 0:在写入缓存命令后自动刷新缓存。

- 1:在写入缓存命令后不自动刷新缓存。主机需要使用CACHE_FLUSH命令手动刷新缓存。

注意:如果eMMC支持高速模式,则CACHE_FLUSH_POLICY字段的值必须为0。

该寄存器用于计算TRIM和DISCARD功能的超时时间。以下公式定义了逻辑擦除组内TRIM和DISCARD操作的超时值:

TRIM超时时间 = 300ms x TRIM_MULT

如果host执行TRIM或DISCARD操作并写入属于多个擦除组的扇区,则总超时值应是所涉及的擦除组数量的倍数。

表115 修剪/丢弃命令的超时时间

7.4.38 SEC_FEATURE_SUPPORT [231]

该字节允许host确定EMMC支持的安全数据管理功能。该寄存器中的位决定是否支持ERASE(CMD38)命令参数,并且host是否可以使用SEC_BAD_BLK_MGMNT(EXT_CSD [134])来管理存储器阵列中的缺陷部分更替的方式。

表116 是否支持数据安全功能

位7:保留

位6:SEC_SANITIZE 0x1:EMMC支持清除操作。 0x0:EMMC不支持清除操作。

位5:保留

位4:SEC_GB_CL_EN(只读)

0x0:EMMC不支持安全和非安全的修剪操作。

0x1:EMMC支持安全和非安全的修剪操作。该位被设置表示CMD38支持参数位15和0。

位3:保留

位2:SEC_BD_BLK_EN(只读)

0x0:EMMC不支持自动擦除操作,以清除阵列中退役的有缺陷部分。

0x1:EMMC支持自动擦除操作,以清除阵列中退役的有缺陷部分。该位被设置允许host设置SEC_BAD_BLK_MGMNT(EXT_CSD [134])。

位1:保留

位0:SECURE_ER_EN(只读)

0x0:EMMC不支持安全清除操作。

0x1:EMMC支持安全清除操作。通过host设置ERASE(CMD38)命令的参数位31。

7.4.39 SEC_ERASE_MULT [230]

SEC_ERASE_MULT [230]是一个字节,用于指示安全ERASE(CMD38)命令中的擦除块数。它的值是一个2的幂,表示安全ERASE命令将擦除的块数。例如,如果SEC_ERASE_MULT值为3,则安全ERASE命令将擦除8个块(2的3次幂等于8)。

该寄存器用于计算安全清除功能的超时时间。以下公式定义了一个逻辑擦除组内安全清除操作的超时值:

安全清除超时时间 = 300ms x ERASE_TIMEOUT_MULT x SEC_ERASE_MULT

如果主机执行包括擦除组在内的安全清除操作,则总超时值应是所涉及的擦除组数量的倍数。

SEC_ERASE_MULT应该代表EXT_CSD [16]中所有支持的SECURE_REMOVAL_TYPE模式的最坏超时值。

表117 安全擦除的超时时间

7.4.40 SEC_TRIM_MULT [229]

SEC_TRIM_MULT [229]是一个字节,用于指示安全修剪(CMD38)命令中的修剪块数。它的值是一个2的幂,表示安全修剪命令将修剪的块数。例如,如果SEC_TRIM_MULT值为3,则安全修剪命令将修剪8个块(2的3次幂等于8)。

该寄存器用于计算Secure_TRIM功能的超时时间。以下公式定义了一个逻辑擦除组的Secure_TRIM操作的超时值。

Secure TRIM超时 = 300毫秒 x ERASE_TIMEOUT_MULT x SEC_TRIM_MULT

如果host执行包括写入属于多个擦除组的扇区的Secure Trim操作,则总超时值应该是涉及的擦除组数量的倍数。

SEC_TRIM_MULT应该代表EXT_CSD[16]中所有支持的SECURE_REMOVAL_TYPE模式的最坏超时值。

表118 安全擦除的超时时间参数

7.4.41 BOOT_INFO [228]

BOOT_INFO 指与计算机或电子设备的启动过程相关的一组信息。这些信息可能包括使用的引导加载程序,系统引导的分区或设备。

表119 引导信息

位[7:3]:保留

位[2]:HS_BOOT_MODE

0:EMMC在启动期间不支持高速时序。

1:EMMC在启动期间支持高速时序。

位[1]:DDR_BOOT_MODE

0:EMMC在启动期间不支持双倍数据率。

1:EMMC在启动期间支持双倍数据率。

位[0]:ALT_BOOT_MODE

0x0:EMMC不支持备用启动方法(已过时)

0x1:EMMC支持备用启动方法。由于这是v4.4标准的强制要求,设备必须显示“1”。

目前此寄存器的唯一有效值为0x0、0x1、0x05和0x07。在启动期间支持双倍数据率模式的设备还必须设置位2。

7.4.42 BOOT_SIZE_MULT [226]

BOOT_SIZE_MULT 是指电子设备中的一个寄存器,用于指定启动分区的大小,以设备的写入块大小的倍数表示。该寄存器中的值表示启动分区的大小。

通过公式,可以使用该寄存器计算启动分区的大小:启动分区大小 = 128K字节 × BOOT_SIZE_MULT。

表120 引导分区的容量

7.4.43 ACC_SIZE [225]

ACC_SIZE 是指电子设备中的一个寄存器,用于指定可以访问的区域的大小。

表121 访问容量

位[7:4]:保留

位[3:0]:SUPER_PAGE_SIZE

该寄存器定义了可以同时编程的一个或多个可编程边界单元。主控器可以使用此值进行以下操作:

· 作为格式化簇的指南

· 防止格式化页不对齐

· 作为最小数据传输大小的指南

超级页大小 = 512 × 2(SUPER_PAGE_SIZE - 1): 0 < X < 9

表122 超级页容量

7.4.44 HC_ERASE_GRP_SIZE [224]

HC_ERASE_GRP_SIZE [224] 是指电子设备中的一个寄存器,用于指定擦除组的大小,以扇区为单位。一个擦除组是一组连续的扇区,可以一起擦除。该寄存器中的值表示擦除组的大小,host可以使用它来优化擦除操作。

该寄存器定义了高容量存储器的擦除单元大小。如果主控器在扩展CSD寄存器字节[175]中启用位“0”,则从设备使用这些值进行擦除操作。擦除单元大小=512K字节×HC_ERASE_GRP_SIZE。

表123 擦除单元容量

如果 ERASE_GROUP_DEF 中的 ENABLE 位被清除为 LOW 或 HC_WP_GRP_SIZE 被设置为 0x00,则写保护组大小定义将是原始情况。

7.4.45 ERASE_TIMEOUT_MULT [223]

此寄存器用于计算高容量擦除操作的擦除超时,并定义一个擦除组的擦除操作的超时值。

Erase Timeout = 300 ms × ERASE_TIMEOUT_MULT

如果主机对多个擦除组执行擦除操作,则总超时值应该为已发出的擦除组数的倍数。

如果主服务器在扩展的CSD寄存器字节[175]中启用位0,则从服务器将使用ERASE_TIMEOUT_MULT值作为超时值。

如果ERASE_TIMEOUT_MULT设置为0x00,则从服务器必须支持先前的超时定义。

7.4.46 REL_WR_SEC_C [222] 

The REL_WR_SEC_C [222] 寄存器应设置为1,且不影响可靠的写操作。

7.4.47 HC_WP_GRP_SIZE [221] 

此寄存器定义了大容量内存的写保护组大小。如果ERASE_GROUP_DEF中的启用位设置为HIGH,则写保护组大小定义如下:写保护组大小= 512KB * HC_ERASE_GRP_SIZE * HC_WP_GRP_SIZE。

如果ERASE_GROUP_DEF中的启用位被清除为LOW或HC_WP_GRP_SIZE被设置为0x00,则写保护组大小定义将是原始情况。

7.4.48 S_C_VCC[220] and S_C_VCCQ[219]

S_C_VCC和S_C_VCCQ寄存器定义了在睡眠状态(slp)期间的最大VCC电流消耗。计算最大电流值的公式为:

睡眠电流=1µA*2^X:寄存器值= X >0

休眠当前=无值(遗留值):寄存器值=0

定义的最大寄存器值为0x0D,等于8.192 mA。保留了在0x0E和0xFF之间的值。

7.4.49 PRODUCTION_STATE_AWARENESS_TIMEOUT [218] 

此字段指示设置PRODUCTION_STATE_AWARENESS [133]字段时开关命令(CMD6)的最大超时时间。

计算最大超时值的公式是:

生产状态超时= 100us * 2^ PRODUCTION_STATE_AWARENESS_TIMEOUT定义的最大寄存器值为0x17,等于838.86s超时。保留在0x18和0xFF之间的值。

7.4.50 S_A_TIMEOUT [217] 

此寄存器定义了从备用状态(stby)到睡眠状态(slp)以及从睡眠状态(slp)到备用状态(stby)的状态转换的最大超时值。计算最大超时值的公式是:

睡眠/唤醒超时= 100ns * 2^S_A_TIMEOUT

定义的最大寄存器值为0x17,等于838.86 ms超时。保留在0x18和0xFF之间的值。

7.4.51 SLEEP_NOTIFICATION_TIME [216]

此字段指示当通过将SLEEP_NOTIFICATION写入POWER_OFF_NOTIFICATION [34]字节来通知设备它将移动到睡眠状态(slp)时,切换命令(CMD6)的最大超时时间。时间以10毫微秒为单位表示。计算最大超时值的公式是:

睡眠通知超时值=10us*2^SLEEP_NOTIFICATION_TIME

定义的最大寄存器值为0x17,等于83.88s超时。保留在0x18和0xFF之间的值。

7.4.52 SEC_COUNT [215:212] 

设备密度由寄存器计算,通过将寄存器的值(扇区计数)乘以512B/扇区,如下式所示。

设备密度= SEC_COUNT x 512B

因此,可能指示的最大密度为4 294 967 295x 512B。

该设备的可寻址扇区范围将是从扇区0到扇区(SEC_COUNT-1)。

扇区计数值的最小重要字节(LSB)是字节[212]。

当主机执行分区配置时,设备将重新计算SEC_COUNT值,它可以指示分区后的用户数据区域的大小。

7.4.53 SECURE_WP_INFO[211] 

SECURE_WP_SUPPORT字段表示设备是否支持安全写保护模式。SECURE_WP_EN_STATUS显示了在经过身份验证的设备配置区域中定义的SECURE_WP_EN的值。

Bit[7:2] : 保留

Bit[1] : SECURE_WP_EN_STATUS (R)

0x0:遗留的写保护模式。

0x1:安全写保护模式。

Bit[0] : SECURE_WP_SUPPORT (R)

0x0:此设备不支持安全写保护

0x1:此设备支持安全写保护

7.4.54 MIN_PERF_a_b_ff [210/:205] and MIN_PERF_DDR_a_b_ff [235:234]

这些字段定义了具有不同总线宽度和最大时钟频率模式的读取和写访问的总体最小性能值。寄存器中的值的编码如表132所示。除了定义的值外,其他值被认为是非法的。

7.4.55 PWR_CL_ff_vvv [203:200] , PWR_CL_ff_vvv[237:236] , PWR_CL_DDR_ff_vvv [239:238]

and PWR_CL_DDR_ff_vvv[253]

这些字段定义了设备所支持的功率类别。默认情况下,设备必须使用1位总线配置以最大频率运行,在默认的最大电流消耗范围内,如表133所示。如果4位/8位总线配置需要增加电流消耗,则必须在这些寄存器中进行说明。

通过读取这些寄存器,主机可以确定设备在不同总线模式下的功耗。位编码8位总线配置的当前消耗量。位编码4位总线配置的当前消耗量。

PWR_52_vvv寄存器没有定义为26MHzemmc。

PWR_CL_DDR_200_vvv[253]寄存器用于HS400模式,

最大均方根电流的测量是作为100 ms期间的平均均方根电流消耗来完成的。最大峰值电流被定义为根本不被超过的绝对最大值。定义功率等级的条件如下:

.最大总线频率·

.最大工作电压·

.最坏情况下的功能工作·

.最坏情况下的环境参数(温度,……)

这些寄存器定义了在数据传输模式、就绪状态和识别状态下的任何协议操作的最大功耗。

设备可在其数据表中规定每个功率等级的性能,以及是否应满足附件A.10中所规定的封装箱体(Tc)温度条件

7.4.56 PARTITION_SWITCH_TIME [199]

此字段指示通过更改PARTITION_CONFIG字段(EXT_CSD字节[179])中的PARTITION_ACCESS位来切换分区时,切换命令(CMD6)的最大超时时间。时间以10毫秒为单位表示。

7.4.57 OUT_OF_INTERRUPT_TIME [198]

此字段表示关闭被HPI中断的命令的最大超时时间-从CMD12/13的结束位到设备释放的DAT0之间的时间。时间以10毫秒为单位表示。

7.4.58 DRIVER_STRENGTH [197]

表示设备支持的I/O驱动程序强度类型。

Bit[7:5]:保留

Bit[4]:0不支持,1支持

Bit[3]:0不支持,1支持

Bit[2]:0不支持,1支持

Bit[1]:0不支持,1支持

Bit[0]:0不适用,1支持

7.4.59 DEVICE_TYPE [196] 

此字段定义了设备的类型

此字段的当前有效值包括以下内容:0x01, 0x03, 0x07, 0x0B, 0x0F, 0x13,

0x17, 0x1B,0x1F, 0x23, 0x27, 0x2B,0x2F, 0x33, 0x37, 0x3B,0x3F, 0x41, 0x43, 0x47, 0x4B, 0x4F, 0x51, 0x53, 0x57, 0x5B, 0x5F, 0x61, 0x63, 0x67, 0x6B, 0x6F, 0x71, 0x73, 0x77, 0x7B, 0x7F, 0x81, 0x83, 0x87, 0x8B, 0x8F,0x91, 0x93, 0x97, 0x9B, 0x9F, 0xA1, 0xA3, 0xA7, 0xAB, 0xAF, 0xB1, 0xB3, 0xB7, 0xBB, 0xBF, 0xC1, 0xC3, 0xC7, 0xCB, 0xCF, 0xD1, 0xD3, 0xD7, 0xDB, 0xDF, 0xE1, 0xE3, 0xE7, 0xEB, 0xEF, 0xF1, 0xF3, 0xF7, 0xFB, 0xFF . Ex)

一个双电压1.2 V/1.8 V设备,支持52MHVDDR模式,而不是1.2V/1.2V将被编码为0x7。

一个双电压1.2 V/1.8 V的设备,支持1.8 V的52 MHz双数据速率模式和26Mhz/1.2V的52 MHz单数据速率模式也将被编码为0x7。对于覆盖多个电压范围的所有设备类型,设备的数据表应指定VCC和VCCQ的特定支持电压范围。

双数据速率模式支持

7.4.60 CSD_STRUCTURE [194] 

此字段是CSD寄存器中的CSD_STRUCTURE字段的延续

7.4.61 EXT_CSD_REV [192] 

根据其修订版本,定义与EXT_CSD相关的固定参数

7.4.62 CMD_SET [191] 

CMD_SET包含当前在设备中激活的命令集的二进制代码。可以使用开关命令(CMD6)的命令集访问类型来更改命令集。请注意,当使用切换命令更改命令集时,应使用根据S_CMD_SET寄存器的位索引值。为了向后兼容,在通电后将CMD_SET设置为0x00(标准MMC)。使用切换命令切换回标准MMC命令集后,CMD_SET的值为0x01。

7.4.63 CMD_SET_REV [189] 

包含一个反映当前活动的命令集的修订版本的二进制编号。对于标准MMC,命令设置为:

7.4.64 POWER_CLASS [187] 

此字段包含针对设备的所选功率类别的4位值。功率等级的定义见表141。主机应负责使用设备允许使用的最大功率类正确写入此字段。该设备使用这些信息在内部管理电源预算,并提供优化的性能。

7.4.65 HS_TIMING [185] 

. 主机使用此字段来选择定时接口和驱动程序强度。这个字节由两个字段组成,每个字段由一个片段表示。·

. 定时接口[0:3]:开机、人机复位或软件复位后,该字段为0,因此选择了设备的向后兼容接口定时。如果主机将1设置为此字段,则设备会将其定时更改为高速接口定时(请参见10.6.1)。如果主机设置值为2,则设备会将其定时更改为HS200接口定时(请参见10.8.1)。如果主机将HS_TIMING[3:0]设置为0x3,则设备会将其定时更改为HS400接口定时(请参见10.10)

选定的驱动程序强度[4:7]:使用此字段,主机可以从设备中设置所需的驱动程序强度。默认值和强制性值为(0x0)。关于驱动程序类型的定义,请参见10.5.4.1。

7.4.66 STROBE_SUPPORT [184] 

此寄存器指示设备是否支持增强频闪器模式,以实现使用频闪器的操作模式(即HS400)。

值“0x0”表示不支持增强频闪灯模式

值“0x1”表示设备支持增强频闪灯模式

如果设备支持增强型频闪器模式,那么它可以在EXT_CSD的BUS_WIDTH [183]寄存器中启用。

7.4.67 BUS_WIDTH [183] 

通电后设置为“0”(1位数据总线),可以通过开关命令进行更改。总线宽度、正常或DDR模式和频闪灯模式(用于HS400)通过BUS_WIDTH寄存器定义。

Bit7:

0x0:仅在数据输出和CRC响应期间提供频闪器[默认]

0x1:在数据输出、CRC响应和CMD响应期间提供频闪器

支持增强频闪灯模式是设备可选的。EXT_CSD的STROBE_SUPPORT[184]寄存器表示设备是否支持该模式

Bit[3-0]:定义表145中定义的总线模式选择

7.4.68 ERASED_MEM_CONT [181] 

此字段定义了显式擦除的内存范围的内容

7.4.69 PARTITION_CONFIG (before BOOT_CONFIG) [179]

此寄存器定义了分区的配置。

Bit 7: Reserved

Bit 6: BOOT_ACK (R/W/E)

Bit[5:3] : BOOT_PARTITION_ENABLE (R/W/E)

Bit[2:0] : PARTITION_ACCESS (before BOOT_PARTITION_ACCESS, R/W/E_P)

7.4.70 BOOT_CONFIG_PROT[178]

此寄存器定义了引导配置保护.

Bit [7:5]: Reserved

Bit [4]: PERM_BOOT_CONFIG_PROT (R/W)

Bit[3:1] : Reserved

Bit[0] : PWR_BOOT_CONFIG_PROT (R/W/C_P)

如果启用了PERM_BOOT_CONFIG_PROT,无论PWR_BOOT_CONFIG_PROT是否启用,BOOT模式都会被永久锁定,并且不能反转。

7.4.71 BOOT_BUS_CONDITIONS [177]

此寄存器定义了引导操作的总线宽度。

Bit[7:5] : Reserved

Bit [4:3] : BOOT_MODE (nonvolatile)

Bit [2]: RESET_BOOT_BUS_CONDITIONS (nonvolatile)

Bit[1:0] : BOOT_BUS_WIDTH (nonvolatile)

BOOT_BUS_CONDITIONS寄存器中的设置控制引导模式下的任何数据传输,而HS_TIMING和BUS_WIDTH寄存器则控制其他模式下的行为。

BOOT_BUS_CONDITIONS寄存器是非易失性的,而HS_TIMING和BUS_WIDTH寄存器将在电源循环、硬件重置或CMD0后被重置(除非发送到退出启动模式)。这需要软件在完成启动过程后设置BUS_WIDTH和HS_TIMING寄存器。

为了避免在完成引导操作后写入这些寄存器,主机可以将RESET_BOOT_BUS_CONDITIONS寄存器设置为“1”,在退出引导模式时自动将BUS_WIDTH和HS_TIMING寄存器的值设置为BOOT_BUS_CONDITIONS寄存器中设置的值。在这种情况下,要退出引导模式的CMD0不会重置BUS_WIDTH和HS_TIMING。但是,如果在其他情况下发送CMD0(有任何参数),则应将BUS_WIDTH和HS_TIMING重置为其重置值(1位总线宽度和单数据速率,分别反向兼容接口定时)。

任何电源循环或硬件重置都应将BUS_WIDTH和HS_TIMING重置为其重置值(分别为1位总线宽度和单数据速率,向后兼容接口定时)。如果在引导操作后设置了RESET_BOOT_BUS_CONDITIONS位,这将不会影响总线宽度和接口定时,直到设备通过引导状态。总线宽度和定时模式转换如表150所示。

7.4.72 ERASE_GROUP_DEF [175] 

此寄存器允许主服务器选择高容量擦除单位大小、超时值和写入保护组大小。开机时,位默认为“0”。

Bit[7:1]: Reserved

Bit0: ENABLE

7.4.73 BOOT_WP_STATUS [174]

此字节允许主机读取引导分区的当前保护状态。

Bit[7:3]: Reserved

Bit[3:2]: B_AREA_2_WP (R)

Bit[1:0]: B_AREA_1_WP (R)

7.4.74 BOOT_WP [173] 

此字节允许主机对引导区域应用永久或通电写入保护。此外,寄存器允许主服务器禁用开机或永久写入保护,或两者都禁用。这些位的默认状态为零。此寄存器在每个功率周期中只能写入一次。设置引导区域写保护的过程概述在6.3.7中。

Bit[7]: B_SEC_WP_SEL (R/W/C_P)

Bit[6]: B_PWR_WP_DIS (R/W/C_P)

Bit[5]: Reserved

Bit[4]: B_PERM_WP_DIS (R/W)

Bit[3]: B_PERM_WP_SEC_SEL(R/W/C_P)

Bit[2]: B_PERM_WP_EN (R/W)

Bit[1]: B_PWR_WP_SEC_SEL(R/W/C_P)

Bit[0]: B_PWR_WP_EN (R/W/C_P)

尝试在单个开关命令中为给定的保护模式(永久或通电)设置禁用和启用位将不会产生影响。如果同一分区采用永久保护和通电保护,永久保护优先,分区采用永久保护。

如果主机在对另一个引导区域启用永久写入保护后,对引导分区启用开机写入保护,则主机应将位3设置为与对另一个引导分区设置永久写入保护的值相同(详情请参见A.11)

7.4.75 USER_WP [171] 

此字节允许主机对用户区域中的所有分区应用永久或开机写保护。此外,寄存器允许主机禁用应用于用户区域的不同保护模式。

Bit[7]: PERM_PSWD_DIS (R/W)

Bit[6]: CD_PERM_WP_DIS (R/W)

Bit[5]: Reserved

Bit[4]: US_PERM_WP_DIS (R/W)

Bit[3]: US_PWR_WP_DIS (R/W/C_P)

Bit[2]: US_PERM_WP_EN (R/W/E_P)

Bit[1]: Reserved

Bit[0]: US_PWR_WP_EN (R/W/E_P)

当US_PERM_WP_EN和US_PWR_WP_EN时发出CMD28将导致写保护组受到永久保护。

7.4.76 FW_CONFIG [169] 

更新_禁用位禁用了更新eMMC固件的可能性。

Bit[7:1]: Reserved

Bit[0]: Update_Disable

7.4.77 RPMB_SIZE_MULT [168] 

RPMB分区大小是通过以下公式从寄存器中计算出来的: RPMB分区大小= 128kB x RPMB_SIZE_MULT

7.4.78 WR_REL_SET [167] 

写可靠性设置寄存器指示设备中的每个用户和一般区域分区的可靠性设置。

Bit[7:5]: Reserved Bit

Bit[4]: WR_DATA_REL_4

Bit[3]: WR_DATA_REL_3

Bit[2]: WR_DATA_REL_2

Bit[1]: WR_DATA_REL_1

Bit[0]: WR_DATA_REL_USR

7.4.79 WR_REL_PARAM [166]

本规范应支持书写的可靠性。这个寄存器中的两个位都应该设置为1。

Bit[7:5]: Reserved

Bit[4]: EN_RPMB_REL_WR (R)

Bit[3]: Reserved

Bit[2]: EN_REL_WR (R)

Bit[1]: Reserved

Bit[0]: HS_CTRL_REL (R)

7.4.80 SANITIZE_START[165] 

将任何值写入此字段都应手动启动消毒操作。设备应保持忙碌,直到消毒完成。

7.4.81 BKOPS_START [164] 

向此字段写入任何值都应手动启动后台操作。设备应保持繁忙,直到不需要后台操作。

7.4.82 BKOPS_EN [163] 

该字段允许主机向设备指示,希望它是否需要通过写入BKOPS_START字段来定期手动启动后台操作。

Bit[7:2]: Reserved

Bit[1]: AUTO_EN (R/W/E) default value is vendor specific.

Bit[0]: MANUAL_EN (R/W)

7.4.83 RST_n_FUNCTION [162] 

由于向后兼容的原因,在设备中默认暂时禁用RST_n信号。主机在使用该设备之前,可能需要将该信号设置为永久启用或永久禁用。

默认情况下,RST_n_ENABLE被设置为0x0,这意味着RST_n被暂时禁用。主机可以将该值更改为0x1(永久启用)或0x2(永久禁用)。一旦主机将该值设置为任何一个,就不能再次更改该值。

一旦主机将RST_n_ENABLE位设置为0x2(永久禁用),设备将不会永久接受RST_n信号的输入。在禁用期间,设备必须注意RST_n的任何状态(高、低、浮动)都不会导致设备中的任何问题(即,输入缓冲器中的功能故障和高泄漏电流)。

当RST_n_ENABLE设置为0x1(永久启用)时,设备将永久接受RST_n的输入。主机无法将这些位更改为已禁用的值。此外,当主机将RST_n_ENABLE设置为0x1时,设备不能通过触发寄存器位变化来开始重置内部电路。内部重位序列必须由RST_n上升边触发,而不能由寄存器更改触发。

由于设备在RST_n端上没有任何内部上拉或下拉电阻,当启用RST_n时,主机必须上或下拉RST_n以防止输入电路产生不必要的泄漏电流。

7.4.84 HPI_MGMT [161] 

此字段允许主机激活HPI机制。

7.4.85 PARTITIONING_SUPPORT [160]

此寄存器定义了受支持的分区特性。此标准要求设置此寄存器中的所有值。

7.4.86 MAX_ENH_SIZE_MULT [159:157]

此寄存器定义了可以具有增强属性的最大内存面积量。写保护组的大小是指高容量的定义。

7.4.87 PARTITIONS_ATTRIBUTE [156]

这个寄存器位在通用分区中设置了增强的属性。

7.4.88 PARTITION_SETTING_COMPLETED [155]

默认值表示主机已发布了任何分区配置过程。该位被设置为通知设备参数的定义已经完成,设备可以启动其内部配置活动。如果发生突然的电源损失,且该位尚未设置,则分区的配置将无效,必须重复。

7.4.89 GP_SIZE_MULT_GP0 - GP_SIZE_MULT_GP3 [154:143]

此寄存器定义了一般用途的分区大小。通用分区尺寸应以大容量写入保护组表示。

其中,X为通用用途分区(从1到4),Y为公式中的因子(从0到2),因此

7.4.90 ENH_SIZE_MULT [142:140]

此寄存器定义了增强的用户数据区域大小。增强的用户数据区域大小是根据高容量写入保护组来定义的。

7.4.91 ENH_START_ADDR [139:136]

此寄存器定义了增强的用户数据区域的起始地址。

用户数据区域中增强用户数据区域段的起始地址(对于大容量设备的字节或扇区表示)。

7.4.92 SEC_BAD_BLK_MGMNT [134]

在一些用于eMMC部分的内存阵列技术中,内存阵列的部分在使用时可能会出现缺陷。在这些技术中,设备将在其退出块之前从存储器阵列的缺陷部分恢复信息。当设置此寄存器位时,要求设备在退役前对缺陷区域的内容进行擦除。这个特性只要求删除那些在该区域中没有缺陷的位。

7.4.93 PRODUCTION_STATE_AWARENESS [133]

通过此字段,主机会向设备报告其生产状态。此字段具有以下值:

.正常(字段)-此值表示设备字的状态,设备使用“常规”操作。

.PRE_SOLDERING_写入-此值表示设备在焊接之前和主机将内容加载到设备之前的生产状态。主机将设备设置为此状态,以便将内容加载到设备中。

.PRE_SOLDERING_POST_WRITES -此值表示设备处于生产状态,主机已完成将内容加载到设备的状态。主机在加载内容后和焊接之前将设备设置为此状态。一旦转移到此状态,主机就不应该将内容写入设备。·

.AUTO_PRE_SOLDERING-如果需要自动预焊接数据,此值应由主机设置。如果数据传输多达PRE_LOADING_DATA_SIZE,则通过自动将PRODUCTION_STATA_AWARENESS的值更改为0x0(正常),设备状态将变回正常状态。也就是说,不需要单独的命令来更改为正常状态。

7.4.94 TCASE_SUPPORT [132] 

eMMC设备可以在主机符合附录A.10中所示的Tcase控制温度表的情况下调整其最大性能。在这种情况下,希望利用最大性能并符合给定的情况温度(Tc)表的主机应相应地设置TCASE_SUPPORT位:

.TCASE_SUPPORT = 0x01:表附件中的A.227该系统支持A.10。假设仅通过箱泄热。·

.TCASE_SUPPORT = 0x10:表附件中的A.227该系统支持A.10。假设通过外壳和PCB/球进行放热处理。

如果TCASE_SUPPORT位是=“0x00”,则上述设备可能会限制最大可用性能。主机应尽快将TCASE_SUPPORT值设置为0x01或0x10,以便设备运行其最大可用性能。

7.4.95 PERIODIC_WAKEUP [131]

主机唤醒设备的频率

其中,唤醒之间的周期为WAKEUP_PERIOD,单位为WAKEUP_UNIT。例如,一个值为01000110b意味着:WAKEUP_UNIT=010b=周,WAKEUP_PERIOD=00110b=6 => 6周。

如果WAKEUP_UNIT为0,则忽略WAKEUP_PERIOD,并且唤醒之间的周期为无穷大(没有唤醒)。

7.4.96 PROGRAM_CID_CSD_DDR_SUPPORT [130]

该字段表示设备是否以双数据速率模式支持CMD26和CMD27

7.4.97 VENDOR_SPECIFIC_FIELD [127:64]

这些字段的用途和类型将由设备制造商来定义。

7.4.98 NATIVE_SECTOR_SIZE [63]

此字段表示设备支持的本机扇区大小:

0x00:本机扇区大小为512B

0x01:本机扇区大小为4KB

0x02-0xFF:保留

7.4.99 USE_NATIVE_SECTOR [62] 

此字段控制是否模拟了512B的本地扇区大小:

0x00:设备正在模拟512B扇区大小或使用本机512B扇区大小

0x01:设备正在使用大于512B的本机扇区大小

0x02-0xFF:保留

当发货时,一个大型扇区设备总是配置了USE_NATIVE_SECTOR=0。如果设备支持大于512B的本机扇区大小,主机可以通过写入0x01和一个功率循环来禁用仿真模式。无法重新启用模拟模式。

如果NATIVE_SECTOR_SIZE为512B,则使用SWITCH_ERROR写入此字段将失败。

7.4.100 DATA_SECTOR_SIZE [61]

此字段表示可访问或寻址的当前扇区大小:

0x00:数据扇区大小为512B

0x01:数据扇区大小为4KB

0x02-0xFF:保留

7.4.101 INI_TIMEOUT_EMU [60]

此寄存器表示在成功禁用512B仿真模式后的第一次通电期间的最大初始化超时时间。

7.4.102 CLASS_6_CTRL[59]

此字段控制第6类命令集(CMD28、CMD29、CMD30和CMD31)的使用情况。通过将此字段设置为0x00,类6命令集将用于WP。通过将此字段设置为0x1,类6命令集用于操作动态容量功能。禁止设置任何其他值(0x02-0xFF)。

7.4.103 DYNCAP_NEEDED [58]

此字段是一个只读字段,设备通过该字段向主机指示设备请求从用户区域地址空间释放的WP组的数量。

7.4.104 EXCEPTION_EVENTS_CTRL [57:56]

每个位都允许使用相关的异常事件位,从而允许它在设备状态中提高EXCEPTION_EVENT位。

注意:由于向后兼容性的原因,如果设置了BKOPS_SUPPORT位[0],那么紧急后台操作事件(URGENT_BKOPS)总是启用的,不能禁用。所有其他启用位在通电后开始禁用,直到主机设置。

7.4.105 EXCEPTION_EVENTS_STATUS [55:54]

每个位都报告一个特定的异常事件的状态。

.URGENT_BKOPS-需要紧急后台操作:如果设置,设备迫切需要执行后台操作。主机可以检查EXT_CSD字段BKOPS_STATUS的详细级别。

.DYNCAP_NEEDED-所需的动态容量:如果设置,设备需要释放一些容量。

.SYSPOOL_EXHAUSTED-系统资源池耗尽:如果设置,系统资源池没有更多可用的资源,一些数据需要取消标记,然后才能标记·

.PACKED_FAILURE-打包命令失败:如果设置,最后打包命令失败。主机可能会检查EXT_CSD字段PACKED_COMMAND_STATUS以了解详细的原因。·

.EXTENDED_SECURITY_FAILURE——在使用PROTOCOL_WR(CMD54)或PROTOCOL_RD(CMD53)命令时或与扩展协议使用相关时引起的错误。如果设置了主机,主机可以检查EXT_CSD字段EXT_SECURITY_ERR [505]以了解详细的原因。

7.4.106 EXT_PARTITIONS_ATTRIBUTE [53:52]

这个寄存器位在通用分区中设置了扩展属性。

每个四位片段描述了一个特定的通用分区的扩展属性。每种类型的具体含义如下:0x0:默认值(无扩展属性)

0x1:系统代码

0x2:非持久性

0x3-0xF:保留的

7.4.107 CONTEXT_CONF [51:37]

CONTEXT_CONF是一个包含15个字节的数组,每个字节控制相关ID的配置,从与CONTEXT_CONF[37]关联的ID #1开始,一直到与CONTEXT_CONF[51]关联的ID #15。上下文ID #0被保留给无上下文的操作,并且没有配置寄存器。每个配置寄存器都保持以下格式:

7.4.108 PACKED_COMMAND_STATUS [36]

此寄存器将报告上次已打包的命令的状态

如果在打包命令中出现错误,应设置“错误”位(位0)。

如果该错误是由打包命令中的某个命令造成的,则其索引将报告在PACKED_FAILURE_INDEX [35]中,并设置“索引错误”位(位1)。

7.4.109 PACKED_FAILURE_INDEX [35]

如果设置了PACKED_COMMAND_STATUS中的“索引错误”位(位1),则此字段将指定失败命令的标头中的索引。

7.4.110 POWER_OFF_NOTIFICATION [34]

此字段允许主机在设备关机之前通知设备。表183中没有的值无效,设置它们将导致SWITCH_ERROR。

注意:即使POWER_OFF_NOTIFICATION设置为0x01(POWER_ON),MMC设备也应该能够防止突然的电源丢失,因为仍然可能发生意外的断电事件。

7.4.111 CACHE_CTRL [33]

应通过写入CACHE_EN位来开关高速缓存。可以从这个字节中读取CACHE_CTRL的状态。

7.4.112 FLUSH_CACHE [32]

FLUSH_CACHE中的设置控制了数据将被刷新到非易失性存储器的时间。

通过设置屏障位发出屏障命令;在屏障命令之后的任何请求之前,在屏障前缓存的所有数据应刷新到非易失性存储器。

通过设置刷新位,将缓存中的数据刷新到非易失性存储器。

7.4.113 BARRIER_CTRL [31]

应通过写入BARRIER_EN位来开关屏障功能。可以从这个字节中读取BARRIER_CTRL的状态。

7.4.114 MODE_CONFIG [30]

使用此字段,主机可以更改设备的模式。

7.4.115 MODE_OPERATION_CODES [29]

使用此字段,主机将设置要在选定模式下执行的操作。如果MODE_CONFIG被设置为FFU Mode,MODE_OPERATION_CODES可以具有以下值:

7.4.116 FFU_STATUS [26]

使用此字段,设备将报告FFU进程的状态。

7.4.117 PRE_LOADING_DATA_SIZE [25-22]

此文件用于设置在预加载期间要加载到设备上的内容的大小。PRE_LOADING_DATA_SIZE表示主机在预焊接状态下需要写入到所有分区的扇区数。

Pre_Loading_Data_Size = PRE_LOADING_DATA_SIZE *扇区大小如果Pre_Loading_Data_Size为0x FFFFFFFF,则该参数可以覆盖的范围为:

.如果扇区大小为512字节- Pre_Loading_Data_Size=(2^32 -1)* 512B = 2TB

.如果扇区大小为4K字节- Pre_Loading_Data_Size=(2^32 -1)* 4KB = 16TB

注意:主机应将PRE_LOADING_DATA_SIZE的值设置为不超过MAX_ PRE_LOADING_DATA_SIZE的值。如果PRE_LOADING_DATA_SIZE值超过MAX PRE_LOADING_DATA_SIZE值,设备应产生开关错误,且不设置。

7.4.118 MAX_PRE_LOADING_DATA_SIZE [21-18]

此字段表示可以加载到设备上的最大数据大小。该值应由设备供应商设定。Max_Pre_Loading_Data_Size = MAX PRE_LOADING_DATA_SIZE *扇区大小如果Max_Pre_Loading_Data_Size为0x FFFFFFFF,则该参数可以覆盖的范围为:

. 如果扇区大小为512字节-最大Pre_Loading_Data_Size=(2^32 -1)* 512B = 2TB·

. 如果扇区大小为4K字节-最大Pre_Loading_Data_Size=(2^32 -1)* 4KB = 16TB注释对于RPMB分区,每个包含256字节数据的数据帧以PRE_LOADING_DATA_SIZE计算为一个扇区。

7.4.119 PRODUCT_STATE_AWARENESS_ENABLEMENT [17]

该字段由两个子字段组成:·

. 功能[0:3],用于表示产品状态意识的能力。主机应引用此值来决定主机供应商可以使用哪种模式。此子字段为只读状态。如果主机启用了设备不支持的模式,则设备应返回开关错误。

o位0-“1”表示该设备支持手动模式

o位1-“1”表示该设备支持自动模式

. 启用[4:7]主机将通过设置此寄存器

bit

‘0’ -生产状态意识来启用产品状态感知功能已启用了

‘1’ -生产状态意识启用

bit

‘0’–手动模式已启用§

‘1’–自动模式已启用。

7.4.120 SECURE_REMOVAL_TYPE [16]

此字段表示在清除操作期间如何从物理内存中删除信息。前4位(位0~位3)表示eMMC设备的能力。接下来的两位表示可配置的选项。主机在系统集成时可以设置一次。

7.4.121 CMDQ_MODE_EN [15]

如果设备支持,则主机启用命令排队机制将使用此字段

为了维护与不支持命令排队的主机的向后兼容性,当禁用命令排队时,设备的其他功能就像设备不支持命令排队一样。

7.5 RCA register 

可写的16位相对设备地址(RCA)寄存器携带在设备标识期间由主机分配的设备地址。此地址用于设备标识程序之后的寻址主机-设备通信。RCA寄存器的默认值为0x0001。保留值0x0000,以将所有设备设置为CMD7的备用状态。

7.6 DSR register 

16位驱动位寄存器(DSR)。它可选地用于提高扩展运行条件下的总线性能(取决于总线长度、传输速率或设备数量等参数)。CSD寄存器携带着有关DSR寄存器使用情况的信息。DSR寄存器的默认值为0x404。

7.7 QSR

32位队列状态寄存器(QSR)在特定的时间点携带队列中任务的状态。主机可以通过设备响应SEND_QUEUE_STATUS命令(CMD13与位[15]=“1”)来读取这个寄存器,R1的参数将是32位队列状态寄存器(QSR)。QSR中的每个位表示其ID对应于位索引的任务。如果位QSR[i] =“0”,则任务ID i的排队任务没有准备好执行。主机负责跟踪任务的状态,以便它可以确定任务是在排队和等待,还是任务ID未使用。如果位QSR[i] =“1”,则任务ID为i的排队任务已准备好执行

7.8 经过认证的设备配置区域

7.8.1 Authenticated Device Configuration Area[1] : SECURE_WP_MODE_ENABLE

字节是输入/退出安全写保护模式。

如果主机希望设备进入安全写保护模式,主机使用经过验证的设备配置写入请求在此寄存器中将SECURE_WP_EN位设置为“0x1”。可以对此寄存器使用经过身份验证的设备配置读取请求进行读取或读取。如果已经有写受保护的组或写受保护的引导分区,则在进入或退出安全写保护模式时将保留这些组。

7.8.2 Authenticated Device Configuration Area[2] : SECURE _WP_MODE_CONFIG

在安全写保护模式下,USER_WP[171]、BOOT_WP[173]、TMP_WRITE_PROTECT[12]和PERM_WRITE_PROTECT[13]的可更新性由此掩码值控制

此字段的默认值为0x0。

. 0 x0:禁用更新与WP相关的EXT_CSD和CSD字段。CMD27(程序CSD)将生成设置TMP_WRITE_PROTECT[12],PERM_WRITE_PROTECT[13]的通用错误。用于更新USER_WP[171]、BOOT_WP[173]和BOOT_WP_STATUS[174]的CMD6将生成SWITCH_ERROR。如果发出强制擦除命令,该命令将失败(设备保持锁定),并将在状态寄存器中设置LOCK_UNLOCK_FAILED错误位。如果发出了CMD28或CMD29,则会发生通用错误。上电写保护引导分区在断电、人机复置和任何CMD0复置后将保持保护模式。在电源循环、H/W复位声明和任何CMD0复位后,设备保持EXT_CSD寄存器中BOOT_WP_STATUS的当前值不变。

.0x1:启用更新与WP相关的EXT_CSD和CSD字段。I.e TMP_WRITE_PROTECT[12]、PERM_WRITE_PROTECT[13]、USER_WP[171]、BOOT_WP[173]和BOOT_WP_STATUS[174]分别使用CMD6、CMD6、CMD8和CMD27进行访问。如果发出并接受了强制删除命令,那么所有的设备内容都将被删除,包括PWD和PWD_LEN寄存器内容,并且被锁定的设备将被解锁。如果发出强制擦除命令,并且通电保护或设备上存在永久写入保护的写入保护组,该命令将失败(设备保持锁定),并在状态寄存器中设置LOCK_UNLOCK_FAILED错误位。强制删除解锁设备的尝试将失败,并将在状态寄存器中设置LOCK_UNLOCK_FAILED错误位。写入保护应用于CMD28表示的WPG,WP类型由USER_WP[171]的位[2]和位[0]表示。所有临时WP组和开机时受写保护的引导分区暂时成为可写/可擦除的,这意味着写保护类型不会被更改。用户区域中的所有开机和永久WP组将暂时不可写/擦除。当主机将此位清除为0x0,或出现电源故障、H/W重置断言和任何CMD0重置时,这些临时可写/可擦除区域将成为写保护。在电源循环、H/W复位声明和任何CMD0复位后,设备保持EXT_CSD寄存器中BOOT_WP_STATUS的当前值不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNtao99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值