usb core 、usb 主机控制器、usb设备驱动的层次关系

usb core 、usb 主机控制器、usb设备驱动的层次关系_第1张图片 

 

使用USB设备时,两个模块是必须的:

usb核心模块:usbcore      

usb主机控制器驱动,如ehci_hcd、ohci_hcd或uhci_hcd

usbcore:

       usbcore负责实现一些核心的功能,为别的设备驱动程序提供服务,提供一个专用于访问和控制usb硬件的接口,而不用去考虑系统当前存在哪种主机控制器。Core、host主机控制器和USB驱动之间的关系如图所示。

         Usb core的代码会对整个USB系统初始化,比如申请struct bus_type usb_bus_type,然后会扫描usb总线,看线上连接了哪些USB设备,或者说root hub上连接了哪些usb设备,比如说一个usb键盘,那么就为它准备一个struct device,根据它的情况,为这个struct device赋值,并插入到device链表中来。如果root hub上又连了普通hub,那么还要扫描这个hub上有什么设备,并将这些设备加入到usb_type_type的devices链表。Drivers链表是每一个driver本身去bus上登记的。

主机控制器(host controller-HC):

         主机控制器驱动(HCD)必须位于USB软件的最底层,HCD提供主机控制器硬件的抽象,隐藏硬件的细节,在主机控制器之下是物理的usb及所有与之连接的USB设备。而HCD只对usbcore负责。Usbcore将用户的请求映射到相关的HCD,用户不能直接访问HCD。

你可能感兴趣的:(struct)