蛋蛋读UFS之七:描述符、标识和属性

原创内容,转载请注明:  [http://www.ssdfans.com]  谢谢!

UFS中也有吉祥三宝,那就是描述符(Descriptors)、标识(Flags)和属性(Attributes),主机通过这三宝,来控制与管理UFS设备。

  • 描述符

描述符是一块或者一页参数用以描述一个UFS设备,比如,UFS有整个UFS设备的描述符 (Device Descriptor),UFS设备的配置描述符(Configuration Descriptor),每一个LU还有其描述符(Unit Descriptor),等等。下面是UFS里面所有种类的描述符。

除了配置描述符和OEM_ID字符串描述符,所有的描述符都是只读的,即UFS设备一旦出厂,主机是不能对它进行修改。

还记得Query Request UPIU吗?主机是通过设备管理器来访问这些描述符的。

主机读描述符:

主机通过发Query Request UPIU给UFS设备,然后设备通过Query Response UPIU返回描述符数据。

主机写描述符:

主机如果想更改配置,可以写配置描述符。主机要写入的数据包含在Query Request UPIU中,一旦UFS设备更新完,返回Query Response UPIU。

我们简单过一下上面的这些描述符,更加详细的描述大家可以自行看UFS spec。

UFS设备只有一个,所以只有一个设备描述符;

一共有32个普通LU,每个LU有一个逻辑单元描述符,所以最多有32个逻辑单元描述符;

每8个LU有一个配置描述符,所以一共最多4个配置描述符。

1. 设备描述符

设备描述符就是描述整个UFS设备属性的描述符,这些参数在UFS设备出厂时就由厂家设置好,主机对它只可读不可写。

上面只是截取了一部分设备描述符数据结构内容,有关完整的设备描述符内容,大家可以看spec。

前面说了设备描述符是只读属性,为什么我们看到设备描述符里的有些项是可配置的呢?设备描述符的确只可能读不可写,但是主机通过写配置描述符(主机可写),然后这些项的变化就反映到设备描述符里来了。

UFS设备只有一个,所以一共只有一个设备描述符。

2. 逻辑单元(LU)描述符

逻辑单元描述符用来描述某个具体LU的特性和能力,比如该LU逻辑块大小、该逻辑块是不是存有启动代码、该逻辑块内存类型等等。

对于逻辑单元描述符中可配置的项,主机可以通过写配置描述符进行相应的更改。

3. 配置描述符

用户想对UFS做一些配置,或者使能/禁止一些feature, 可以通过写配置描述符达到目的。这些项的更新会反映到设备描述符或者逻辑单元描述符上。注意只有在属性(Attribute)bConfigDescrLock = 0时才可以写配置描述符,即配置描述符没有被锁住,配置描述符才能写,否则也是只读的。

UFS2.1有32个普通的LU,每8个LU有个配置描述符,所以一共有4个描述符。

拿出一个配置描述符来看看它的格式。

该配置描述符,包含了设备描述符可配置的参数和LU 0-7中可配置的参数。

举例来说,bBootEnable是设备描述符中一个可配置的项。它在出厂设置时bBootEnable = 0,用户在使用UFS设备时,把启动代码存放在UFS设备上,因此,为使能Boot feature, 用户须通过写配置描述符把该比特置起来:bBootEnable = 1。然后,主机在读取设备描述符的时候,会看到bBootEnable 变成了1。

除了配置UFS设备,配置描述符还可以对每一个LU进行配置。

比如,主机可以通过写配置描述符,使能某个LU,或者设置某个LU的逻辑块大小,以及其它和LU相关的配置。

UFS中还有其它的一些描述符,这里就不一一细看。

我们接下里看看另一宝:标志(flags)。

  • 标志(flags

UFS中的标志其实就是一些开关,布尔型,非0即1,打开或者关闭。这些标志可以用来使能或者禁止UFS设备的一些功能、模式或者状态。

在UFS2.1协议中,一共有以下一些标志:

主机也是通过设备管理器的Query Request UPIU来读取或者写标志。

  • 属性(Attributes

如果说flags是布尔类型,那么属性就是C语言中的枚举类型。属性的值不仅仅是0或者1,它是一定数字范围的。属性可以表示设备的一些状态,比如当前设备后台任务的状态。有些属性,主机只可读,有些属性,主机可以写。

主机也是通过设备管理器的Query Request UPIU来读取或者写属性。

分类目录 存储, 技术文章.
扫一扫二维码或者微信搜索公众号ssdfans关注(添加朋友->点最下面的公众号->搜索ssdfans),可以经常看到SSD技术和产业的文章(SSD Fans只推送干货)。
ssdfans微信群介绍
技术讨论群 覆盖2000多位中国和世界华人圈SSD以及存储技术精英
固件、软件、测试群 固件、软件和测试技术讨论
异构计算群 讨论人工智能和GPU、FPGA、CPU异构计算
ASIC-FPGA群 芯片和FPGA硬件技术讨论群
闪存器件群 NAND、3D XPoint等固态存储介质技术讨论
企业级 企业级SSD、企业级存储
销售群 全国SSD供应商都在这里,砍砍价,会比某东便宜20%
工作求职群 存储行业换工作,发招聘,要关注各大公司招聘信息,赶快来
高管群 各大SSD相关存储公司高管和创始人、投资人

想加入这些群,请微信扫描下面二维码,或搜索nanoarchplus,加阿呆为微信好友,介绍你的昵称-单位-职务,注明群名,拉你进群。SSD业界需要什么帮助,也可以找阿呆聊。