UFS协议—新手快速入门(五)【11-13】

目录

十一、逻辑单元(Logical Unit, LU)

1、概念

2、UFS逻辑单元的独立特性

3、Well known LU

(1)Boot Logical Units(BOOT LUs)

(2)RPMB(Replay Protected Memory Block)

(3)Report LUNS LU(Logical Unit)

(4)UFS Device LU

十二、UFS设备初始化与启动流程

1、部分初始化阶段

2、加载启动代码(可选)

3、初始化完成

十三、描述符、标识和属性

1、描述符(Descriptors)

2、标识(Flags)

3、属性(Attributes)


UFS协议—新手快速入门(一)【1-4】 

UFS协议—新手快速入门(二)【5-6】 

UFS协议—新手快速入门(三)【7-9】 

UFS协议—新手快速入门(四)【10】 

十一、逻辑单元(Logical Unit, LU)

1、概念

在UFS(Universal Flash Storage)标准中,逻辑单元(Logical Unit, LU)是将物理存储空间划分为多个逻辑地址空间,以便于操作系统和应用程序能够更加灵活和高效地管理数据。

首先,想象一下你有一个非常大的书架,这个书架可以存放很多书籍。但是为了方便管理,你可能会将书架分成几个区域,每个区域放一类书籍,比如科幻小说、历史书籍等。这样,当你想要找一本书的时候,你可以直接去它所属的区域,而不是在整个书架上乱翻。

在UFS这种存储技术中,"namespace"(命名空间)的概念就类似于书架上的这些区域。它们把一个大的存储设备分成了多个小的、独立的存储空间,每个空间都有自己的地址系统,可以独立地存储和管理数据。

UFS中的"LU"(Logical Unit,逻辑单元)就是这些独立的存储空间之一。每个LU都有自己的地址范围,就像书架上的一个特定区域。当你想要访问某个LU中的数据时,你需要通过一个叫做"LUN"(Logical Unit Number,逻辑单元号)的东西来指定你想要访问的是哪个LU。这就像是告诉别人:“嘿,我想要找科幻小说区域的那本书。”

在UFS设备中,每个命令或者请求都会通过一个UPIU(UFS协议信息单元)来发送,而UPIU的Header部分会包含一个LUN字段,这个字段就是用来告诉设备:“嘿,我要找的是第几个逻辑单元的数据。”这样,设备就知道该去哪个独立的存储空间中查找数据了。

总的来说,namespace和LU的概念就是为了方便管理和访问存储设备中的数据,通过将一个大的存储空间分割成多个小的、独立的部分,使得数据的组织和访问更加有序和高效。

2、UFS逻辑单元的独立特性

在UFS设备架构中,存在多个逻辑单元(LUs),它们各自独立地接收来自主机的命令和请求。这些命令和请求可能源自应用层的SCSI模块、设备管理器或任务管理器。每个逻辑单元的独立性体现在以下几个关键方面:

  1. 独立的逻辑地址空间:每个LU拥有自己的逻辑地址空间,且均从逻辑块地址(LBA)0开始计数,确保了地址的唯一性和独立性。
  2. 可变逻辑块大小:LUs可以配置不同的逻辑块大小,例如4KB或其他大小,以适应不同的存储需求和优化性能。
  3. 差异化的安全属性:每个LU能够设定其独特的安全属性,包括但不限于不同的写保护机制,增强数据的安全性。
  4. 独立的命令队列:每个LU拥有自己的命令队列,使得命令处理更加高效,减少了不同LU间的相互干扰。
  5. 专用的数据存储:不同的LU可以用于存储不同类型的数据。例如,某些LU可能专用于存储系统启动代码,确保快速启动;其他LU可能用于存储常规应用数据,而还有一些LU可能用于存储敏感或特殊的用户数据。

3、Well known LU

在UFS 2.1的存储架构中,除了支持多达32个普通逻辑单元(LUs)以满足多样化的数据存储需求外,还特别定义了四个"well-known LUs"。这些特殊的LUs因其独特的功能和普遍的重要性而得名,它们分别是:

(1)Boot Logical Units(BOOT LUs)

启动逻辑单元,专用于存储系统启动所需的关键代码和数据,确保设备能够快速且可靠地启动。

BOOT Logical Units (LUs) 通常被称为启动逻辑单元,它们在UFS设备中扮演着至关重要的角色。尽管它们的名字暗示它们直接存储启动代码,实际上,BOOT LUs是虚拟的概念,用于逻辑上标识存储启动代码的物理位置。

在UFS设备中,存在两个BOOT LUs,即BOOT LU ABOOT LU B。这两个BOOT LUs的设计允许设备存储两套不同的启动代码,例如,一套是最新的启动代码,另一套可能是旧版本的备份。这种设计提供了灵活性和容错能力,确保设备即使在更新过程中遇到问题也能正常启动。

在启动过程中,只有一个BOOT LU是被设置为活跃状态的。这意味着,尽管物理上两套启动代码可能存储在不同的普通LU上,但系统只会从一个指定的活跃BOOT LU加载启动代码。这种机制允许设备在需要时切换到另一套启动代码,例如在系统升级或恢复过程中。

UFS设备中可以设置多个BOOT LUs,比如LU 1作为Boot LU A,LU 4作为Boot LU B,它们分别存储了不同的启动代码。为了确定在启动时使用哪一份启动代码,系统会遵循以下步骤:

  1. Query请求:在主机启动过程中,设备管理器或相应的管理软件会向UFS设备发送一个Query请求。
  2. 获取属性:Query请求的目的是获取UFS设备的特定属性,这里特别关注的是bBootLunEn属性。
  3. 确定活跃LUbBootLunEn属性指示了当前哪个BOOT LU是活跃的。这个属性告诉系统应该从Boot LU A(LU 1)还是Boot LU B(LU 4)加载启动代码。

一旦系统通过Query请求得知了活跃的BOOT LU,它就会从该LU读取启动代码,并继续启动过程。这种机制确保了即使在有多个BOOT LUs的情况下,系统也能正确地识别和加载正确的启动代码,从而保证设备的顺利启动。

以下是对这一过程的简洁描述,可以作为解释这一机制的参考:

启动流程决策

  • 主机启动时,设备管理器向UFS设备发起Query请求。
  • 设备响应请求,提供bBootLunEn属性,标识当前活跃的BOOT LU。
  • 系统根据bBootLunEn属性的指示,选择从Boot LU A(LU 1)或Boot LU B(LU 4)加载启动代码,完成启动过程。
(2)RPMB(Replay Protected Memory Block)

RPMB(Replay Protected Memory Block)LU是UFS设备中一个特殊的逻辑单元,它提供了一种安全的数据存储机制,以确保数据的完整性和真实性。以下是对RPMB LU功能的进一步解释:

RPMB LU的功能特点

  1. 数据合法性校验:当主机向RPMB LU写入数据时,UFS设备会进行校验,确保只有经过授权的主机才能成功写入数据。这防止了未授权的修改和潜在的数据篡改。

  2. 读写保护:RPMB LU的设计确保了数据在写入时受到保护,同时在读取时也能进行校验,以验证数据的来源和完整性。

  3. 防重放攻击:RPMB技术通过使用计数器来防止旧数据被重放。每次写入操作都会更新计数器,确保数据的顺序性和最新性。

  4. 数据隔离:RPMB LU通常与其他LUs隔离,这意味着存储在RPMB LU中的数据是独立的,不会与其他数据混淆,从而提高了安全性。

  5. 专用用途:RPMB LU通常用于存储敏感数据,如安全令牌、加密密钥、认证信息等,这些数据对于设备的安全性至关重要。

RPMB LU是UFS设备安全性的重要组成部分,为设备提供了一个安全的数据存储环境,保护了数据的完整性和真实性。

(3)Report LUNS LU(Logical Unit)

Report LUNS LU(Logical Unit)允许主机获取设备上所有逻辑单元的列表。

Report LUNS LU的功能:

  1. 设备LU清单汇报:Report LUNS LU的主要功能是向主机提供设备上所有逻辑单元的清单,包括普通LU和特殊LU(如BOOT LUs和RPMB LU)。

  2. 命令交互:主机通过发送特定的命令——"Report LUNS"——来请求Report LUNS LU提供当前设备上所有LU的详细信息。

  3. 信息获取:通过这个命令,主机能够了解每个LU的属性,例如LU的编号、大小、类型(普通或特殊)、以及它们是否是活跃的等。

  4. 设备管理:这种信息对于设备的管理和配置至关重要,因为它帮助主机了解如何与设备上的各个LU进行交互。

  5. 兼容性和灵活性:Report LUNS LU确保了UFS设备能够与不同主机系统兼容,无论主机系统如何变化,都能通过这个命令获取必要的信息。

Report LUNS LU是UFS设备架构中的一个关键组成部分,它为主机提供了一种机制来获取有关设备存储结构的重要信息,从而确保数据存储和管理的高效性和准确性。

(4)UFS Device LU

UFS Device LU(UFS设备逻辑单元)是UFS架构中的一个特殊逻辑单元,它代表整个UFS设备而不是单个的存储区域。以下是对UFS Device LU功能的进一步解释:

UFS Device LU的功能:

  1. 全局命令接收:当UFS主机需要对整个UFS设备执行操作,而不是针对特定LU时,UFS Device LU就是命令的接收者。

  2. 设备级操作:UFS Device LU允许执行影响整个设备的命令,例如格式化(FORMAT UNIT命令)或更改功耗模式(START STOP UNIT命令)。

  3. 设备管理:它为设备管理提供了一个集中的接口,使得主机可以轻松地对设备进行配置和管理。

  4. 兼容性:UFS Device LU确保了不同主机系统与UFS设备之间的兼容性,允许主机通过标准的命令集与设备交互。

  5. 安全性和维护:通过UFS Device LU,主机可以执行一些关键的维护任务,如安全擦除或固件更新。

UFS Device LU是UFS设备中不可或缺的一部分,它为主机提供了一种直接与整个设备交互的方式,使得设备管理更加高效和集中。

值得注意的是:在UFS设备中,写入操作的处理方式因逻辑单元(LU)的类型而异。对于Boot LU和RPMB LU,写入操作不支持缓存(cache)操作,这意味着数据必须实际写入到闪存中,写命令才会被标记为完成。这种直接写入确保了数据的安全性和完整性,特别是在需要保护启动代码或安全关键数据时。相反,对于普通的LU,写入操作通常涉及缓存操作,即主机发送的数据首先被存储在设备的内部缓冲区中,然后设备会向主机返回命令完成的状态。这种方式可以提高写入性能,但在安全性方面不如直接写入操作。

十二、UFS设备初始化与启动流程

UFS设备的初始化和启动是一个有序的过程,可以分为三个主要阶段:部分初始化、加载启动代码(如果适用),以及初始化完成。以下是对整个过程的总结:

1、部分初始化阶段

  • 过程始于设备上电或重启。
  • 涉及UFS栈的全面初始化。
  • 完成后,物理层(M-PHY)和数据链路层(UniPro)准备就绪,传输层能够响应Read命令和“TEST UNIT READY”命令。
  • 主机可以通过设备管理器访问设备描述符,获取设备配置信息。

2、加载启动代码(可选)

  • 如果启动代码不存储在UFS设备上,则跳过此阶段。
  • 主机通过设备描述符中的“bBootLunEn”属性判断启动代码是否存储在UFS设备上。
  • 如果“bBootLunEn”属性指示启动代码存在,主机读取单元描述符以确定存储启动代码的具体LU。
  • 主机向该LU发送“TEST UNIT READY”命令,确认其准备状态,然后通过READ命令加载启动代码。

3、初始化完成

  • 主机设置fDeviceInit标志为1,开始初始化过程。
  • UFS设备继续完成其固件的初始化。
  • 当设备准备就绪,能够响应所有命令或请求时,清除fDeviceInit标志,即设置为0。
  • 主机检测到fDeviceInit为0时,表明UFS设备初始化完成,此时主机可以发送UFS协议中的任何命令或请求。

启动过程总结

  • 主机对UFS设备进行上电或重启。
  • 主机和设备端的物理层和数据链路层完成初始化。
  • 主机通过NOP OUT UPIU ping设备,设备回送NOP IN UPIU确认连接正常。
  • 如果设备描述符可访问(bDescrAccessEn不为0),主机读取描述符以确定是否需要加载启动代码。
  • 主机向相应的LU发送“TEST UNIT READY”和READ命令,加载启动代码(如果需要)。
  • 主机设置并轮询fDeviceInit标志,直至标志清除,表示UFS设备完全初始化。
  • 完成所有步骤后,UFS设备准备就绪,可以执行主机的任何命令或请求。

这个过程确保了UFS设备在启动时能够安全、可靠地完成初始化,并准备好与主机进行数据交换。

十三、描述符、标识和属性

在UFS(Universal Flash Storage)技术中,描述符(Descriptors)、标识(Flags)和属性(Attributes)确实构成了设备管理和控制的基石。

1、描述符(Descriptors)

  • 描述符提供了UFS设备的关键信息,包括设备的能力、配置和状态。
  • 主机通过读取描述符来了解设备的容量、支持的功能、固件版本等信息。
  • 描述符是主机与UFS设备进行有效通信的基础。

在UFS(Universal Flash Storage)技术中,描述符是设备信息和配置的主要载体。以下是对主机如何读取和写入描述符的整理,以及对不同类型描述符的解释:

主机与描述符的交互:

  • 读取描述符:主机通过Query Request UPIU来读取描述符,UFS设备在接收到请求后,通过Query Response UPIU返回描述符数据。
  • 写入描述符:如果需要更改配置,主机可以写入配置描述符。写入操作同样通过Query Request UPIU进行,设备更新配置后,会通过Query Response UPIU确认更改。

描述符类型:

1、设备描述符(Device Descriptor)

  • 描述整个UFS设备的属性。
  • 通常只读,但通过写配置描述符间接修改。

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

  • 描述单个LU的特性和能力,如逻辑块大小、是否存储启动代码等。

3、配置描述符(Configuration Descriptor)

  • 允许用户对UFS设备或LU进行配置。
  • 更新会反映到设备描述符或LU描述符上。
  • 只有在bConfigDescrLock属性为0(未锁定)时可写。

描述符的读写规则:

  • 除了配置描述符外,其他描述符通常是只读的。
  • 配置描述符允许主机更改UFS设备或LU的配置,但写入前需要检查是否被锁定。

示例:

  • 设备描述符中的bBootEnable项出厂时可能设置为0(Boot功能未启用)。
  • 用户若要启用Boot功能,需写入配置描述符以更改bBootEnable为1。
  • 更改后,主机再次读取设备描述符时,会看到bBootEnable更新为1。

UFS 2.1的配置描述符数量:

  • UFS 2.1支持最多32个普通LU,每8个LU共享一个配置描述符,因此共有4个配置描述符。

2、标识(Flags)

在UFS(Universal Flash Storage)技术中,标志(Flags)是一种重要的控制机制,用于管理设备的多种功能和状态。

  • 控制功能:标志作为开关,可以启用(1)或禁用(0)UFS设备中的特定功能。
  • 管理状态:标志可以用来指示设备是否处于某种特定的状态或模式。
  • 布尔类型:标志是布尔值,只有两种状态:非0(真)表示开启,0(假)表示关闭。

3、属性(Attributes)

在UFS(Universal Flash Storage)技术中,属性(Attributes)提供了一种更细致的方式来描述和控制设备的状态和行为。

  • 状态表示:属性可以表示设备的多种状态,如后台任务的执行情况。
  • 范围取值:与标志(Flags)不同,属性的值可以在一定范围内变化,而不仅仅是0或1。

下期预告:UFS协议—新手快速入门(六)   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748022.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用提示词调教AI

“AI 是我们的数字员工,了解员工的秉性 , 从调教提示词开始。” 网上流传最广的提示词方法论,是“你需要给大模型一个角色”。这确实是一个好的策略,因为小学老师,大学老师这样的角色,预设很多背景信息。这…

独立开发者系列(11)——登录与鉴权

从原理上讲,登录很简单,就是输入账号密码和后台的数据库进行匹配,匹配上了就表示登录了,否则没有登录。这里主要总结的问题,用户登录之后,服务器端怎么确定你登录了,认定身份这个问题。 在刚学会…

德力西空调漏电保护开关HDF-LB32A40A家用电热水器漏电保护器开关

品牌 德力西 型号 HDF-LB 额定电流 40A,32A 漏电保护器类型 2P 产地 中国大陆 电压 1000V及以下 极数 2P 电源方式 交流电 3C证书编号 2020960306000014 独有外观,纤薄时尚,家用漏电保护开关,防触电,漏电保…

C语⾔数据类型和变量

C语⾔数据类型和变量 1.数据类型介绍1.1 字符型1.2 整型1.3 浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof中表达式不计算 2. signed 和 unsigned3. 数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5. 算术操作符&#…

最新AI智能聊天对话问答系统源码(详细图文搭建部署教程)+AI绘画系统,DALL-E3文生图, Whisper TTS 语音识别,文档分析

一、人工智能 随着人工智能技术的持续进步,AI绘画已经发展成为一个日益成熟的领域。越来越多的人开始尝试使用AI绘画软件来创作艺术作品。尽管这些AI绘画软件对绘画领域产生了显著影响,但它们并不会完全取代画师。与传统手绘不同,AI绘画可以…

【C++】运算符重载(日期类的实现)

文章目录 前言一、运算符重载的概念和意义二、运算符重载的规则三、常用运算符重载1.关系运算符重载2.赋值运算符重载3.、-、、-重载4.前置和后置重载5.流插入<<和流提取>>重载 前言 之前在总结类的六个默认成员函数时&#xff0c;没有过多介绍运算符重载&#xf…

实时显示用户输入PySide6实例

如何用 PySide6 实现QLabel 实时显示用户在 QLineEdit 内输入的内容&#xff1f; 示例代码&#xff1a; # QLineEdit 用户输入内容&#xff0c;QLabel 即时显示用户输入训练from PySide6.QtWidgets import (QApplication, QWidget,QLabel, QLineEdit, QVBoxLayout)class MyWi…

ROS学习记录:Hector_Mapping建图的参数设置

前言 launch文件启动Hector_Mapping的建图功能 在上一篇文章&#xff08;以上链接&#xff09;通过launch文件启动了Hector_Mapping建图功能&#xff0c;这一篇文章将在launch文件里给Hector_Mapping设置参数 一、Hector_Mapping有哪些参数 1、浏览器搜索并进入 ROS index 2…

Redis-实战篇-编码解决商铺查询的缓存穿透问题(缓存空对象)

文章目录 1、缓存穿透2、常见的解决方案有两种&#xff1a;2.1、缓存空对象2.2、布隆过滤器 3、编码解决商铺查询的缓存穿透问题3.1、queryById3.2、RedisConstants.java 1、缓存穿透 缓存击穿是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效…

首次30米空间分辨率生成中国年度耕地栅格数据1986-2021

中国1986-2021年30米分辨率年度耕地数据集 数据介绍 精确、详细且及时的耕地范围信息对于粮食安全保障和环境可持续性至关重要。然而&#xff0c;由于农业景观的复杂性和足够训练样本的缺乏&#xff0c;在大范围下进行高时空分辨率的耕地动态监测仍然具有挑战性&#xff0c;尤其…

1.Android逆向协议-环境搭建

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易锦网校 不是安卓逆向吗&#xff1f;为什么写java代码&#xff1f;因为逆向的时候涉及java语言 JDK环境搭建&#xff1a;JDK是JAVA语…

基于RK3568车载电脑助力日本巴士公司高效完成巴士到站系统项目部署

无处不在的物联网&#xff08;IoT&#xff09;技术已经渗透到了人类生活的各个角落&#xff0c;如日常出行乘坐的公交车上&#xff0c;物联网&#xff08;IoT&#xff09;技术的应用就得到完美诠释&#xff01;其通过公交车上的车载电脑网络与中控室服务器连接来对公交车的运行…

Jira实践案例分享:小米集团如何通过API请求优化、数据治理与AI智能客服等,实现Jira系统的高效运维

日前&#xff0c;Atlassian中国合作伙伴企业日活动在上海成功举办。活动以“AI协同 创未来——如何利用人工智能提升团队协作&#xff0c;加速产品交付”为主题&#xff0c;深入探讨了AI技术在团队协作与产品交付中的创新应用与实践&#xff0c;吸引了众多业内专家、企业客户及…

自定义注解实现幂等

在前面的文章中&#xff0c;我们说过解决消息重复消费的方式中&#xff0c;有一个方式是幂等&#xff0c;那么幂等是怎么实现呢&#xff1f; 面试官&#xff1a;对于MQ中的消息重复消费说说的你的理解 一、定义 首先我们先来了解一下幂等的定义&#xff0c;它指的是同一个操作…

嵌入式Linux系统编程 — 3.7 文件目录与处理

目录 1 文件目录 1.1 文件目录简介 1.2 目录存储形式 2 创建和删除目录 2.1 mkdir创建目录 2.2 rmdir删除空目录 3 opendir打开、 readdir读取以及closedir关闭目录 3.1 打开文件 opendir 3.2 读取目录 readdir 3.3 重置目录起点rewinddir 3.4 关闭目录 closedir 3…

基于DeepNLP AI Store真人点评和ShowCase分享社区-AI for Image Generator

来源 quora 社区: https://deepnlpaistore.quora.com/ github: https://rockingdingo.github.io/deepnlp/store/image_generator 内容 DeepNLP AI Store 网址&#xff1a;http://www.deepnlp.org/store/image-generator 网站针对图像生成类别 Image Generator下多个AI工具如 …

第 28 篇 : SSH秘钥登录

1 生成秘钥 ssh-keygen -t rsa ls -a ./.ssh/一直回车就行了 2. 修改配置 vi /etc/ssh/sshd_config放开注释 公钥的位置修改 关闭密码登录 PubkeyAuthentication yes AuthorizedKeysFile .ssh/id_rsa.pub PasswordAuthentication no3. 下载id_rsa私钥, 自行解决 注意…

Websocket在Java中的实践——自动注册端点

在《Websocket在Java中的实践——握手拦截器》中我们使用握手拦截器实现了路径解析的工作。这个过程略显复杂&#xff0c;因为路径解析这样比较底层的工作应该由框架来解决&#xff0c;而不应该交由开发者来做。本文介绍的自动注册端点的功能就可以很优雅的解决这个问题。 依赖…

GNU、Unix、Linux、Makefile、GCC、GDB、GPL、CentOS 7、Ubuntu之间的关系

全文总结 早期&#xff0c;Unix系统作为一类强大的操作系统&#xff0c;在计算领域奠定了基础。然而&#xff0c;出于对软件自由的追求&#xff0c;Richard Stallman在1983年发起了GNU项目&#xff0c;旨在创建一个完全自由的、与Unix兼容的操作系统。GNU项目不仅倡议软件自由…

初创企业合规管理中的企业合规义务边界问题

在初创企业的迅猛发展过程中&#xff0c;合规管理是确保公司可持续成长和避免潜在风险的关键因素。而在合规管理中&#xff0c;界定企业边界尤为重要&#xff0c;它关系到企业如何合理规划业务范围、管理内部外部关系以及维护企业形象和法律责任的清晰。 一、初创企业面临的合…