目录
1. Generic Descriptor Format(通用描述符格式)
3. Configuration Descriptor(配置描述符)
6. RPMB Unit Descriptor(RPMB 单元描述符)
7. Power Parameters Descriptor(电源参数描述符)
8. Interconnect Descriptor(互连描述符)
9. Manufacturer Name String Descriptor(制造商名称字符串描述符)
10. Product Name String Descriptor(产品名称字符串描述符)
11. OEM ID String Descriptor(OEM ID 字符串描述符)
12. Serial Number String Descriptor(序列号字符串描述符)
13. Product Revision Level String Descriptor(产品修订级别字符串描述符)
14. Device Health Descriptor(设备健康描述符)
5. fDeviceLifeSpanModeEn (设备生命周期模式启用)
8. fPhyResourceRemoval (物理资源移除)
10. fPermanentlyDisableFwUpdate (永久禁止固件更新)
12. fWriteBoosterBufferFlushEn (写增强器缓冲区刷新启用)
13. fWriteBoosterBufferFlushDuringHibernate (在休眠状态下刷新写增强器缓冲区)
1. bBootLunEn (Boot LUN Enable)
2. bCurrentPowerMode (Current Power Mode)
3. bActiveICCLevel (Active ICC Level)
4. bOutOfOrderDataEn (Out-of-Order Data Transfer Enable)
5. bBackgroundOpStatus (Background Operations Status)
6. bPurgeStatus (Purge Operation Status)
7. bMaxDataInSize (Maximum Data In Size)
8. bMaxDataOutSize (Maximum Data Out Size)
9. dDynCapNeeded (Dynamic Capacity Needed)
10. bRefClkFreq (Reference Clock Frequency)
11. bConfigDescrLock (Configuration Descriptor Lock)
12. bMaxNumOfRTT (Maximum Number of Outstanding RTTs)
13. wExceptionEventControl (Exception Event Control)
14. wExceptionEventStatus (Exception Event Status)
15. dSecondsPassed (Seconds Passed)
16. wContextConf (Context Configuration)
17. bDeviceFFUStatus (Device FFU Status)
19. dPSADataSize (PSA Data Size)
20. bRefClkGatingWaitTime (Reference Clock Gating Wait Time)
21. bDeviceCaseRoughTemperature (Device Case Rough Temperature)
22. bDeviceTooHighTempBoundary (Device Too High Temperature Boundary)
23. bDeviceTooLowTempBoundary (Device Too Low Temperature Boundary)
24. bThrottlingStatus (Throttling Status)
25. bWriteBoosterBufferFlushStatus (WriteBooster Buffer Flush Status)
26. bAvailableWriteBoosterBufferSize (Available WriteBooster Buffer Size)
27. bWriteBoosterBufferLifeTimeEst (WriteBooster Buffer Lifetime Estimate)
28. dCurrentWriteBoosterBufferSize (Current WriteBooster Buffer Size)
29. bRefreshStatus (Refresh Operation Status)
30. bRefreshFreq (Refresh Frequency)
31. bRefreshUnit (Refresh Operation Unit)
32. bRefreshMethod (Refresh Method)
UFS 3.1 中所有描述符的详细介绍
1. Generic Descriptor Format(通用描述符格式)
描述:这是所有描述符的通用格式,定义了描述符的基本结构,包括描述符的长度和类型。每个描述符都以一个 1 字节的长度字段开头,表示描述符的总长度(包括长度字节本身)。第二个字节是描述符类型标识符,用于区分不同类型的描述符。这种通用格式确保了描述符的可读性和可解析性,主机可以通过这些字段快速识别和处理描述符。
2. Device Descriptor(设备描述符)
描述:设备描述符描述了整个 UFS 设备的基本属性,例如设备版本、支持的功能等。这些参数在 UFS 设备出厂时由厂家设置好,主机对它只可读不可写。设备描述符提供了设备的基本信息,如设备版本号、设备类别、子类别和协议类型等,这些信息对于主机识别和配置设备至关重要。
3. Configuration Descriptor(配置描述符)
描述:配置描述符描述了设备的配置信息,例如设备的电源要求、支持的接口等。主机可以通过读取配置描述符来了解设备的配置需求,并根据这些信息进行相应的配置。配置描述符包含多个字段,如总长度、接口数量、配置编号、字符串索引、配置属性和最大功耗等,这些字段提供了设备配置的详细信息。
4. Geometry Descriptor(几何描述符)
描述:几何描述符描述了设备的几何参数,例如设备的物理尺寸和布局。这些参数对于设备的物理设计和布局规划非常重要。几何描述符提供了设备的几何特性,如设备的物理尺寸、形状和布局等信息,这些信息对于设备的制造和安装具有指导意义。
5. Unit Descriptor(单元描述符)
描述:单元描述符描述了逻辑单元(LU)的属性,例如逻辑块大小、容量等。每个逻辑单元都有一个对应的单元描述符,主机可以通过读取单元描述符来了解逻辑单元的详细信息。单元描述符包含多个字段,如单元属性、最大逻辑块地址和最优传输长度等,这些字段提供了逻辑单元的详细信息。
6. RPMB Unit Descriptor(RPMB 单元描述符)
描述:RPMB 单元描述符描述了重播受保护的内存块(RPMB)的属性,例如容量、块大小等。RPMB 是一种特殊的存储区域,用于存储受保护的数据。RPMB 单元描述符提供了 RPMB 区域的详细信息,如容量、块大小和最优传输长度等,这些信息对于数据的安全存储和管理非常重要。
7. Power Parameters Descriptor(电源参数描述符)
描述:电源参数描述符描述了设备的电源参数,例如功耗、电源状态等。这些参数对于设备的电源管理和能效优化非常重要。电源参数描述符提供了设备的电源特性,如功耗、电源状态和电源管理能力等信息,这些信息对于设备的节能和稳定运行具有重要意义。
8. Interconnect Descriptor(互连描述符)
描述:互连描述符描述了设备的互连信息,例如支持的接口类型和版本。这些参数对于设备的互连和通信非常重要。互连描述符提供了设备的互连特性,如支持的接口类型、版本和互连速度等信息,这些信息对于设备的互连和通信具有指导意义。
9. Manufacturer Name String Descriptor(制造商名称字符串描述符)
描述:制造商名称字符串描述符描述了制造商的名称,以字符串形式表示。这些信息对于设备的识别和管理非常重要。制造商名称字符串描述符提供了制造商的名称,主机可以通过读取该描述符来获取制造商的信息。
10. Product Name String Descriptor(产品名称字符串描述符)
描述:产品名称字符串描述符描述了产品的名称,以字符串形式表示。这些信息对于设备的识别和管理非常重要。产品名称字符串描述符提供了产品的名称,主机可以通过读取该描述符来获取产品的信息。
11. OEM ID String Descriptor(OEM ID 字符串描述符)
描述:OEM ID 字符串描述符描述了 OEM ID,以字符串形式表示。这些信息对于设备的识别和管理非常重要。OEM ID 字符串描述符提供了 OEM ID,主机可以通过读取该描述符来获取 OEM 的信息。
12. Serial Number String Descriptor(序列号字符串描述符)
描述:序列号字符串描述符描述了设备的序列号,以字符串形式表示。这些信息对于设备的识别和管理非常重要。序列号字符串描述符提供了设备的序列号,主机可以通过读取该描述符来获取设备的唯一标识。
13. Product Revision Level String Descriptor(产品修订级别字符串描述符)
描述:产品修订级别字符串描述符描述了产品的修订级别,以字符串形式表示。这些信息对于设备的识别和管理非常重要。产品修订级别字符串描述符提供了产品的修订级别,主机可以通过读取该描述符来获取产品的版本信息。
14. Device Health Descriptor(设备健康描述符)
描述:设备健康描述符描述了设备的健康状态,例如剩余寿命、温度等。这些信息对于设备的维护和管理非常重要。设备健康描述符提供了设备的健康状态,如剩余寿命、温度和健康属性等信息,主机可以通过读取该描述符来了解设备的健康状况。
UFS 3.1 中常见的标志的详细列表
1. fDeviceInit (设备初始化)
详细说明:
主机设置
fDeviceInit
标志以在启动过程完成后启动设备初始化。设备在初始化完成后重置该标志。
0b
: 设备初始化已完成或尚未开始。
1b
: 设备初始化正在进行中。
2. fPermanentWPEn (永久写保护启用)
详细说明:
fPermanentWPEn
启用所有配置为永久保护的逻辑单元的永久写保护;一旦设置,无法切换或清除。
00h
: 永久写保护禁用。
01h
: 永久写保护启用。
3. fPowerOnWPEn (开机写保护启用)
详细说明:
fPowerOnWPEn
启用所有配置为开机写保护的逻辑单元的写保护。如果
fPowerOnWPEn
等于1且设备收到清除或切换此标志的查询请求,查询请求将失败,响应字段将设置为“F8h”(参数已写入)。设备在断电或硬件重置时将
fPowerOnWPEn
设置为0。
0b
: 开机写保护禁用。
1b
: 开机写保护启用。
4. fBackgroundOpsEn (后台操作启用)
详细说明:
0b
: 设备不允许运行后台操作。
1b
: 设备允许运行后台操作。
5. fDeviceLifeSpanModeEn (设备生命周期模式启用)
详细说明:
0b
: 设备生命周期模式禁用。
1b
: 设备生命周期模式启用。有关详细信息,请参见13.4.13节,设备生命周期模式。
6. fPurgeEnable (清除启用)
详细说明:
0b
: 清除操作禁用。
1b
: 清除操作启用。此标志仅在所有逻辑单元的命令队列为空且
bPurgeStatus
为00h(空闲)时设置。
fPurgeEnable
在操作完成或发生错误条件时由UFS设备自动清除。主机可以清除
fPurgeEnable
以中断正在进行的清除操作。
7. fRefreshEnable (刷新启用)
详细说明:
0b
: 刷新操作禁用。
1b
: 刷新操作启用。此标志仅在所有逻辑单元的命令队列为空且
bRefreshStatus
为00h(空闲)时设置。
fRefreshEnable
在操作完成或发生错误条件时由UFS设备自动清除。主机可以清除
fRefreshEnable
以中断正在进行的刷新操作。
8. fPhyResourceRemoval (物理资源移除)
详细说明:
主机将此标志设置为1,以指示动态容量操作应在设备EndPointReset或硬件重置时开始。
设备在动态容量操作完成后将此标志重置为0。主机不能重置此标志。
9. fBusyRTC (忙实时钟)
详细说明:
0b
: 设备未执行与RTC相关的内部操作。
1b
: 设备正在执行与RTC相关的内部操作。当此标志设置为1时,建议主机不要向设备发送命令。
10. fPermanentlyDisableFwUpdate (永久禁止固件更新)
详细说明:
0b
: UFS设备的固件可以被修改。
1b
: UFS设备应永久禁止未来的固件更新。
11. fWriteBoosterEn (写增强器启用)
详细说明:
0b
: 写增强器未启用。
1b
: 写增强器启用。
12. fWriteBoosterBufferFlushEn (写增强器缓冲区刷新启用)
详细说明:
0b
: 未执行刷新操作。
1b
: 执行刷新操作。
13. fWriteBoosterBufferFlushDuringHibernate (在休眠状态下刷新写增强器缓冲区)
详细说明:
0b
: 设备在链接休眠状态下不允许刷新写增强器缓冲区。
1b
: 设备在链接休眠状态下允许刷新写增强器缓冲区。
UFS 3.1 中的常见属性及其详细说明
1. bBootLunEn (Boot LUN Enable)
- 详细说明:
00h
: 启动功能禁用。
01h
: 从Boot LU A启动。
02h
: 从Boot LU B启动。其他值:保留。
当
bBootLunEn = 00h
时,启动功能被禁用,设备的行为就像bBootEnable
等于0一样。
2. bCurrentPowerMode (Current Power Mode)
详细说明:
00h
: 空闲电源模式。
10h
: 预激活电源模式。
11h
: 激活电源模式。
20h
: 预睡眠电源模式。
22h
: UFS睡眠电源模式。
30h
: 预断电电源模式。
33h
: UFS断电电源模式。其他值:保留。
3. bActiveICCLevel (Active ICC Level)
详细说明:
bActiveICCLevel
定义了在激活模式下允许的最大电流消耗。
00h
: 最低的激活ICC级别。
0Fh
: 最高的激活ICC级别。有效范围从
00h
到0Fh
。
4. bOutOfOrderDataEn (Out-of-Order Data Transfer Enable)
详细说明:
00h
: 禁用乱序数据传输。
01h
: 启用乱序数据传输。其他值:保留。
该位仅在
bDataOrdering = 01h
时有效。
5. bBackgroundOpStatus (Background Operations Status)
详细说明:
设备健康状态用于后台操作。
00h
: 不需要。
01h
: 需要,但不关键。
02h
: 需要,影响性能。
03h
: 关键。其他值:保留。
6. bPurgeStatus (Purge Operation Status)
详细说明:
00h
: 空闲(清除操作禁用)。
01h
: 清除操作正在进行。
02h
: 清除操作提前终止。
03h
: 清除操作成功完成。
04h
: 清除操作因逻辑单元队列不为空而失败。
05h
: 清除操作一般失败。其他值:保留。
当
bPurgeStatus
等于02h
、03h
、04h
或05h
时,第一次读取后bPurgeStatus
会自动清零(空闲)。
7. bMaxDataInSize (Maximum Data In Size)
详细说明:
数据输入UPIU中的最大数据大小。
值以512字节为单位表示。
bMaxDataInSize
不应超过bMaxInBufferSize
参数。当UFS设备出厂时,
bMaxDataInSize = bMaxInBufferSize
。主机只有在所有逻辑单元任务队列为空时才能写入此参数。
8. bMaxDataOutSize (Maximum Data Out Size)
详细说明:
使用READY TO TRANSFER UPIU请求的最大字节数不应超过此属性指示的值。
值以512字节为单位表示。
bMaxDataOutSize
不应超过bMaxOutBufferSize
参数。当UFS设备出厂时,
bMaxDataOutSize = bMaxOutBufferSize
。主机只有在所有逻辑单元任务队列为空时才能写入此参数。
9. dDynCapNeeded (Dynamic Capacity Needed)
详细说明:
从特定逻辑单元的物理内存资源池中需要移除的物理内存量,以
bOptimalWriteBlockSize
为单位。
10. bRefClkFreq (Reference Clock Frequency)
详细说明:
0h
: 19.2 MHz。
1h
: 26 MHz。
2h
: 38.4 MHz。
3h
: 已废弃。其他值:保留。
11. bConfigDescrLock (Configuration Descriptor Lock)
详细说明:
0h
: 配置描述符未锁定。
1h
: 配置描述符已锁定。其他值:保留。
12. bMaxNumOfRTT (Maximum Number of Outstanding RTTs)
详细说明:
设备中允许的最大未完成RTT数量。
bMaxNumOfRTT
不应超过bDeviceRTTCap
参数。主机只有在所有逻辑单元任务队列为空时才能写入此参数。
13. wExceptionEventControl (Exception Event Control)
详细说明:
此属性启用设置设备信息字段中的EVENT_ALERT位,该字段包含在RESPONSE UPIU中。
EVENT_ALERT
设置为1,表示至少发生了一个异常事件(wExceptionEventStatus[i]
)并且此属性中的相应位(wExceptionEventControl[i]
)为1。位0:
DYNCAP_EVENT_EN
位1:
SYSPOOL_EVENT_EN
位2:
URGENT_BKOPS_EN
位3:
TOO_HIGH_TEMP_EN
位4:
TOO_LOW_TEMP_EN
位5:
WRITEBOOSTER_EVENT_EN
位6:
PERFORMANCE_THROTTLING_EN
位7-15: 保留。
14. wExceptionEventStatus (Exception Event Status)
详细说明:
每个位代表一个异常事件。只有当相关事件发生时,位才会被设置(无论
wExceptionEventControl
状态如何)。位0:
DYNCAP_NEEDED
位1:
SYSPOOL_EXHAUSTED
位2:
URGENT_BKOPS
位3:
TOO_HIGH_TEMP
位4:
TOO_LOW_TEMP
位5:
WRITEBOOSTER_FLUSH_NEEDED
位6:
PERFORMANCE_THROTTLING
位7-15: 保留。
15. dSecondsPassed (Seconds Passed)
详细说明:
从时间基线(TIME BASELINE,参见设备描述符中的
wPeriodicRTCUpdate
)开始经过的秒数。位[31:0]: 经过的秒数。
16. wContextConf (Context Configuration)
详细说明:
INDEX
指定逻辑单元号。
SELECTOR
指定逻辑单元内的上下文ID。有效值为
01h
到Fh
。位[15:8]: 保留。
位[7:6]: 可靠性模式。
00b
: 模式0(正常)。
01b
: 模式1(非大单元,可靠模式或大单元逐个模式)。
10b
: 模式2(大单元,一个单元尾模式)。
11b
: 保留。位[5:3]: 大单元乘数。
如果设置了大单元上下文,此字段定义大单元大小,否则忽略。
位2: 大单元上下文。
0b
: 上下文不遵循大单元规则。
1b
: 上下文遵循大单元规则。位[1:0]: 激活和方向模式。
00b
: 上下文已关闭,不再活跃。
01b
: 上下文已配置并激活为只写上下文。
10b
: 上下文已配置并激活为只读上下文。
11b
: 上下文已配置并激活为读写上下文。
17. bDeviceFFUStatus (Device FFU Status)
详细说明:
00h
: 无信息。
01h
: 微代码更新成功。
02h
: 微代码损坏错误。
03h
: 内部错误。
04h
: 微代码版本不匹配。
05h-FEh
: 保留。
0FFh
: 一般错误。
18. bPSAState (PSA State)
详细说明:
00h
: 关闭。PSA功能关闭。
01h
: 预焊接。PSA功能开启,设备处于预焊接状态。
02h
: 加载完成。PSA功能开启。主机在预焊接状态下完成写入数据后设置为该值。
03h
: 焊接。PSA功能不再可用。设备设置为该值,表示已进入焊接后状态。此属性在进入“焊接”状态后不可更改。
19. dPSADataSize (PSA Data Size)
详细说明:
主机计划加载到所有逻辑单元的数据量,
bPSASensitive
设置为1。值以4 K字节为单位表示。
20. bRefClkGatingWaitTime (Reference Clock Gating Wait Time)
详细说明:
设备在转换到LS-MODE或HIBERN8状态时需要参考时钟的最短时间。
应为此属性设置转换到LS-MODE和HIBERN8状态中较大的时间需求。
00h
: 未定义。
01h
: 1微秒。
FFh
: 255微秒。
21. bDeviceCaseRoughTemperature (Device Case Rough Temperature)
详细说明:
设备外壳的大致温度。
当(支持
TOO_HIGH_TEMPERATURE
并且TOO_HIGH_TEMP_EN
启用)或(支持TOO_LOW_TEMPERATURE
并且TOO_LOW_TEMP_EN
启用)时,此值有效。
0
: 未知温度。
1-250
: (此值 - 80)摄氏度。(即-79°C ~ 170°C)。其他值:保留。
22. bDeviceTooHighTempBoundary (Device Too High Temperature Boundary)
详细说明:
从该温度开始,
TOO_HIGH_TEMP
在wExceptionEventStatus
中被设置。
0
: 未知。
100-250
: (此值 - 80)摄氏度。(即20°C ~ 170°C)。其他值:保留。
23. bDeviceTooLowTempBoundary (Device Too Low Temperature Boundary)
详细说明:
从该温度开始,
TOO_LOW_TEMP
在wExceptionEventStatus
中被设置。
0
: 未知。
1-80
: (此值 - 80)摄氏度。(即-79°C ~ 0°C)。其他值:保留。
24. bThrottlingStatus (Throttling Status)
详细说明:
每个设置的位代表一个导致性能节流的情况。
位0: 温度。
其他位:保留。
25. bWriteBoosterBufferFlushStatus (WriteBooster Buffer Flush Status)
详细说明:
00h
: 空闲。设备未刷新WriteBooster缓冲区:缓冲区为空或未启动刷新。
01h
: 刷新操作正在进行。WriteBooster缓冲区尚未清空,已启动刷新。
02h
: 刷新操作提前终止。WriteBooster缓冲区不为空,主机停止了正在进行的刷新。
03h
: 刷新操作成功完成。
04h
: 刷新操作一般失败。其他值:保留。
当
bWriteBoosterBufferFlushStatus
等于02h
、03h
或04h
时,读取后bWriteBoosterBufferFlushStatus
会自动清零。当状态为03h
时写入WriteBooster缓冲区将自动转换到00h
或01h
。
26. bAvailableWriteBoosterBufferSize (Available WriteBooster Buffer Size)
详细说明:
可用缓冲区大小由WriteBooster操作减少,由刷新操作增加。
值以10%为单位表示。
00h
: 0%缓冲区剩余。
01h
: 10%缓冲区剩余。
02h-09h
: 20%~90%缓冲区剩余。
0Ah
: 100%缓冲区剩余。其他值:保留。
该属性报告的百分比是当前WriteBooster缓冲区大小的剩余部分,由
dCurrentWriteBoosterBufferSize
属性指示。
27. bWriteBoosterBufferLifeTimeEst (WriteBooster Buffer Lifetime Estimate)
详细说明:
该字段提供了基于执行的编程/擦除周期的WriteBooster缓冲区寿命的指示。
在保留用户空间配置的情况下,由于WriteBooster缓冲区与用户空间共享,写入正常用户空间将减少寿命。
详细计算方法由供应商特定。
00h
: 信息不可用(WriteBooster缓冲区禁用)。
01h
: 0% - 10% WriteBooster缓冲区寿命已使用。
02h
: 10% - 20% WriteBooster缓冲区寿命已使用。
03h
: 20% - 30% WriteBooster缓冲区寿命已使用。
04h
: 30% - 40% WriteBooster缓冲区寿命已使用。
05h
: 40% - 50% WriteBooster缓冲区寿命已使用。
06h
: 50% - 60% WriteBooster缓冲区寿命已使用。
07h
: 60% - 70% WriteBooster缓冲区寿命已使用。
08h
: 70% - 80% WriteBooster缓冲区寿命已使用。
09h
: 80% - 90% WriteBooster缓冲区寿命已使用。
0Ah
: 90% - 100% WriteBooster缓冲区寿命已使用。
0Bh
: 超过最大估计的WriteBooster缓冲区寿命(写入命令将被处理为WriteBooster功能已禁用)。其他值:保留。
28. dCurrentWriteBoosterBufferSize (Current WriteBooster Buffer Size)
详细说明:
当前WriteBooster缓冲区大小。
在保留用户空间模式下,根据剩余的用户空间,WriteBooster缓冲区的存储块可能被用于用户空间。因此,WriteBooster缓冲区大小可能小于最初配置的大小。
主机可以通过检查此属性来查看当前WriteBooster缓冲区大小。
值以分配单元为单位表示。
如果此值为0,则当前WriteBooster缓冲区大小为0。
在用户空间减少模式下,此值应与
dLUNumWriteBoosterBufferAllocUnits
或dNumSharedWriteBoosterBufferAllocUnits
的值相同,具体取决于缓冲区配置模式。
29. bRefreshStatus (Refresh Operation Status)
详细说明:
00h
: 空闲(刷新操作禁用)。
01h
: 刷新操作正在进行。
02h
: 刷新操作提前终止。
03h
: 刷新操作成功完成。
04h
: 刷新操作因逻辑单元队列不为空而失败。
05h
: 刷新操作一般失败。其他值:保留。
当
bRefreshStatus
等于02h
、03h
、04h
或05h
时,第一次读取后bRefreshStatus
会自动清零(空闲)。
30. bRefreshFreq (Refresh Frequency)
详细说明:
主机应确保
dRefreshTotalCount
在此频率上递增。
00h
: 未定义。
01h
: 1个月。
02h
: 2个月。
FFh
: 255个月。
31. bRefreshUnit (Refresh Operation Unit)
详细说明:
此属性可以设置以调整单个请求(即
fRefreshEnable
设置为1)时需要刷新的最小物理块数量。
00h
: 设备的最小刷新能力。
01h
: 100.000%(即整个设备)。其他值:保留。
32. bRefreshMethod (Refresh Method)
详细说明:
此参数指定刷新操作方法。
00h
: 未定义。
01h
: 手动-强制。
设备必须刷新主机请求的物理块数量,无论这些块是否需要刷新。
刷新命令刷新
bRefreshUnit
中指定的物理块数量。刷新从上次停止的下一个物理块开始(或如果刷新从未触发过,则从第一个块开始)。
02h
: 手动-选择性。
刷新命令刷新
bRefreshUnit
中指定的物理块数量。刷新从上次停止的下一个物理块开始(或如果刷新从未触发过,则从第一个块开始)。
设备只刷新它认为需要刷新的块。
无论实际刷新的块如何,一旦刷新命令完成,
dRefreshProgress
增加bRefreshUnit
。其他值:保留。