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

news2024/10/6 10:32:04

目录

十一、逻辑单元(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协议—新手快速入门(六)   

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

ElasticSearch8.X查询DSL语法案例进阶实战

什么是Query DSL Query DSL主要由两部分组成&#xff1a;查询和过滤。 查询部分&#xff1a;用于指定搜索条件和匹配规则。例如&#xff0c;可以使用match查询进行全文检索&#xff0c;term查询进行精确匹配&#xff0c;range查询进行范围匹配等。过滤部分&#xff1a;用于对查…

【八股系列】探索响应式布局的奥秘:关键技术与实战代码示例

&#x1f389; 博客主页&#xff1a;【剑九 六千里-CSDN博客】 &#x1f3a8; 上一篇文章&#xff1a;【为什么组件中的 data 必须是一个函数&#xff0c;然后 return 一个对象&#xff0c;而 new Vue 实例里&#xff0c;data 可以直接是一个对象&#xff1f;】 &#x1f3a0; …

【python】eval函数

1.eval函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;eval(expression) 参数说明&#xff1a; expression&#xff1a;必须为字符串表达式&#xff0c;可为算法&#xff0c;也可为input函数等。 说明&#xff1a;表达式必需是字符串&#xff0c;否则会报错&a…

(2024,稀疏高秩适配器(SHiRA),适配器快速切换和多适配器融合,稀疏掩码,稀疏高秩且正交的适配器,移动场景部署)

Sparse High Rank Adapters 公和众与号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 介绍 2. 背景&#xff1a;LoRA 的边缘部署挑战 3. 提议的方法 3.1 稀疏高秩适配器&#xff0…

共享资源,共谋协同发展新机遇

树莓集团在资源共享与协同发展方面取得了显著成效。通过优化资源配置、构建产业服务平台、校企合作育人、推动产业转型升级以及主导产业园运营与建设等举措&#xff0c;树莓集团不仅促进了数字产业的快速发展&#xff0c;也为各数字产业园区和合作企业提供了更多的发展机会和合…

Compiled blocks

目录 一&#xff0c;编译块 Compiled Block 二&#xff0c;编译循环 三&#xff0c;调用编译块 Invoke 四&#xff0c;Tips and notes 一&#xff0c;编译块 Compiled Block 在几何体网络内&#xff0c;可将网络的一部分放入编译块&#xff08;compiled block&#xff09;内…

天润融通:AI赋能客户体验,推动企业收入和业绩增长

“客户体验已经成为全球企业差异化的关键。人工智能与数据分析等创新技术正在加速推动企业在客户体验计划中取得成功&#xff0c;以保持领先地位”。Customer Insights & Analysis 研究经理Craig Simpson说道。 客户体验 (CX&#xff0c;Customer Experience) 是客户在与企…

基于PHP+MySql的留言管理系统的设计与实现

功能概述 网页留言板管理系统&#xff0c;用户层面分为普通用户和管理员&#xff0c;并设权限&#xff08;即后台留言管理系统普通用户不能访问&#xff0c;别人的留言自己不可以修改删除&#xff0c;未登录不能使用留言功能&#xff09;&#xff0c;功能包括用户登录注册、留…

鸿蒙开发HarmonyOS NEXT(一)

最近总听见大家讨论鸿蒙&#xff0c;前端转型的好方向&#xff1f;先入门学习下 目前官方版本和文档持续更新中 一、开发环境 提示&#xff1a;要占用的空间比较多&#xff0c;建议安装在剩余空间多的盘 1、下载&#xff1a;官网最新工具 - 下载中心 - 华为开发者联盟 (huaw…

【Mac】王国保卫战:起源 for mac(塔防策略游戏)游戏介绍和安装教程

游戏介绍 《王国保卫战&#xff1a;起源》&#xff08;Kingdom: Origins&#xff09;是一款策略塔防游戏&#xff0c;其核心玩法融合了塔防、策略管理和资源管理元素。游戏的主要目标是在一个开放的像素化世界中建立和管理自己的王国&#xff0c;并抵御夜晚来袭的怪物入侵。 …

c语言学习记录(十)———函数

文章目录 前言一、函数的基本用法二、函数的参数传递1.基本方式2 数组在函数中的传参 前言 一个学习C语言的小白~ 有问题评论区或私信指出~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、函数的基本用法 函数是一个完成特定功能的代码模块&…

使用Dropout大幅优化PyTorch模型,实现图像识别

大家好&#xff0c;在机器学习模型中&#xff0c;如果模型的参数太多&#xff0c;而训练样本又太少&#xff0c;训练出来的模型很容易产生过拟合的现象。在训练神经网络时&#xff0c;过拟合具体表现在模型训练数据损失函数较小&#xff0c;预测准确率较高&#xff0c;但是在测…

gc.log中 CMS-concurrent-abortable-preclean

问题 在gc日志中看到 2024-06-26T16:16:07.5040800: 64690272.666: [CMS-concurrent-abortable-preclean-start]CMS: abort preclean due to time 2024-06-26T16:16:12.5530800: 64690277.716: [CMS-concurrent-abortable-preclean: 1.052/5.049 secs] [Times: user1.33 sys0…

点云处理实战 PCL求解点云表面曲率

目录 一、什么是曲率 二、曲率计算过程 三、pcl 求解点云局部曲率 四、思考?为何曲率计算会使用协方差矩阵? 五、推荐阅读 一、什么是曲率 曲率是几何学中用来描述曲线或曲面形状变化的一个量。它反映了曲线或曲面的弯曲程度。在不同的上下文中,曲率的定义和计算方式有…

C语言 指针——向函数传递字符串

目录 向函数传递字符串 计算实际字符个数 用字符数组编程实现字符串复制 用字符指针编程实现字符串复制 关于程序的效率的几点建议 向函数传递字符串 向函数传递字符串时  既可用 字符数组 作函数参数  也可用 字符指针 作函数参数 Simulating Call by reference &…

第二期书生·浦语大模型实战营优秀项目一览

书生浦语社区于 2023 年年底正式推出了书生浦语大模型实战营系列活动&#xff0c;至今已有两期五批次同学参加大模型学习、实战&#xff0c;线上课程累计学习超过 10 万人次。 实战营特设项目实践环节&#xff0c;提供 A100 算力支持&#xff0c;鼓励学员动手开发。第 2 期实战…

51单片机STC89C52RC——9.1 DS1302涓流充电计时芯片

目录 目的/效果 一&#xff0c;STC单片机模块 二&#xff0c;DS1302计时器 2.1 特性/板子位置 2.1.1 特性 2.1.2 板子上的位置 2.2 针脚定义 2.3 数据传输 2.3.1 读数据 2.3.2 写数据 2.4 BCD码 2.5 可编程涓流充电器 2.6 时钟动态设置 三&#xff0c;创建Keil项目…

算法导论 总结索引 | 第四部分 第十六章:贪心算法

1、求解最优化问题的算法 通常需要经过一系列的步骤&#xff0c;在每个步骤都面临多种选择。对于许多最优化问题&#xff0c;使用动态规划算法求最优解有些杀鸡用牛刀了&#xff0c;可以使用更简单、更高效的算法 贪心算法&#xff08;greedy algorithm&#xff09;就是这样的算…

云服务器部署LNMP Web环境教程合集(多版linux系统安装方法)

LNMP环境包括Linux、Nginx、MySQL和PHP&#xff0c;Nginx是一款小巧而高效的Web服务器软件&#xff0c;使用阿里云服务器搭建LNMP Web网站环境很简单&#xff0c;支持多种LNMP环境部署教程&#xff0c;可使用ROS模板部署、LNMP镜像以及基于不同Linux操作系统手动部署LNMP全流程…