UFS简介及MPHY-UFS3.0-emmc spec

UFS【UNIX File System】的专栏文档如下:

UFS 1-UFS架构简介1_ufs 驱动_田园诗人之园的博客-CSDN博客

UFS专栏--田园诗人之园

相关spec见本人云盘

UFS里面也有这样的多面手,M-PHY和UniPro。看看下面这张图就知道为什么说他是多面手了。

DSI (Display Serial Interface)支持屏,CSI(Camera Serial Interface)支持Camera,LLI(Low  Latency Interface)负责BaseBand与AP通信(个人理解LLI应该是AP和BB交换PS和CS域的数据的模块,有知道的还请@闲人一下),还有我们要介绍的UFS,都是靠M-PHY和UniPro来支持的。在介绍M-PHY和UniPro之前,我们还需要先了解下面这个UFS的Top Level Architecture。

这个Top Level Architecture主要分两大部分,最上面Application Layer和UTP组成符合SCSI规范的部分,下面的M-PHY和UniPro组成下面遵守MIPI标准的部分。今天我们就主要介绍MIPI这部分—UIC(UFS InterConnect Layer)。(前方枯燥高能预警,讲协议的东西实在没有什么好办法L,以前给别人培训SD卡协议的时候,下面也是睡倒一片,要不也不会刚开始请出琅琊榜首席大飒蜜霓凰郡主)

L1,M-PHY3.0:专为移动设备开发的一种串行接口技术,时钟频率能够达到5.8Gbps(高performance),每个Upstream Lane或者Downstream Lane只需要两根差分信号线(pin脚少,方便PCB布线),并且具有多种省电模式。从下面的图看,M-PHY是全双工的,并且不要求上行Lane和下行Lane成对出现,下图就是两个下行Lane配一个上行Lane的例子。但是针对目前的UFS,上行下行Lane还都是成对出现的。

UniPro v1.6:也是针对mobile设备开发的,广泛用于移动设备AP,协处理器和modem之前的通信协议,我通常把这层看作是对硬件接口的抽象,管理和负责通信的的软件层来帮助自己理解。

L1.5 PHY Adapter:
物理适配层,用于检测双向Lane通路的个数,并提供软件支持。允许访问对端L1.5层的控制参数和状态,并可以通过原子操作改变对端Power Mode。下图显示了L1.5层的数据以Symbol为单位的,每个symbol有17个bits,包含有两个Byte和一个control bit (bit16)。Control bit是1的时候,表明后面跟着的两个bytes是控制命令;如果是0,说明后面的两个bytes是data payload。

L2 Data Link: 数据链路层,主要保证数据通信过程中的可靠性。其中采用ECC保证接收数据的准确性,接收端也要留有足够的buffer来缓存接收到的数据。一旦接收失败,发送端必须重新发送一次。L2层的数据单位是Frame,在原有L1层的基础上,把独立的symbol打包。每个Frame最多可以打包144个symbol,并在Frame的头尾处各添加上Header和Trailer之后,附上16bits ECC来侦查纠错。

这层有个比较重要的概念是TC(Traffic Class),UFS支持两种优先级的Data Frame TC0和TC1。TC1的优先级高于TC0,绝大多数的数据都是在TC0这个级别传递的,紧急的数据通过TC1来传递。TC1可以中断、抢占正在发送的TC0的数据发送。

L3 Network: 网络层,负责数据route到正确的目标设备,比如下图的AP#3这个设备,它不仅能与设备1、2、5通信,那么通过UniPro L3也允许其与设备4和6进行通信。


L3的数据的单位是package,在层2的Frame的基础上增加了7bits的shorter-header,用来标识数据route的目标地址。

L4 Transport传输层。由于基本通信服务已经在底层处理的差不多了,所以传输层是相对比较简单的一层,它提供对多device和多client的支持。L4层的数据的单位是segment,在package的基础上增加了5bit的“Cport” identifier,我们在这里可以把它看做是UFS的sub-address。


DME(Device Management Entity与UniPro的每层都留有SAP接口(Service Access Point),通过SAP DME可以访问每个layer的控制和状态参数,管理他们的power模式,并且可以访问、控制对端设备的UniPro模块。

UniPro的上面就是UTP和SCSI命令集,由于涉及的SCSI命令是很大一块需要单独来讲,所以这里只简单两笔。正如最开始提到的,UTP和SCSI是属于SCSI这部分,在JEDEC的标准里能找到它们的具体说明。

UTP(UFS Transport Protocol):这层软件主要有两个目的,一是把UniPro的segment打包成UFS直接可以识别的命令格式;二是通过这层可以让UFS自己来掌握发送数据的节奏、控制自身的状态等,这样既可以免去host端持续的查询UFS的状态所带来的系统消耗,也是因为只有UFS本身最了解自己的内部状态,能够选择以最佳的方式在最佳时间把数据传递出去。

UFS Application Command Layer:这层是UFS命令集,分为UFS的独有内建命令集和SCSI(Small Computer System Interface)的命令集

SCSI命令分为SBC和SPC,
分别是SCSI Block Commands和SCSI Primary Command。

猜你喜欢

转载自blog.csdn.net/cy413026/article/details/132216418
今日推荐