0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

更深的理解UPIU数据包的格式

SSDFans 来源:未知 作者:李倩 2018-06-11 09:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最佳留言者将获得《深入浅出SSD》电子书一本

UPIU是命令、数据和状态信息传输的载体,是UFS协议栈的灵魂。UPIU是有固定格式的数据包,我们分析数据包格式,有助于我们更深的理解UPIU以及整个UFS协议。这一章我们看看UPIU数据包的格式。

每个UPIU都有一个12字节的Header,再加上跟每个UPIU相关的域。一个UPIU(包括Header)最小为32字节,最大为65600字节。

我们看通用的Header,具体如下:

我们看看其中的一些域。

1. Transaction Type:就是指定该UPIU是前面12个UPIU中的哪一个,具体如下:

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

R: 如果该比特置起来,说明该命令是读命令;

W: 如果该比特置起来,说明该命令是写命令;

ATTR: 命令属性域。UFS命令有simple ,ordered 和Head of Queue命令。

那么,这些命令有什么不一样呢。

Simple command:就是一般的命令,设备收到这样的命令无需特别处理,一般谁先到谁先执行。

Ordered command:设备收到这样的命令,应该把该命令之前的命令都处理完,才能处理该命令。(明星出场,先清个场。)

Head of Queue command:设备收到该命令后,放到命令队列的头部,立刻执行。(又见插队,这个没有上过幼儿园吧,连基本的排队意识都没有。)

CP: 表示命令的优先级。1为高优先级,0为低优先级。注意,该比特只适合简单命令(simple command)。

3. LUN: Logical Unit Number。UFS上层协议来自SCSI,它继承了LU的概念,即把存储物理空间划分成若干个逻辑空间,每个逻辑空间都是从LBA 0开始,用LUN标识。主机在发命令或者请求时,应该在命令中指定该命令是发给哪个LU。LUN用以寻址。UFS的LU和NVMe中的Namespace一个概念。

4. Task Tag:UFS支持命令队列,主机可以同时发送很多个命令给设备。为区分这些命令或者请求,主机需要为每个命令贴上标签Tag。然后跟这个命令或者请求相关的数据UPIU和状态UPIU,都具有跟这个命令UPIU一样的Tag。

举例:

对这个读命令来说,COMMAND UPIU、所有的DATA IN UPIU和RESPONSE UPIU都具有同一个task tag。

5. Command Type:命令类型。UFS预期有三类命令:一是简化的SCSI命令,二是UFS自己原生的命令,三就是用户自定义命令。目前UFS的命令都是从别人家(SCSI)借来的,自己一个命令也没有制定。如用户无自定义命令,该域就是0(SCSI命令)。

6. Initiator ID: 主机的ID,手机系统中一般一个主机连接一个UFS设备,所以主机ID一般为0。

7. Response:设备告知主机命令或请求执行是否成功。

8. Status:设备返回命令执行状态。对SCSI命令的状态信息,UFS有如下状态:

9. Query Function, Task Manag. Function:指定具体Query和Task Management功能。

任务管理器有如下功能(Function):

设备管理器有如下功能:

总的来说,就是读写设备属性(Attributes)、标识(flags)和描述符(descriptors)。

关于设备属性、标识和描述符,后面有专门章节讲述。

10. Device Information:设备信息。该域往往跟该命令或者请求无关,属于设备夹带私货。因为UFS主机和设备是主从关系,如果UFS主机没有向设备发命令或者请求,UFS设备是不能主动向主机报告设备状况的。如果UFS设备有特殊事件发生,它可以趁返回RESPONSE UPIU的时候把事件顺带告诉主机。所以该域只对RESPONSE UPIU有效。

以上是UPIU头的基本信息,这个是所有UPIU都具有的。除此之外,每个UPIU有它独有的其它信息,UFS spec上都有介绍,读者可以自行阅读。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据包
    +关注

    关注

    0

    文章

    269

    浏览量

    25425
  • UFS
    UFS
    +关注

    关注

    6

    文章

    112

    浏览量

    26217

原文标题:蛋蛋读UFS之四:UPIU数据包格式

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用nrf54L15的NORDIC蓝牙芯片,通过串口发送一帧数据包时,会出现分包发送分析

    使用nrf54L15的NORDIC蓝牙芯片,通过串口发送一帧数据包时,会出现分包发送分析,是什么原因呢
    发表于 11-17 15:52

    串口DMA接收数据包丢失怎么解决?

    RTT串口DMA接收数据,超过缓冲区后为什么会吞掉一个数据包呢,不能每次处理完后清除缓冲区数据吗,感觉接收的数据是累计的,累计满之后会重新覆盖,在最后一个
    发表于 09-29 07:50

    请问DCTCP与DCUDP 的登录数据包和心跳数据包与服务器端是如何交互的?

    DCTCP与DCUDP 的登录数据包和心跳数据包与服务器端是如何交互的?
    发表于 08-06 06:29

    蓝牙数据通道空口数据包

    格式上来说,蓝牙数据包又分空包(empty packet)和普通数据包(data packet)两种,空包格式如下。 ​ 编辑 由图可见,空包整个payload为空,故名空包。 普通
    发表于 06-03 10:51

    Bluetooth LE Packet格式

    LE只有一种packet格式,根据Access Address的不同,又区分两种Packet类型:广播数据包: 广播Access Address 固定为0x8E89BED6 ,
    发表于 06-03 10:45

    Bluetooth LE Link Layer数据包全解析

    ,L2CAP,SMP和ATT等各层次,但link layer跟空口格式关系最紧密,掌握了Bluetooth LE packet的格式,就很容易理解Bluetooth LE link
    发表于 06-03 10:28

    能否使用两个 FX3 设备实现 USB 数据包嗅探、插入和移除?

    能否使用两个 FX3 设备实现 USB 数据包嗅探、插入和移除?如果需要,除了两个 FX3 设备外,还需要哪些硬件(如果有的话)?
    发表于 05-26 07:16

    更改最大数据包大小时无法识别USB设备如何解决?

    将生产者 EP 端点描述符中的最大数据包大小从 1024 字节更改为 512 字节时,无法识别 USB 设备。 请告知如何解决这个问题。
    发表于 05-20 08:13

    当从接收DMA一次接收一个字节时,如何检查是否已接收到任意长度的所有数据包呢?

    当从接收 DMA 一次接收一个字节时,如何检查是否已接收到任意长度的所有数据包
    发表于 04-21 08:22

    为UART、MCXA142实现ISP通信的主机端,发送Ping数据包并收到预期的响应,发送和接收数据包的典型顺序是什么?

    我想为 UART、MCXA142 实现 ISP 通信的主机端。我发送 Ping 数据包并收到预期的响应。发送和接收数据包的典型顺序是什么? 此刻,我的照片是这样的: 1. 发送 Ping 2. 接收 Ping 响应 3. 在成帧
    发表于 04-03 08:05

    为什么无法通过demo_feature_L2_bridge_vlan上的PFE转发VLAN标记的以太网数据包

    - PC1 使用 ICMP 应答进行响应 对于第二个用例,我看不到正在路由的数据包。PC1 不响应 PC0 发送的 ARP 请求。我还尝试发送硬编码数据包(PC0 和 PC1 的 src 和 dst
    发表于 03-25 08:05

    按ADS1291 datasheet 62页设置,当导联脱落收到的数据包是0xc0 80 7f ff ff,为什么?

    我按ADS1291 datasheet 62页设置,当导联脱落收到的数据包是 0xc0 80 7f ff ff.
    发表于 02-07 06:08

    I2C总线数据包结构详解

    。以下是I2C总线数据包结构的详解: 一、I2C总线数据包的基本组成 I2C总线上的数据传输以数据包为单位进行,每个数据包包含起始信号、设备
    的头像 发表于 01-17 15:46 1391次阅读

    华纳云如何解读WinMTR的丢数据

    WinMTR显示的丢数据是指在网络路径上,从你的计算机到目标主机之间,数据包丢失的百分比。丢率是网络稳定性的一个重要指标,它可以帮助识别网络中的问题点,如路由器故障、网络拥塞或配
    的头像 发表于 12-30 16:51 981次阅读

    mtu配置步骤详解 mtu与数据包丢失的关系

    MTU(Maximum Transmission Unit)即最大传输单元,是指一种通信协议的某一层上面所能通过的最大数据报大小,单位是字节。MTU配置步骤及其与数据包丢失的关系如下: MTU配置
    的头像 发表于 12-16 14:33 3754次阅读