UFS3.1协议中文学习讲解(1~4)
事先声明本文不用于任何商业行为仅用于本人学习与记录。欢迎点赞、收藏、转发分享给朋友禁止未经书面授权的复制、搬运、二次剪辑。如有引用请注明出处。标准规范仍然以《JESD220E-UFS3.1》为准本文撰写动机本人从毕业后从事存储固件行业2年目前主要工作经验均在移动设备的存储上主要从事eMMC固件开发。由于工作需要本人即将开始学习UFS协议由于英语只是刚刚达到6级的水平又懒得看UFS3.1的JEDEC官方英文协议就想在网上找是否有UFS协议的翻译及讲解其中许多都讲解得很不错但都是基于作者本身的理解将知识串起来。因此我在进行对应UFS协议的时候总是需要跳来跳去这让我看的有点不舒服。个人认为对于从事嵌入式软件的工作者来说看数据手册/使用说明手册是一个极高频率的事件那么熟悉协议以及手册对于未来的工作就会有极大的帮助。比方说在工作中写固件code和写测试code时甚至于与客户沟通交流时我们通常是以协议规定为准而不是靠个人想象因此你能一下子定位该工作内容在协议中的位置是非常舒服的一件事情。我们作为嵌入式软件开发者不需要熟背协议中的每一项内容只要能够快速定位到就可以了。因此本文的目的就是抛开一切个人梳理规规矩矩的和大家一起从头学习UFS3.1协议当大家熟悉以后能够直接翻官方手册顺利找到协议的规范定义就达到的本文的目的。此外本人的学习和见解不敢说有多深所以见解有错误的地方欢迎大家指正我会虚心学习在许多地方我会通过与eMMC协议的对比让熟悉eMMC的人更快的学习UFS也算是本文的一点特色另外在此非常感谢博主南风轻拂_写的一系列eMMC中文协议给我的入门带来了极大的帮助写此文也是想帮助更多的人去学习UFS协议最后由于是工作学习之余攥写所以只能不定期更新~会尽量不偷懒。--------------------------------------------------------正式开始---------------------------------------------------------1 Scope范围本标准规定了 UFS 电气接口及存储设备的特性。这些特性包括但不限于低功耗、高数据吞吐量、低电磁干扰以及针对大容量存储子系统效率的优化。UFS 电气接口基于 MIPI M-PHY 规范所定义的先进差分接口该接口与 MIPI UniPro 规范共同构成 UFS 接口的互连层。其架构模型参考了 INCITS T10SCSISAM 标准命令协议则基于 INCITS T10SCSISPC 和 SBC 标准。(这里有很多术语像 MIPI M-PHYMIPI UniProINCITS T10SCSISAM等在后面的协议学习中都会提到有概念即可)2 Normative Reference规范参考文献该段主要声明写该协议时参考了那些文献以及说明参考文献的日期等在此不过多赘述。3 Terms and Definitions术语和定义就本标准而言第 2 章 规范参考文献 中所列文档给出的术语和定义以及以下定义均适用。Application Client应用客户端作为 SCSI 命令和任务管理功能请求发起方的实体。Byte字节1字节为8位2进制数最高有效位标记为第 7 位最低有效位标记为第 0 位。Command Descriptor Block命令描述符块CDB用于将命令从应用客户端传递至设备服务器的数据结构。CDB 的长度可以是固定的最多 16 字节也可以是可变长度的 12 至 260 字节。Device ID设备 IDUFS 设备的总线地址。Device Server设备服务器设备中处理 SCSI 命令和任务管理功能的实体。Doubleword双字Dword1word2bytes1Dword2words最高有效位标记为第 31 位最低有效位标记为第 0 位。Dword双字32 位数据值等同于 Doubleword。Gigabyte吉字节1,073,741,824 字节即 2³⁰ 字节。Host主机包含一个或多个 SCSI 启动器设备、具有主计算设备特征的实体或设备。Initiator device发起设备在事务中向目标设备发送 SCSI 命令请求消息的发起方。Kilobyte千字节1024 字节即 2¹⁰ 字节。Logical Unit逻辑单元总线设备内部执行特定功能的实体逻辑单元可以是配置实体也可以是设备派生实体。Logical Unit Number逻辑单元号LUN用于标识设备内某个逻辑单元的数值。Megabyte兆字节1,048,576 字节即 2²⁰ 字节。Quadword四字Qword1Qword4words8bytes一个 64 位数据值最高有效位标记为第 63 位最低有效位标记为第 0 位。Segment段指定数量的、按顺序寻址的字节代表数据结构或部分数据结构的连续存储区域。Segment ID段 ID一个 16 位数值表示段描述符表中的索引或简单引导块SBB元素内段描述符的地址。SCSI Request BlockSCSI 请求块包含一个多字节 SCSI 命令以及承载该命令操作相关的额外上下文和参数信息的数据包。SCSI 请求块由主机构建目标为特定总线设备。Target device目标设备在事务中接收来自启动器设备的 SCSI 命令请求消息的接收方。Task任务一个 SCSI 命令包含完成所有数据传输所需的全部事务以及负责响应所请求命令各项要求的状态响应。Transaction事务导致在目标设备与启动器设备之间传输串行数据包的 UFS 基本操作。Terabyte太字节1,099,511,627,776 字节即 2⁴⁰ 字节。UFS Protocol Information UnitUFS 协议信息单元UPIUUFS 主机与设备之间通过称为 UFS 协议信息单元 的消息进行信息传输通信。这些消息是 UFS 定义的数据结构包含按各种信息字段排列的连续协议寻址字节。Unit单元总线设备。Unit Attention单元注意使用 SCSI 协议的总线设备的一种状态表示该设备需要得到服务处理。它可以包含处理请求和响应。Word字1Word2Bytes一个 16 位数据值最高有效位标记为第 15 位最低有效位标记为第 0 位。3.1 Acronyms这边用到了大量英文的规范标准在后面的协议讲解中到哪一章节自然会说明定义以及使用不需要强记但是对于在该行业大家沟通时可能会直接说英文或缩写所以以后最好还是全部记住3.2 约定Conventions由于本标准采用了多项 SCSI 标准因此遵循 SCSI 文档中使用的一些约定。二进制数在本标准中二进制数表示为仅由西阿拉伯数字 0 和 1 组成的数字序列其后紧跟小写字母b例如0101b。在二进制数表示中可以加入空格以提高可读性或划分字段边界例如0 0101 1010b。十六进制数在本标准中十六进制数表示为仅由西阿拉伯数字 0 至 9 和 / 或大写英文字母 A 至 F 组成的数字序列其后紧跟小写字母h例如FA23h。在十六进制数表示中可以加入空格以提高可读性或划分字段边界例如B FD8C FA23h。十进制数在本标准中十进制数表示为仅由西阿拉伯数字 0 至 9 组成的数字序列其后不紧跟小写字母 b 或小写字母 h例如25。数值范围在本标准中数值范围表示为 a 至 z 的形式其中 a 是范围中的第一个值z 是范围中的最后一个值a 和 z 之间的所有值均包含在范围内例如0h 至 3h 表示包含值 0h、1h、2h 和 3h。当某个位或字段的值不相关时使用x代替具体值。Flag标志的名称首字母为小写f例如fMyFlag。Descriptor描述符中包含的参数的名称首字母或Attribute属性的名称首字母根据其数据长度遵循以下规则一个字节byte首字母为小写b例如bMyParameter两个字节word首字母为小写w例如wMyParameter四个字节dword首字母为小写d例如dMyParameter八个字节qword首字母为小写q例如qMyParameter3.3 Keywords关键词本标准使用多个关键词来区分要求和选项的级别具体如下Can可以用于描述可能性和能力的关键词无论是物质层面、物理层面还是因果层面等同于 is able to。Expected预期用于描述设计模型中硬件或软件行为的关键词其他硬件和软件设计模型均假定该行为已实现。Ignored忽略描述位、字节、队列或字段未被实现方检查的关键词。Mandatory强制表示本标准定义的各项要求必须实现的关键词。May可表示在标准允许范围内采取某种行动是被许可的关键词等同于 is permitted。Must必须该词已被弃用在陈述强制要求时不得使用仅在描述不可避免的情况时使用must。Obsolete已废止表示某项内容曾在先前标准中定义但已从本标准中移除的关键词。Optional可选描述本标准不要求实现的功能的关键词。但是如果实现了标准定义的任何可选功能则必须按照标准的定义来实现。Reserved保留用于描述对象位、字节和字段或分配给这些对象的代码值的关键词这些对象或代码值可能会在未来的标准扩展中被设定为其他值以供未来标准化使用。保留对象的使用和解释可由未来标准或其他标准另行规定。保留对象的接收方不得检查其值。已定义对象的接收方应检查其值并拒绝保留的代码值。Shall应表示为符合本标准而必须严格遵守的强制性要求的关键词不允许有任何偏差等同于 is required to。设计人员应实现所有此类强制性要求以确保其他产品与符合本标准的产品之间的互操作性。Should宜表示在多种可能性中推荐某一种作为特别合适的而不提及也不排除其他可能性的关键词或表示某种行动方案是首选但并非必然要求的关键词或在否定形式中表示某种行动方案已被弃用但不被禁止的关键词等同于 is recommended that。Will将该词已被弃用在陈述强制要求时不得使用仅用于陈述事实。个人认为后文中的Reserved、Optional、Mandatory、Ignored、Must关键字必须格外注意。3.4 Abbreviationsetc. - And so forth (Latin: et cetera) 等等等等e.g. - For example (Latin: exempli gratia)举个例子i.e. - That is (Latin: id est)这是4 Introduction介绍UFS概念通用闪存存储Universal Flash StorageUFS是一种简单、高性能、具有串行接口的大容量存储设备。它主要用于移动系统中位于主机处理单元与大容量存储存储设备之间。以下是 UFS 设备特性的概述。4.1 General Features通用特性目标性能Target performance高速 GEARs档位支持 GEAR1 为强制mandatory支持 GEAR2 为强制mandatory支持 GEAR3 为强制mandatory支持 GEAR4 为强制mandatory这里介绍一下UFS是从1.0慢慢发展起来的UFS可以将时钟信息嵌入差分信号中更稳定极速也能够更高当时被认为其未来的发展一定也能超过eMMC这种同步时钟的极速(理论极速400MB/S)因此开始发展了UFS。一开始的速度是没有eMMC快的但是短短几年速度就已经超过eMMC了比如UFS2.2好像就可以达到HS-G3了这就已经远超eMMC了更别说现在的UFS4.05.0喜欢看手机发布会的都知道这里面的门道有多深~那么各个GEAR档位的速度是多少在后面自然会介绍看海贼王的感觉很亲切路飞的Gear secondGear thirdGear fourth都是档位目标主机应用Target host applications手机、UMPC、DSC、PMP、MP3 以及任何其他需要大容量存储、可引导大容量存储和外接卡的应用。目标设备类型Target device types外接卡External card嵌入式设备Embedded device大容量存储和可引导大容量存储设备类别类型的未来扩展I/O 设备、摄像头、无线设备…… 等等拓扑结构Topology每个 UFS 端口连接一个设备。UFS 分层UFS LayeringUFS 命令集层UFS Command Set LayerUCS基于 SBC 和 SPC 的简化 SCSI 命令集。UFS 不会修改这些符合 SBC 和 SPC 规范的命令。同时存在定义 UFS 原生命令和未来扩展的选项。UFS 传输协议层UFS Transport Protocol LayerUTPJEDEC 定义了所支持的传输协议层即用于 SCSI 的 UTP。这并不排除在 UFS 传输协议层中支持其他协议。UFS 互连层UFS Interconnect LayerUIC采用 MIPI UniPro® [MIPI-UniPro] 作为数据链路层采用 MIPI M-PHY® [MIPI-M-PHY] 作为物理层4.2 Interface Features接口特性三路电源供电Three power suppliesVCCQ 电源1.2 V标称值 //一般用于信号线供电硬件上可能涉及LDO稳压VCCQ2 电源1.8 V标称值//同上VCC 电源2.5 V / 3.3 V标称值//用于设备供电信号定义遵循 MIPI-M-PHY 规范400 mVp未端接200 mVp端接8b/10b 线路编码如 MIPI M-PHY 所定义高可靠性— 误码率BER低于 10⁻¹⁰两种信号方案Two signaling schemes低速模式Low-speed mode采用 PWM 信号方案高速模式High-Speed burst mode低速和高速模式均定义了多个速率档位gears适配AdaptM-PHY® 版本 4.1M-RX 均衡器训练以适配通道特性4.3 Functional FeaturesUFS 的功能特性属于 NAND 管理特性包括与 eMMC 类似的功能特性//所以你如果有eMMC固件设计经验以及很熟徐eMMC协议你看起来会非常快启动操作模式Boot Operation Mode具有可配置特性的多个逻辑单元Multiple logical units with configurable characteristics重放保护存储块Replay Protected Memory BlockRPMB可靠写入操作Reliable write operation后台操作Background operations安全操作清除Purge和擦除Erase以增强数据安全性//我看完后感觉Purge和eMMC好像不太一样仍然先挖个坑后面写写保护选项包括永久写保护Permanent和上电写保护Power-On Write Protection对重放保护存储块RPMB的签名访问Signed access硬件复位信号HW Reset Signal任务管理操作Task management operations电源管理操作Power management operations这里简单说一下与eMMC有哪些不同首先UFS没有Ecsd这个玩意儿他的协议表类似于UFS Descriptors, Flags And Attributes(可以先简单理解为设备信息)存在Nand中其次eMMC的指令大部分都是cmd indexcmd argumentargument都是4bytes的response回的信息也少而UFS UPIU则能发送更多字节的信息用于传递这个大不一样再者UFS其实是一个“拼拼凑凑”的协议应用层使用SCSI命令和SCSI SAM(搞硬盘的都知道)UTP层转换为UPIU格式(UFS自己加的东西)然后物理层又是MIPI M-PHY专用于移动设备差分信号传输的协议又是已经存在的东西。所以说UFS自己本身加的东西不多比如我提到的UPIU还有Descriptors, Flags And Attributes。
