UFS Host基础特性分析 |
您所在的位置:网站首页 › ufs软件是什么 › UFS Host基础特性分析 |
Contents
UFS总体架构MPHYUniProUFSHCI
UFS Host ControllerUFS系统框图UFS controller wrapper
UFS总体架构
UFS总体架构主要包含了UFS Host Controller部分和UFS device部分,UFS协议对应的也分为两部分:UFS Host Controller Interface协议和UFS协议。 UFS具备的优势就来源于新的协议架构。和传统的eMMC相比,UFS底层采用了MPHY协议,这个是UFS底层物理信号传输协议,MPHY是有MIPI Alliance推出的PHY协议。它具有“快”和“稳”的传输特点。因为MPHY使用串行+差分的结构形式,串行保证了“快”,串行可以做到高频传输,而且没有的并行信号的相互干扰,而“稳”则由差分保证,差分传输可以相互抵消共模信号干扰。 UniPro UFSHCI
Host端数据结构 UniPro层是封装在UFS这个IP里面的,其中的寄存器也是CPU不能直接访问的。UFS整个模块对外的唯一接口就是UFSHCI(UFS Host Controller Interface)。CPU通过两条总线来实现对UFS的控制和数据交互,分别是APB和AXI总线。在下图中,左边的UFSHCI 寄存器,通过APB总线进行访问,其地址空间通过ioremap在内核申请虚拟地址空间即可被CPU直接访问;右边方框则是数据部分,有dma_alloc接口进行申请,通过AXI总线进行访问。 UFS host驱动通过分配和使用UTRD描述符和UTMRD描述符来与host控制器硬件通信。host控制器系统内存可以同时接受多达32个UTRD描述符和8个UTMRD描述符。每个UTRD描述符指向了一块内存区域,这块内存区域包含:命令UPIU(UCD),response UPIU,并包含了一块物理区域描述符表(PRDT),表中每一项指向一个数据buffer,存储需要传输的数据(command upiu)或要接收的数据(response upiu)。UCD的command和response将被分别组装成UPIU并通过UTP层进行传输。上图所示的数据结构为: 左侧UFSHCI寄存器分布分成6块,Host Controller capability、Interrupt and host status、UTP Transfer Request、UTP Task Managerment Request、UIC Command、Vendor Specific。UTP Transfer Request这一块的寄存器提供了指向UTRD(UTP Transfer Request Decriptor)list的指针地址。UTRD有0~31个,即32个,意味着UFS拥有32个slot,SOC层可以同时接收32个请求。32个UTRD是物理连续的,这点很重要,因为连续,所以可以直接根据slot序号直接获取到UTRD。UTRD里面包含了UPIU的地址,UPIU的size是固定的,否则AXI怎么能准确的把response信息填充到对应请求的Response UPIU里面呢。同样Response UPIU数据格式固定。如果UTRD里面有数据读写需求,那么需要填充PRDT(Physical Region Description Table)。PRDT指向的Data buffer不是连续的,而是离散状,因为PRDT是个表,所以这个表里面可以存放很多不连续的Data buffer地址,对应一个个的segment。1个Data buffer的size最大不能超过64K,这个是由芯片内部决定的,因为这个size涉及到一个数据包单元DATA OUT/IN UPIU的长度,也是一次底层数据包传输的长度,但是PRDT表的个数可以自己确定,一般软件定义为128个,那么一个UTRD也就是一个请求可以最大传输64K * 128 = 8M。在实际应用中一个读写请求如果size过大,如1000M,则会被上层切割,比如1M,所以底层的size是足够的。.除了32个UTRD外还有8个UTMR,顾名思义,这个是任务管理请求,对上面的32个请求的状态进行查询,如果说32个UTRD理解为工人,这8个UTMD可以理解监工,查询是否工作完成,如果工作在预期时间内没有完成的也可以执行abort操作,然后重新下发请求或者进行复位器件等相关的异常处理。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |