UFS Host Controller工作流程

UFS Host基础特性分析 -- 硬件部分 ContentsUFS总体架构MPHYUniProUFSHCIUFS Host ControllerUFS系统框图UFS controller wrapper UFS总体架构     UFS总体架构主要包含了UFS Host Controller部分和UFS device部分,UFS协议对应的也分为两部分:UFS Host Controller Interface协议和UFS协议。     无论是UFS Host Contr 阅读详情
AI摘要

本文深入解析UFS架构,包括UFS主机控制器的主要运作流程、HCI接口设计、传输请求接口及其实现细节。同时介绍了UFS协议如何通过UTP层进行数据传输,以及hostsoftware与hostcontroller之间的交互机制。

该文档描述了UFS Host Controller的主要运作流程以及在开源内核代码hisi平台中的host controller的接口函数设计
文档大部分内容参考来自JEDEC STANDARD JESD223C 标准配置文档以及 hisi平台内核ufs源代码。

UFS架构图

    UFS协议为UFS定义了一个通用的host controller interface(HCI),主机的驱动程序通过与HCI工作,达到与UFS设备进行交互的目的。该标准定义列寄存器级的HCI设计,负责主机Software和UFS设备间的接口管理和数据传输,其架构如下图所示:
HCI
    蓝色箭头上方为主机软件部分,下方为硬件部分(即host controller以及UFS设备),该文档中分析的ufshcd代码主要是为了实现UFS host controller Interface的功能。

HCI接口架构

    主机的Software通过内存中的一系列host register和一些称为Transfer Request Descriptors 的数据结构来与 Host controller 硬件进行交互。UFSHCI定义了两种接口。MIMO Space以及Host Memory Space,下图展示了UFS HCI的框图。
HCI框图

  • MMIO Space:在这个空间,hardware register 被定义为 host software 的接口,通过 MMIO 的方式被实现,主要包含了下面三种类型的寄存器:
    • Host Controller Capability Registers,这些寄存器提供了关于Host Controller功能的描述。包括 UFS 标准版本、主机控制器支持的命令队列的大小以及主机控制器标识数据。
    • Runtime and Operation Registers。
      • Interrupt configuration:这些寄存器为 host software 提供了使能/中止以及中断状态的接口。
      • Host controller status. 该寄存器显示 host controller 的状态,并允许主机 software 初始化/禁用 host controller。
      • UTP transfer Request List management. 这些寄存器给 UTP Transfer Request List 提供了接口。
      • UTP Task Management request lists management. 这些寄存器为 UTP Task Management request list 提供了一个接口。
      • UIC Command Registers。这些寄存器为 Unipro 配置以及控制提供了接口。
    • Vendor Specific Registers. 由供应商进行定义。
  • Host Memory Space:该空间中包含了能够描述将执行命令和命令中数据缓存的数据结构。简单地可以理解为:UTP Transfer Request List 管理通用的 IO 命令,而 UTP Task Mangement Request List 对应管理命令。
传输请求接口(Transfer Request Interface)

    一个 UFS 的 host system 由一些硬件和软件层组成(host controller 和 host software)。下图展示了其层次结构。
hci Transfer Request Interface
    前面定义的数据结构和寄存器就是为了实现上图中的这 4 个 service access points(SAPs) 而定义。分别为 UIO_SAP, UDM_SAP, UTP_CMD, UTP_TM_SAP。为了管理 host software 和 UFS 设备间的通信,host controller 为主机 software 发送出传输请求提供了如下 3 个独立的接口。

  • UTP Tranfer Request List:主机软件使用此列表来实现 UTP_CMD_SAP 和 UDM_SAP。
    • UTP_CMD_SAP 包括对以下命令类型的支持: UFS 采用的所有 INCITS T10 草案标准功能。本机 UFS 命令集。
    • UDM_SAP 包括对以下命令类型的支持: 通过 QUERY REQUEST UPIU/QUERY RESPONSE UPIU 和 NOP IN/NOP OUT UPIU 的设备管理功能。
      - 该列表由系列称为 UFS 传输请求描述符 (UTRD) 的数据结构组成,最多32个。 UTRD 描述了要执行的命令以及相关的数据。 UFS 主机软件通过将UTRD插入到这个列表向主机控制器发出命令,然后为列表响铃主机控制器门铃。命令由 UFSHCI 按照它们在列表中的顺序分派执行,即使它们可能不按顺序完成。主机控制器代表主机处理器管理与命令相关的所有数据传输操作。对于正在更新的列表中的命令,所有命令都可能导致命令完成中断或 UTRD 的状态字段。 UFS SW 可能会在运行时向列表添加命令。主机控制器支持中断聚合,从而为预定义数量的命令完成生成单个命令完成中断。
  • UTP Task Management Request List: 主机软件使用此列表来实现 UTP_TM_SAP,该列表包名为 UFS Task Management Request Descriptor(UTMRD)的数据结构组成,最多8个。UTMRD 详细描述了 host software 希望设备执行的任务管理函数。所有的 Task Management Request 将优先于上面 UTP Transfer Request 的执行,UFS 主机软件通过在列表上放置一个 UTMRD 向主机控制器发出任务管理功能,然后为列表响铃主机控制器门铃。 UFSHCI 会按照它们在列表中的顺序分派函数执行,即使它们可能会不按顺序完成。所有任务管理功能都可能导致更新列表中功能的请求完成中断或 UTMRD 状态字段。 UFS SW 可以在运行时向列表中添加任务管理功能。此列表不支持中断聚合。
  • UIC Command Register. 这个寄存器集是被主机 software 直接用来执行一个 UIC 命令
UFS 主机控制器寄存器接口(host controller Interface)

    主机控制器寄存器是内存映射的,存在于 MMIO 空间中。寄存器访问的最大大小为 64 位; 且以8字节对齐。UFSHCI 寄存器用于控制主机控制器的操作以及从主机控制器读取状态和中断信息。以下是UFSHCI的标准寄存器映射。
HCI寄存器

UTP 层数据传输

    host driver与utp层是直接通信的,而二者的数据交互被分成一系列的消息,这些消息根据标准组织为UTP Protocol Information Units(UPIU)的格式,UFS协议文档中的表10-2描述了不同种类的UPIU信息,比如 NOP Out, Command, Response,Data Out 等类型。UPIU 的内容是存放在名为 UTP Command Descriptor(UCD)的数据结构中,而前面所介绍的 UTRD(UTP Transfer Request descriptor)中存放有指向 UCD 的指针。
    数据在 host memory, host controller, device 三者之间都可以理解为以 UPIU 的形式来进行传递。下图给出了一个从 host 端到 device 端传输 577 byte 数据的例子:

UFS Host Controller工作流程:寄存器级初始化与命令执行全链路解析 UFS Host Controller(UFS HC)是嵌入式存储系统中连接SoC与UFS设备的核心硬件IP,其本质并非即插即用的协议栈抽象层,而是依赖精确寄存器操作的状态机控制器。它基于UTP协议、通过M-PHY物理层通信,工作原理围绕HCS状态机、UTRD描述符队列、Doorbell触发机制及中断响应闭环展开。技术价值在于提供确定性启动时序、低延迟命令调度与硬件级错误可观测性,广泛应用于手机Boot ROM、车载域控制器及工业边缘设备等对启动时间与可靠性要求严苛的场景。本文聚焦UFS HC寄存器手册定义 阅读详情

相关推荐

UFS Host Controller原理与HCI寄存器深度解析

UFS Host Controller是SoC中负责UFS协议通信的核心硬件单元,其本质是遵循UTP协议、处理UPIU包、通过HCI寄存器受控的专用IP核。它不参与NAND物理操作,也不决定UFS版本兼容性,而是作为CPU与UFS设备间的协议翻译器和链路协管器,承担命令解析、传输调度与错误监控职能。技术价值体现在高带宽、低延迟块存储接入能力,支撑智能手机、车载系统及边缘AI设备对UFS 3.1/4.0闪存的稳定驱动。典型应用场景包括嵌入式存储初始化调试、UFS性能瓶颈定位及HCI寄存器级故障排查。本文聚焦U

weixin_31476015的博客 718

SCSI子系统基础学习笔记 (之UFS子系统) - 1.2 概述(软件部分)

目录1. 前言2. UFS子系统软件架构3. UFS模块框图4. UFS领域模型参考文档 1. 前言 本专题我们开始学习SCSI子系统的相关内容。本专题主要参考了《存储技术原理分析》、ULA、ULK的相关内容。本专题主要以硬件UFS,控制器以高通UFS控制器为例,记录SCSI子系统的框架流程。本文是UFS子系统软件概述部分。 kernel版本:5.10 平台:arm64 注: 为方便阅读,正文标题采用分级结构标识,每一级用一个"-“表示,如:两级为”|- -", 三级为”|- - -“ 2. UFS子系

HZero 7851

SCSI子系统基础学习笔记 (之UFS子系统) - 2.1UFS子系统初始化之ufs_qcom_probe

目录1. 前言2.ufs_qcom_probe|- -ufshcd_alloc_host|- -ufshcd_init参考文档 1. 前言 本专题我们开始学习SCSI子系统的相关内容。本专题主要参考了《存储技术原理分析》、ULA、ULK的相关内容。本专题主要以硬件UFS为例,记录SCSI子系统的框架流程。本文是UFS子系统初始化部分。 如何发现有哪些场景?主要可以从如下几个角度: 1.初始化和退出; 2.线程处理函数; 3.调用中间层导出函数的流程; 4.调用底层回调函数的; 5.顶层使用者的动作 ufs的

HZero 6732

UFS host controller驱动开发避坑指南:Linux 5.10内核下的寄存器操作实录

本文深入解析Linux 5.10内核下UFS Host Controller驱动开发的关键技术,重点介绍AHB接口初始化、TR/TMR门铃寄存器触发机制及中断聚合单元配置等核心环节。通过代码片段和逻辑分析仪数据,揭示ARM64平台上UFS HCI寄存器操作的常见问题与解决方案,帮助开发者规避典型陷阱。

y7z8a9的博客 1083

UFS HCI 2.1 学习(1) - HCI 结构

HCI 全称是Host Controller Interface. 他和JEDEC UFS2.1 协议都是UFS的行业规范,但是约束的位置是不同的。 从Figure 1 中可以看到,HCI主要是针对主机端从驱动(软件)到controller 接口(硬件)标准的规范。再往下到UTP和UIC层都不是HCI的范围。 如果是大家在看kernel /uboot/lk等代码的时候,看到驱动最底层的代码,是可以和HCI协议的描述对应起来的。 Figure 2中我们先看右边Host Memory Space. 这

comeonbestxiaohe的博客 2068

UFS总体介绍及FPGA开发

通过实现UFS的主控制器、设备控制器等组件,我们可以在FPGA上进行UFS开发,并实现高速数据传输和低功耗特性的存储解决方案。物理层负责传输物理信号,数据链路层提供数据包的传输和错误检测功能,传输层处理数据包的分段、重组和重传,逻辑层管理设备和主控制器之间的命令和数据传输,文件系统层负责文件管理和数据存储。在本文中,我们将介绍UFS的总体架构和特性,并探讨如何在FPGA上进行UFS开发。这些组件的实现涉及到UFS协议的具体细节和硬件平台的特性,因此需要参考UFS协议规范和FPGA开发平台的相关文档。

PodProgram的博客 2134

黑猫详解【UFS HCI】第2篇:UFS HCI register详解

host软件设置对应bit为0,用来向host controller表示请求传输的命令槽将被释放。host软件置1,表示host端准备好去执行某个请求了,主机软件通过将此字段中的相关位设置为“0”来指示请求插槽没有更改。host软件置1,表示host端准备好去执行某个task请求了,主机软件通过将此字段中的相关位设置为“0”来指示请求插槽没有更改。host软件将UTMRLRSR的值从1变为0,那么这个字段的值将会被清零。host软件将UTRLRSR的值从1变为0,那么这个字段的值将会被清零。

黑猫奥利奥的博客 1599

DWC_usb3_databook_2.50a.pdf

DWC_usb3_databook_2.50a.pdf usb3的芯片手册

毫米波雷达SLAM实战:如何在无GPS的地下隧道实现精准三维建图(附Python代码)

本文深入探讨了在无GPS信号的地下隧道等拒止环境中,如何利用毫米波雷达SLAM技术实现精准三维建图。文章系统分析了毫米波雷达点云数据稀疏、噪声多的挑战,并提供了从环境配置、核心算法(如特征提取、ICP配准、回环检测)到全局优化的完整实战解决方案,附有可运行的Python代码,帮助开发者构建鲁棒的自主导航与建图系统。

t8u9v0w1x的博客 237

一文搞懂 RC Correlation Scale Factor 的生成与应用

pre-route 用的是统计估算模型,post-route 用的是详细布线提取,signoff 用的是第三方 QRC 或 StarRC——三个工具,三套参数体系,结果自然天差地别。不同 RC corner(rc_worst/rc_best/rc_typical)对应不同的工艺角和温度环境,每个 corner 的 R/C 偏差比例不同,必须分别生成和应用各自的 scale factor。别被名字骗了,这个工具专门干一件事——统计拟合两组 SPEF 之间的偏差,自动推荐最优 scaling factor。

weixin_47770727的博客 547

4.UE数字人工程运行逻辑及程序逻辑

UE数字人工程运行逻辑及程序逻辑

6084

紫光同创PGL50H开发板实战:盘古50KH视频板的多媒体处理与高速通信方案

本文详细介绍了基于紫光同创PGL50H FPGA芯片的盘古50KH视频开发板在多媒体处理与高速通信方面的实战应用。文章从开发板硬件架构解析入手,逐步指导开发环境搭建、DDR3内存控制器配置、HDMI视频输入输出实战,并重点探讨了利用板载HSST高速收发器实现光纤通信与万兆以太网的方案。最后,通过构建一个集多路视频采集、处理与光纤传输于一体的系统案例,展示了该开发板在高性能实时数据处理领域的强大潜力。

b9c0d的博客 484

CAN信号定义避坑指南:Kvaser Database Editor里Byteorder和Bitpos设置的那些‘坑’

本文详细解析了在Kvaser Database Editor中配置CAN信号时,字节序(Byteorder)和起始位(Bitpos)设置的常见错误及解决方案。通过实际案例和验证技巧,帮助工程师避免DBC文件配置中的陷阱,确保车载电子系统的稳定通信。

weixin_28678831的博客 360

ESP-01S获取网络时间踩坑全记录:AT指令调试、JSON解析乱码、时区处理,一个都不能少

本文详细记录了使用ESP-01S WIFI模块获取网络时间的完整过程,包括AT指令调试、JSON解析乱码处理以及时区转换等关键步骤。通过实战案例和代码示例,帮助开发者避开常见陷阱,实现稳定的网络时间同步功能。

weixin_30460489的博客 295

从苏宁电器到卡巴斯基(第二部)第14篇:我在卡巴的日子 XIV

目录 WannaCry 我的感慨 邻里矛盾 WannaCry 如果大家对于科技互联网圈子的新闻比较感兴趣的话,相信会对2017年5月的“WannaCry勒索病毒”事件记忆犹新,因为这个病毒在当时的全世界范围内掀起了极大的波澜,众多的企事业单位深受其害,造成的金钱和数据损失难以估量,从某种意义上来说,它甚至引领了勒索病毒新一轮的爆发浪潮。而通过这样的一次爆发,也让我对于卡巴斯基的技术实力有了更进一步的了解。 我记得很清楚,爆发的那天是周六,没记错的话Seth那天有事,就请假没来,只有我自己在公司值

Gleam的专栏 4913

2025年9月GESP(C++四级):排兵布阵

作为将军,你自然需要合理地排兵布阵。地图可以视为n行m列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?

王老师青少年编程 1375

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: UFS电源管理
下一篇: Linux电源管理 -- RPM机制
Otis_L
博客等级 码龄12年 191粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值