蛋蛋读UFS之六:UFS设备初始化和启动

这一节讲讲UFS初始化。

初始化和启动包括三个阶段:部分初始化,加载启动代码(可选)和初始化完成。

  • 部分初始化阶段

这个阶段开始于上电或者设备重启,它涉及到整个UFS栈的初始化。

这个初始化阶段完成后,整个物理层(M-PHY)和数据链路层(UniPro)应该被初始化好,传输层可以和主机交[……]

阅读全文

蛋蛋读UFS之五:逻辑单元(LU)

熟悉NVMe的朋友知道,NVMe里面有namespace的概念,就是把SSD物理空间划分成若干个逻辑地址空间。在UFS的世界里,它也有这个特性。UFS设备的物理存储空间可以有若干个独立的逻辑地址空间,我们把逻辑地址空间叫做LU,即Logical Unit,俗称“撸”。前面看到,在每个UPIU的Hea[……]

阅读全文

蛋蛋读UFS之四:UPIU数据包格式

UPIU是命令、数据和状态信息传输的载体,是UFS协议栈的灵魂。UPIU是有固定格式的数据包,我们分析数据包格式,有助于我们更深的理解UPIU以及整个UFS协议。这一章我们看看UPIU数据包的格式。
每个UPIU都有一个12字节的Header,再加上跟每个UPIU相关的域。一个UPIU(包括Head[……]

阅读全文

蛋蛋读UFS之三:UFS数据包UPIU

UFS中流淌的数据包叫做UPIU(UFS Protocol Information Unit,UFS协议信息单元),它是固定格式的数据结构,用以传输应用层发来的命令或者请求,以及跟它们相关的数据或者状态信息。它就是SATA中的FIS,PCIe中的TLP。
我们看看UFS中命令或请求是怎么执行的。[……]

阅读全文

蛋蛋读UFS之二:UFS协议栈

任何一种接口或者协议,都是由一个完整的协议栈组成的。UFS也不例外。

UFS定义了一个完整的协议栈。从上到下,依次为应用层、传输层、数据链路层和物理层。UFS使用MIPI(Mobile Industry Processor Interface ,移动产业处理器接口)联盟的UniPro作为数据[……]

阅读全文