usb主机控制器说明

USB拓扑
对于每个嵌入式的CPU芯片中一般都会集成一个或多个Host 控制器,每个Host控制器其实就是一个PCI设备,挂载在PCI总线上,在Linux系统中,驱动开发人员应该给Host 控制器提供驱动程序,Host 控制器用usb_hcd结构来表示。该结构体在/include/linux/usb/hcd.h中定义。

每个USB Host控制器都会自带一个USB Hub,被称为跟(Root)Hub。这个根Hub又可以接子(Sub)Hub,每个Hub上又可以挂载USB 设备。从广义上来说,USB Hub也算是USB设备。每个根USB Hub下可以直接或间接地连接127个设备

几种USB控制器类型:OHCI,UHCI,EHCI,xHCI
OHCI、UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的xHCI是USB3.0的接口标准。

OHCI(Open Host Controller Interface)是支持USB1.1的标准,但它不仅仅是针对USB,还支持其他的一些接口,比如它还支持Apple的火线(Firewire,IEEE
1394)接口。与UHCI相比,OHCI的硬件复杂,硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单。主要用于非x86的USB,如扩展卡、嵌入式开发板的USB主控。
UHCI(Universal Host Controller Interface),是Intel主导的对USB1.0、1.1的接口标准,与OHCI不兼容。UHCI的软件驱动的任务重,需要做得比较复杂,但可以使用较便宜、较简单的硬件的USB控制器。Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。
EHCI(Enhanced Host Controller Interface),是Intel主导的USB2.0的接口标准。EHCI仅提供USB2.0的高速功能,而依靠UHCI或OHCI来提供对全速(full-speed)或低速(low-speed)设备的支持。
xHCI(eXtensible Host Controller Interface),是最新最火的USB3.0的接口标准,它在速度、节能、虚拟化等方面都比前面3中有了较大的提高。xHCI支持所有种类速度的USB设备(USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed)。xHCI的目的是为了替换前面3中(UHCI/OHCI/EHCI)。
USB主机控制器驱动
顾名思义,主机控制器就是用来控制USB设备与CPU之间通信的。CPU要对设备做什么操作,会先通知主机控制器,而不是直接发送指令给USB设备。主机控制器接收到CPU的命令后,会去指挥USB设备完成相应的任务。这样,CPU把命令传给主机控制器后,就不用管余下的工作了,CPU转向处理其他的事情。

USB主机控制器必须由USB主机控制器驱动程序驱动才能运行。USB主机控制器驱动用hc_driver表示,在计算机系统中的每一个主机控制器都有一个对应的hc_driver结构体,该结构体在/include/linux/usb/hcd.h中定义。
————————————————
版权声明:本文为CSDN博主「huangweiqing80」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huangweiqing80/article/details/82998850

发布了27 篇原创文章 · 获赞 19 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/muaxi8/article/details/104268450