UFS[UAP-UTP-UIC]-协议信息单元 & SCSI 命令

0  前言概览

上一篇文章中我们介绍Hibernate模式时有提到UIC层的MIPI Unipro和M-PHY, 那么UFS的整体架构参考下图,本文会进入到UTP层和UCS层,依据JESD220F内容来介绍一下UFS设备和主机之间的信息传输是什么样的。

1  UFS整体结构概览

我们本篇文章主要学习讲述的部分就是下图中圈出部分,知道UFS内的信息传输的结构之前需要先了解一下,UFS的整体架构。

1.1  UIC 内联层

UIC:UFS InterConnect Layer,

这是UFS的最底层,他的作用是掌管UFS host和UFS device之间的连接,UIC层包含MIPI Unipro和MIPI M-PHY ,如下图两侧的UIC所示,它是一个物理层,形象的可以把他理解为Host和device之前的桥梁吧。

1.2  UTP 协议传输层

UTP:UFS Transport Protocol Layer

他的作用就是提供灵活的数据包结构,协助UFS控制器封装指令,通过这种命令单元在UFS host和UFS device的UTP层之间传输,这个单元他就是 UPIU(UFS Protocol Information Unit)。如果继续前面桥梁的寓意的话,UTP就相当于桥上运输的一个个包裹,并且有一定的运输规则,例如我从一端传输过去一个请求类型的包裹,那么另一端需要给我这一端返回一个“我已经准备就绪”的包裹,诸如此类,具体有什么运输规则我这里不做展开,这里只做概念性介绍。

1.3  UAP应用层

UAP:UFS Application Layer

它处于UFS协议栈的最顶层所有的命令或者请求都来自于这里,这一层包含UCS和Task manager。其中UCS:UFS Command Set是命令集层负责命令的生成,UFS使用的是简化的SCSI命令,它使用了SCSI的SBC(SCSI Block Commands)和SPC(SCSI Primary Commands)命令,这两种类型命令都共享着相似的CDB(command descriptor block)格式。所以UAP层可以理解为生成包裹中的内容并管理包裹的角色。

1.4  小结

本节简单进行UAP, UTP, UIC层的概念描述,大致了解假如host想要从UAP->UTP->UIC传输一个命令给device,总体上三步:第一UAP层生成一个命令,第二UTP层打包命令,第三UIC层传输命令给到device侧的UIC。

2  UPIU & UCS

上面我们大致了解了UFS架构中都有哪些层,下面我们了解UPIU作为信息传递的单元都有哪些种类型,以及UFS使用的命令集都有什么,以及这两者之间的关系。

2.1 UPIU介绍

UPIU都有一定的结构格式固定的大小:basic header+额外字段(用于支持不同的传输类型)

UPIU的basic header格式如下:

 如下图所示UPIU一共有12种不同的类型,不同的类型就具体体现在basic header中,每个类型都有一个特定的transaction code,transaction code的bit 5表示传输方向,简单来记忆下面12种类型的UPIU传输方向的话,所有xxx OUT、COMMAND、xxx REQUEST都是host到device的,其他的都是device到host的。

 每一种UPIU的不同basic header中的详细内容请查阅JESD 220F 10.7章节

UPIU就像一个框架,搭好了框架,往每个部分中放入不同的内容,这些内容就是UFS SCSI commands。

2.2 UCS介绍

2.2.1 UFS SCSI commands内容

JEDEC中介绍说UFS command包含native command和SCSI command但是一直到最新的JEDEC也没有更新native command的内容,因此目前UFS使用的命令就是部分SCSI命令,

包含SPC & SBC,如下图所示为当前UFS使用的所有的SCSI命令:

 当然所有上述UFS SCSI command都有各自一定的格式,具体每一种command的结构可以在JESD220F 11.3章中查找到,在此选择一个command来展示其格式,如下为READ(6) command。

2.2.2 UFS SCSI command与UPIU的关系

每一个command都会有一个command CDB, 这个CDB会通过一个COMMAND UPIU来发送,还是以READ(6) command为例子,如下图所示每一个READ command 的CDB内容与结构就对应UPIU中的CDB部分,UPIU包着SCSI command。

2.3  小结 

本小节主要讲了UPIU个类型、结构体,UFS SCSI 命令的类型结构,以及这两者之间的关系,下篇文章将从host controller的角度来看一下driver驱动中怎么打包一个上述的命令并传递给UFS设备的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值