选择ufs2.2 协议原因:添加了许多新特性,有的是3.0没有的,手上没有找到3.1的资源。搜索缩写,方便查阅相关解释,文中含有协议内容,也夹带私货,包含个人理解,大多数按照软件思维进行解释,非ufs本身协议相关暂不深究。
UFS: universal flash storage
MIPI:Mobile Industry Processor Interface MIPI联盟发起的为移动应用处理器制定的开放标准,目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。《导个航 -> MIPI自学笔记 - 知乎 和 UFS 之M-PHY,UniPro简介_申小白-CSDN博客_unipro》
MIPI M-PHY:这个本身是一个协议,相对于UFS来说是物理层层面的设计,包含电气接口标准等等《经典导个航 -> MIPI系列之“M-PHY”_碎碎思的博客-CSDN博客_mipi mphy 和 Camera接口之MIPI D-Phy,M-Phy,C-Phy信号采样 - 知乎》![](https://i-blog.csdnimg.cn/blog_migrate/2008a6db38b9b16d3b0ef18f3bc23e9b.png)
MIPI Unipro:这个本身是一个协议栈,相对于UFS的位置如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/e531b59a069cc3d57a36c7c6f79898e3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/13bd26265e32c2d8059ce7ec24ebb568.png)
协议中有一句这样的话:UFS电气接口基于MIPI M-PHY规范的高级差分接口,该接口与MIPI UniPro规范一起构成UFS接口的内部链接。
个人理解:目前MIPI相关的协议概念,不仅仅用作UFS设备,毕竟是为移动应用处理器制定的开放标准,包含的内容应该很广,每一套独立出来的标准,都独立完成对应的功能。所以目前对MIPI协议相关的,略过。
INCITS T10(SCSI) SAM:INCITS是信息技术标准国际委员会,T10是其的一个分支机构,其主要职责是为SCSI接口制定国际标准。SAM是SCSI Architecture Model
SCSI Architecture Model(SAM):SCSI(小型计算机系统接口)标准集由该标准(这个指的是SAM-5)和 其他的 SCSI 实现标准(比如SPC-4,SBC-3 命令集的介绍)组成。该标准定义了一个参考模型,该模型指定了 SCSI 设备的通用行为,以及一个对所有 SCSI I/ O 系统实现。 SCSI 标准集指定了确保符合标准的 SCSI 实现之间的互操作性所必需的接口、功能和操作。 本标准是一个功能描述。 符合要求的实现可以采用任何不违反互操作性的设计技术。
协议中有一句这样的话:架构模型参考INCITS T10 (SCSI) SAM 标准,命令协议基于 INCITS T10 (SCSI) SPC 和 SBC 标准。
SPC:SCSI Primary Commands
SBC:
SCSI Block Commands
Application Client:作为主机中SCSI命令和任务管理功能请求源的实体。
Device Server:设备中处理SCSI命令和任务管理功能的实体。
Command Descriptor Block(CDB): 用于将命令从Application Client传送到Device Server的结构。CDB的固定长度可以高达16字节,可变长度可以在12到260字节之间。
Device ID:
一个ufs设备的总线地址
Host:具有主要计算设备特征的实体或设备,包括一个或多个主机更多SCSI启动器设备(
Initiator device)。
Transaction: 一个 UFS 原语动作,指示在目标设备和发起方设备之间传输串行数据包。
Initiator device: 在一个
Transaction中,向目标设备发送 SCSI 命令请求消息的发起者。
Logical Unit: 逻辑单元是总线设备的内部实体,它执行某种功能或寻址总线设备内的特定空间或配置。这个概念其实经常用到了,个人认为暂且归到SAM中固定的基本概念。
Logical Unit Number(LUN): 标识设备内逻辑单元的数值,也就是LUN,同上一个概念。
Segment:表示在UFS传输数据时的单位
Segment ID:在数据传输中的一个
Segment标识,暂且理解为是门牌号,标识特定的路由。(非网络科班,可能借鉴错?大体就是这个意思)
SCSI Request Block:包含多字节SCSI 命令和执行命令操作所需的附加上下文信息的数据包(附加的上下文信息,就好比写数据,写的数据要带上吧,比如配置ufs设备级别的属性值)。 SCSI 请求块由
Host构建并针对特定的总线设备(
Device ID)。
Target device: 在一个
Transaction中,来自
Initiator device,接收 SCSI 命令请求消息的接收方。
Task:一个任务是一个 SCSI 命令,它包括,完成所有数据传输的所有事务和一个状态响应(ufs设备会返回数据包,数据包中会有状态响应),并且这个响应将满足该命令请求的服务的要求。这里我理解倘若ufs设备无法完成一个请求,那这个Task不会被清除。
UFS Protocol Information Unit(UPIU): UFS 主机和设备之间的信息传输(通信) 是通过称为 UFS 协议信息单元的消息完成的。 这些消息是 UFS 定义的数据结构,其中包含许多按不同信息字段排列的顺序寻址字节。协议中有UPIU的基本组成格式,包括头部,状态位,等等。使用UPIU用来完成各种不同的功能。
CPort:
一个CPort是设备内 UniPro 传输层 (L4) 上的服务接入点,用于组织数据传输。因为数据包要在L4进行加工组装成,下一层需要的数据格式。CPort可以看作成一个接口。在unipro的协议中有叙述,之后看看。
FFU:
Field Firmware Update 固件升级。
HCI:Host Controller Interface 主机控制接口
IID:Initiator ID 这个还比较重要,在UPIU中的字段存在
PDU:Protocol Data Unit 协议数据单元
RPMB:Replay Protected Memory Block 存储上的一个安全保护机制,提供对重放保护内存块的签名访问。 此功能为系统提供了以经过验证和重放保护的方式将数据存储到特定存储区域的方法。 这是通过首先将身份验证密钥信息编程到 UFS 设备存储器(共享机密)来提供的。 由于系统在此阶段还不能进行身份验证,因此身份验证密钥编程必须在像 OEM 生产一样的安全环境中进行。 此外,身份验证密钥用于使用消息身份验证代码 (MAC) 对重放保护存储区进行的读写访问进行签名。随机数生成和计数寄存器的使用提供了额外的保护,防止消息重放 由攻击者录制并稍后播放。
SID:
Segment ID同上
SDU:
Service Data Unit
T_PDU:
MIPI Unipro Protocol Data Unit
T_SDU:
MIPI Unipro Protocol Service Data Unit 在unipro协议栈中的数据结构单元,最小大小 T_SDU 将为 32 字节。 最大 T_SDU 大小将为 65600 字节。
UniPro:
Unified Protocol
UTP:
UFS Transport Protocol