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

news2024/11/22 22:13:16

目录

十、UPIU数据包格式详解

1、Transaction Type(类型)

 2、Flags(附加信息)

 其它

3、LUN(逻辑单元号):

4、Task Tag(任务标签):

5、Command Type(命令类型):

6、Initiator ID(发起者ID):

7、Response(响应):

8、Status(状态):

9、Query Function(查询功能)、Task Management Function(任务管理功能)

(1)任务管理功能值及其描述 

(2)设备管理器功能字段值及其描述

(3)函数操作码值及其描述 

10、Device Information(设备信息)


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

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

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

十、UPIU数据包格式详解

UPIU(UFS Protocol Information Unit,UFS协议信息单元)是UFS(Universal Flash Storage,通用闪存存储)协议中用于传输命令、数据和状态信息的数据包。它具有固定的格式,是UFS协议的核心组成部分。每个UPIU都有一个Header,再加上跟每个UPIU相关的域。我们可以了解到以下关于UPIU数据包格式的信息:

  1. Header(头部):每个UPIU都有一个12字节的Header,这是UPIU数据包的开始部分,包含了UPIU的基本信息。
  2. 最小和最大:一个UPIU(包括Header)的最小大小为32字节,最大可以达到65600字节24。
  3. 命令或请求的执行:UFS采用“客户-服务器”架构,主机(Client)发送命令或请求给UFS设备(Target),然后设备执行命令并返回状态信息。命令的执行包括命令阶段、数据阶段和状态阶段3。
  4. 命令类型:UFS主机通过不同类型的UPIU来发送命令请求、传输数据或返回命令状态信息。例如,COMMAND UPIU用于封装UFS命令模块发送的命令,TASK MANAGEMENT REQUEST UPIU用于封装任务管理器的请求,QUERY REQUEST UPIU用于封装设备管理器的请求。

UPIU(UFS Protocol Information Unit)基础头部格式的描述

1、Transaction Type(类型

Transaction Type”字段。这个字段在UPIU(UFS Protocol Information Unit)的Header中用来标识该UPIU的类型。

  • 事务代码的第5位表示UPIU的流向和发起者:当为'0'时,发起者是发起者设备;当为'1'时,发起者是目标设备。

 2、Flags(附加信息

只对命令和其响应的UPIU有用,指定命令的属性。

  • "-" 表示该位是保留的或在该UPIU类型中未使用。
  • "R" 和 "W" 在Command UPIU中分别表示读和写操作。
  • "Cp(2)" 在Command UPIU的Bit 2位置表示命令优先级。
  • "ATTR" 命令属性域。UFS命令有simple ,ordered 和Head of Queue命令。
  • "O", "U", "D" 在Response UPIU中分别表示操作类型、是否为未请求的响应和数据传输方向。
 其它

 1、Simple Command(简单命令)

  • 特点:不需要特别处理,按照接收顺序执行。
  • 执行策略:通常遵循先到先服务(FCFS)的原则。

2、Ordered Command(有序命令)

  • 特点:必须在该命令之前的所有命令完成后才能执行。
  • 执行策略:确保命令的顺序性,类似于“明星出场前清场”,即前面的命令(“观众”)需要先被处理。

3、Head of Queue Command(队列头部命令)

  • 特点:接收到后立即放置于命令队列的头部并执行。
  • 执行策略:具有高优先级,类似于“插队”,打破了常规的排队顺序,需要立即被处理。

4、CP(Command Priority,命令优先级)

  • 含义:表示命令的优先级,1表示高优先级,0表示低优先级。
  • 适用范围:仅适用于简单命令。高优先级的简单命令可能会在命令队列中优先于其他简单命令执行。 

3、LUN(逻辑单元号):

  • 概念来源:UFS协议继承自SCSI,采用了逻辑单元的概念。
  • 作用:将存储设备的物理空间划分为多个逻辑空间,每个逻辑空间都是独立的,并且从LBA(Logical Block Addressing,逻辑块寻址)0开始。
  • 标识:每个逻辑空间通过LUN进行标识。
  • 寻址:主机在发送命令或请求时,通过指定LUN来确定命令的目标逻辑空间。
  • 与NVMe的关系:UFS的LU概念与NVMe中的Namespace概念相似,都是用来标识存储设备的逻辑分区。

4、Task Tag(任务标签):

  • 支持:UFS支持命令队列,允许主机同时发送多个命令给设备。
  • 目的:为了区分不同的命令或请求,主机需要为每个命令分配一个唯一的标签。
  • 关联:与特定命令UPIU相关的数据UPIU和状态UPIU会具有相同的Tag,确保数据和状态信息与原始命令正确关联。
  • 处理:设备使用这个Tag来识别和管理命令的执行顺序,以及与命令相关的数据和状态的匹配。

  • 一致性:在上图读命令的整个过程中,从命令发起到数据传输,再到最终的命令状态响应,所有的UPIU都使用相同的Task Tag,确保整个命令处理过程的连贯性和可追踪性。
  • 命令执行:设备接收到读命令后,执行操作,并将数据通过DATA IN UPIU发送回主机,最后通过RESPONSE UPIU发送命令执行的状态。
  • 错误处理:如果命令执行过程中出现问题,RESPONSE UPIU将携带相应的错误状态信息,主机可以通过Task Tag将此状态与原始命令关联起来。
  • LUN和Task Tag是UFS协议中用于确保命令正确寻址和区分的关键机制。
  • LUN允许对存储设备的逻辑空间进行寻址,而Task Tag则允许在复杂的命令队列中跟踪和管理每个命令的状态

5、Command Type(命令类型):

  • 分类
    • 简化的SCSI命令:UFS目前使用的命令大多来源于SCSI。
    • UFS原生命令:UFS协议特有的命令,目前尚未制定。
    • 用户自定义命令:根据用户需求定制的命令。
  • 默认值:如果没有用户自定义命令,该域通常设置为0,表示使用的是SCSI命令。

6、Initiator ID(发起者ID):

  • 用途:标识发送命令的主机。
  • 常见值:在大多数手机系统中,一个主机连接一个UFS设备,因此主机ID通常为0。

7、Response(响应):

  • 功能:设备使用该字段告知主机命令或请求的执行情况。

8、Status(状态):

  • 功能:设备返回命令执行的状态信息。
  • SCSI命令状态:UFS协议定义了几种状态,用于指示SCSI命令的执行结果。

9、Query Function(查询功能)、Task Management Function(任务管理功能

查询功能(Query Function):

  • 状态报告:提供文件系统的整体状态,包括使用情况、性能指标等。
  • 元数据查询:检索文件的元数据,这可能包括文件的创建者、标签、注释等。
  • 文件属性查看:查看文件的详细信息,如大小、类型、权限、所有者等。
  • 目录列表:列出指定目录下的所有文件和子目录。
  • 文件检索:允许用户根据文件名、扩展名、大小、创建日期、修改日期等属性来搜索文件。

任务管理功能(Task Management Function)

  • 任务调度:允许用户或系统自动安排任务在特定时间执行,例如备份、索引更新等。
  • 任务监控:实时监控正在进行的任务,包括它们的状态、进度和可能的错误。
  • 任务日志:记录任务的执行历史,包括成功、失败和警告信息。
  • 任务优先级管理:设置任务的优先级,以确保关键任务能够优先执行。
  • 任务依赖性管理:管理任务之间的依赖关系,确保任务按正确的顺序执行。
(1)任务管理功能值及其描述 

(2)设备管理器功能字段值及其描述

(3)函数操作码值及其描述 

 

10、Device Information(设备信息)

  • 设备信息域通常与命令或请求无关,它属于设备附带的信息。
  • 在UFS主从架构中,设备不能主动向主机报告其状态,除非主机发出了命令或请求。
  • 如果设备有特殊事件,它可以在返回RESPONSE UPIU时,将这些事件信息顺带通知主机。
  • 设备信息域仅对RESPONSE UPIU有效。 

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

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

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

相关文章

你还不知道Modbus RTU???

1. 什么是Modbus RTU Modbus RTU(Remote Terminal Unit)是Modbus通信协议的一种变种,用于串行通信。它是一种常见的工业控制系统通信协议,通常用于采集传感器数据、控制执行器和监控设备状态。Modbus RTU采用二进制编码&#xff0…

突破Web3红海,DePIN如何构建创新生态系统?

撰文:TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向,当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设,寻找更多 Web3 行业创新机遇成为…

静电场的基本方程

目录 场积分方程 通量(高斯定理) 环量 场微分方程 散度 旋度 小结 补充知识 立体角 场积分方程 通量(高斯定理) 环量 场微分方程 散度 旋度 小结 补充知识 立体角

打开自动联网,设置静态IP

TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic # 设置为static DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno IPV6_ADDR_GEN_MODEstable-privacy NAMEens18 UUIDce34dd13-05cb-4d6d-95e4-252355b1…

c++网络通信

TCP/IP协议 OSI参考模型采用分层划分原则,将网络中的数据传输划分为7层,其中,物理层居于最下层,是最基础、核心的网络硬件层;应用层居于最上层,负责应用资源的管理。每一层使用下层的服务,并向…

内存卡数据移走了怎样恢复?简易步骤与解决方案

随着科技的快速发展,内存卡已成为我们日常生活中不可或缺的一部分,特别是在行车记录仪、手机、相机等设备上。然而,当内存卡中的数据意外移走或删除时,我们往往会感到焦虑和困惑。本文将为您介绍如何简易恢复内存卡中移走的数据&a…

[leetcode]valid-triangle-number. 有效三角形的个数

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int triangleNumber(vector<int>& nums) {int n nums.size();sort(nums.begin(), nums.end());int ans 0;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {int left j 1, righ…

文件上传漏洞---Pyload

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 本文重点从靶场案例分析文件上传漏洞常见的Pylod&#xff0c;本文演示靶场upload-labs 一.文件类型---Pyload 不同的文件对应不同的文件类型&#xff0c;后端代码通过限制特定的文件类型…

618首战大捷!西圣Mike无线领夹麦克风全平台秒空!全网直接卖断货!

​在今年618购物狂欢节的首轮激战中&#xff0c;西圣Mike无线领夹麦克风以其卓越的品质和出色的性能以及高性价比&#xff0c;在全平台掀起了一股抢购热潮&#xff0c;实现了令人瞩目的“秒空”壮举&#xff0c;全网直接卖断货&#xff01; 不得不说西圣Mike是真的牛&#xff0…

Python 参数类型

一 理解Python中的Parameters & Arguments Parameters&#xff1a;形参 Arguments&#xff1a;实参 二 Python的实参&#xff08;Arguments&#xff09;类型 实参类型总结 位置参数&#xff08;Positional Arguments&#xff09; &#xff1a;函数调用时通过入参的顺序来…

JAVA每日作业day6.25

ok了家人们今天我们学习了&#xff0c;接口这个知识&#xff0c;我们闲话少叙&#xff0c;一起看看吧。 一&#xff0c;接口 1.1 接口概述 接口是功能的集合。接口的内部主要就是定义方法&#xff0c;包含常量&#xff0c;抽象方法&#xff08;JDK 7及以前&#xff09;&#…

让我们聊聊网络安全中会涉及到的IP地址(IP协议)、MAC地址、路由、DNS协议(域名系统)、NAT技术(协议)、以太网帧、ARP协议

网络安全中会涉及到的IP地址&#xff08;IP协议&#xff09;、MAC地址、路由、DNS协议&#xff08;域名系统&#xff09;、NAT技术&#xff08;协议&#xff09;、以太网帧、ARP协议 一.IP地址&#xff08;IP协议&#xff09;1.IP地址&#xff08;IP协议&#xff09;的作用2.IP…

第一百二十六节 Java面向对象设计 - Java枚举类

Java面向对象设计 - Java枚举类 枚举类型的超类 编译枚举类型时&#xff0c;编译器会创建一个类。 枚举类型可以具有构造函数&#xff0c;字段和方法。枚举类型仅在编译器生成的代码中实例化。 每个枚举类型都隐式地扩展java.lang.Enum类。 Enum类中定义的所有方法都可以与…

SAP 初始化库存移动类型561501511区别简介

项目上线初始化库存经常会用到561这个移动类型&#xff0c;同时我们在平时测试的过程中也会用到会进行库存的初始化&#xff0c;用的比较多是就是561和501这两个移动类型&#xff0c;本文将测试移动类型561&501&511这三个移动类型&#xff0c;分析三者之间的区别&#…

【图像处理实战】去除光照不均(Python)

这篇文章主要是对参考文章里面实现一种小拓展&#xff1a; 可处理彩色图片&#xff08;通过对 HSV 的 V 通道进行处理&#xff09;本来想将嵌套循环改成矩阵运算的&#xff0c;但是太麻烦了&#xff0c;而且代码也不好理解&#xff0c;所以放弃了。 代码 import cv2 import …

一分钟彻底掌握Java多线程生产者与消费者模型

代码 package com.example.KFC; public class Cooker extends Thread { public void run() { while (true) { synchronized (Desk.lock) { if (Desk.maxCount 0) { break; } else { if (!Desk.flag) { System.out.println("Cooker makes a hamburger"); …

MIGO增强(扩展字段,屏幕增强字段,常规保存增强)

1.MIGO前台增强: 1.SE18找到增强点:MB_GOODSMOVEMENT 2.找到相应的BADI:右键创建实施 3.找到重写的方法 METHOD if_ex_mb_document_badi~mb_document_before_update.DATA:lv_stat TYPE c,lv_type TYPE bapi_mtype,lv_msg TYPE bapi_msg.DATA:lv_message TYPE string.IF sy-t…

Ubuntu24.04下安装docker,并pull ubuntu22.04,然后编译安装vpp

一、docker安装说明 解决官方源无法下载的问题 二、使用步骤 1.更新软件包索引 sudo apt update2.安装必要的软件包&#xff0c;以允许apt通过HTTPS使用仓库 sudo apt install apt-transport-https ca-certificates curl software-properties-common3.添加Docker的官方GPG…

Cobalt Strike DLL用于永恒之蓝注入

1、原因&#xff1a; 我们在对存在MS17010的漏洞主机进⾏DLL注⼊的时候&#xff0c;⼀般都是⽤的Meataploit的msf venom⽣成出来的&#xff0c;所以每次上线之 后基本都是要经过相对⽐较繁琐的操作之后转到Cobalt Strike去&#xff0c;这样就会显得⾮常⿇烦。所以可以使⽤metas…

服务器性能测试指南:从零到一的超详细规范!

引言&#xff1a; 对于一台服务器的性能测试是确保其能够提供稳定和高效的服务的关键步骤。本文将从零开始&#xff0c;一步一步地介绍如何进行一次完善的服务器性能测试&#xff0c;确保您能够最大程度地了解服务器的性能指标。 一、确定测试目标&#xff1a; 在开始测试之前…