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来读取或者写属性。

UFS系列7:描述符、标识和属性相关推荐

  1. python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过 ...

  2. python描述符与实例属性_Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  3. Javascript高级教程:数据属性描述符与存储属性描述符

    属性描述符 let obj = {name: "ziu",age: 18 } Object.defineProperty(obj, "height", {val ...

  4. 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API

    Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...

  5. 4. linux调用文件计算阶乘前5项和_嵌入式Linux系统编程——文件读写访问、属性、描述符、API

    Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...

  6. Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)

    属性取值和赋值过程 一切皆是对象,类型也是对象. 对象包含一个__class__属性指向其所属类型. 对象包含一个__dict__属性指向其所包含的成员(属性和方法). 取值过程(下面是伪代码) 1 ...

  7. 【Java 虚拟机原理】Class 字节码二进制文件分析 四 ( 字段表数据结构 | 字段表详细分析 | 访问标志 | 字段名称 | 字段描述符 | 属性项目 )

    文章目录 前言 一.字段表总数据结构 二.访问标志 三.字段名称 四.字段描述符 五.属性项目数 前言 上一篇博客 [Java 虚拟机原理]Class 字节码二进制文件分析 三 ( 访问和修饰标志 | ...

  8. Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  9. python 属性描述符_Python属性描述符(二)

    Python存取属性的方式特别不对等,通过实例读取属性时,通常返回的是实例中定义的属性,但如果实例未曾定义过该属性,就会获取类属性,而为实例的属性赋值时,通常会在实例中创建属性,而不会影响到类本身.这 ...

最新文章

  1. pandas中的基本功能
  2. 基于角色的权限设计(一)
  3. 使用Eclipse连接SAP云平台上的HANA数据库实例
  4. 苏州大学实验报告模板C语言,苏州大学实验报告-实验flash在线编程实验
  5. 《Java并发性和多线程介绍》-Java TheadLocal
  6. cent7中kickstart
  7. erlang rebar 配置mysql_Centos6.4安装erlang并配置mysql数据库
  8. [转载] 知乎日报接口
  9. Leetcode - Reverse Words
  10. Pycharm下tensorflow导入错误
  11. Android 资源(resource)学习小结
  12. 从头开始写项目Makefile(六):参数传递、条件判断、include
  13. ❤The Matrix黑客帝国屏保!!!❤HTML实现及其傻瓜安装你值得拥有
  14. 弗兰克赫兹实验matlab画图,物理实验论文
  15. Agv、Rgv 车辆控制调度系统开发第七篇-选车算法
  16. 如何“杀”趋势杀毒网络版
  17. 业余选手击打高远球的三个错误
  18. 软件开发搞定操作系统
  19. 深圳市福田高中2021年高考成绩查询,2020年深圳高中梯队排行一览!2021年十大或有新格局?...
  20. ORACLE应用产品和SAP、SSA、SYMIX产品的比较分析

热门文章

  1. 【雅思】【绿宝书错词本】List1~12
  2. date(dateable)
  3. 机器学习发展历史及现状(重要的期刊,会议,大牛总结)
  4. 每周新品|鉴黄API上线 云市场2017最值得期待的产品盘点
  5. 优化(学习)公司的webpack配置(一)
  6. 基于Matlab脚本实现对串口数据的实时采集绘图
  7. 高德地图-根据经纬度获取地址(逆地理编码)
  8. 做人不能太腾讯(转帖)
  9. ros--rosbag
  10. 芜湖c语言市赛答案,安徽省芜湖市2019-2020学年高二上学期期末考试 数学(文) Word版含答案...