第四十六篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (1)
2017-02-17 17:35
549 查看
记录相关数据结构之前,先上一张图,这样就基本一目了然了
USB XHCI HOST有三种RING
分别为COMMAND, EVENT 与TRANSFER
这里所说的是TRANSFER RING
一个RING可能由一个或者多个SEGMENT构成
每一个SEGMENT则有多个TRB构成
多个SEGMENT的链接是由LINK TRB来实现的,LINK就像一个单链表,最后一个LINK TRB指向第一个SEGMENT,由此,形成了一个环,RING
TRANSFER TRB有以下几种类型:
针对USB CONTROL TRANSFER的SETUP, DATA, STATUS TRBs
针对BULK, INTERRUPT, ISO TRANSFER的NORMAL TRB
针对ISO TRANSFER的ISOCH TRB (ISO TD由一个ISOCH TRB与0个或多个NORMAL TRB构成)
SW将需要硬件完成的USB传输,通过TRB的形式,将信息提交给硬件,放入RING当中,放入的位置为当前ENQUEUE PTR的位置,每放一个,ENQUEUE PTR向前跨一步,遇到LINK TRB,则跳转到LINK TRB指向的位置
而硬件则按DEQUEUE PTR指向的位置,取出TRB到CACHE当中,执行该TRB,同样,每执行一个,则ADVANCE 该 DEQUEUE PTR,遇LINK TRB,跳转。
TD表示一个USB TRANSFER(不同于USB TRANSACTION)
在TRB当中,有一个CH BIT,如果一处TD由多个TRB构成,则软件需要将除最后一个TRB的所有CH BIT置位。
USB XHCI HOST有三种RING
分别为COMMAND, EVENT 与TRANSFER
这里所说的是TRANSFER RING
一个RING可能由一个或者多个SEGMENT构成
每一个SEGMENT则有多个TRB构成
多个SEGMENT的链接是由LINK TRB来实现的,LINK就像一个单链表,最后一个LINK TRB指向第一个SEGMENT,由此,形成了一个环,RING
TRANSFER TRB有以下几种类型:
针对USB CONTROL TRANSFER的SETUP, DATA, STATUS TRBs
针对BULK, INTERRUPT, ISO TRANSFER的NORMAL TRB
针对ISO TRANSFER的ISOCH TRB (ISO TD由一个ISOCH TRB与0个或多个NORMAL TRB构成)
SW将需要硬件完成的USB传输,通过TRB的形式,将信息提交给硬件,放入RING当中,放入的位置为当前ENQUEUE PTR的位置,每放一个,ENQUEUE PTR向前跨一步,遇到LINK TRB,则跳转到LINK TRB指向的位置
而硬件则按DEQUEUE PTR指向的位置,取出TRB到CACHE当中,执行该TRB,同样,每执行一个,则ADVANCE 该 DEQUEUE PTR,遇LINK TRB,跳转。
TD表示一个USB TRANSFER(不同于USB TRANSACTION)
在TRB当中,有一个CH BIT,如果一处TD由多个TRB构成,则软件需要将除最后一个TRB的所有CH BIT置位。
相关文章推荐
- 第四十七篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (2)
- linux内存模型之buddy(伙伴)系统一概览及相关数据结构
- Linux2.6内核--VFS层中和进程相关的数据结构
- linux路由内核实现分析(二)---FIB相关数据结构(1)
- 【linux驱动笔记】字符设备驱动相关数据结构与算法
- linux内核USB相关数据结构
- linux路由内核实现分析(二)---FIB相关数据结构(3)
- Linux物理内存相关数据结构
- linux 学习笔记--字符设备驱动相关数据结构
- Linux0.11内核--进程相关数据结构
- linux路由内核实现分析(二)---FIB相关数据结构(4)
- Linux 路由 学习笔记 之一 相关的数据结构
- linux虚拟文件系统VFS 的相关数据结构
- linux源码解析-VFS相关数据结构
- ARM Linux对中断的处理--相关数据结构
- 网络设备发送队列相关数据结构及其创建函数 (linux网络子系统学习 第十节 )
- linux路由内核实现分析(二)---FIB相关数据结构(2)
- linux路由内核实现分析(二)---FIB相关数据结构
- Linux源码解析-信号机制相关数据结构
- Linux0.11内核--进程相关数据结构