接口/总线/驱动
前言
前面简单聊了一下USB驱动的整体框架(一),下面看一下驱动主机的《USB驱动框架》。
主机游戏框架
USB核心(USBD)是整个USB驱动的核心部分,USBD来自从USB主机接收到USB驱动端的非端设备进行处理,然后传送给上层的驱动端;同时也接收上层格式的数据流,相应的数据处理后承接交给USB主机驱动。所以它是一个上启下的作用。
重要结构体
usb_hcd -- 主机驱动器
hc_driver -- 控制器操作函数
调用usb_submit_urb ()提交一个USB请求之后,该函数调用usb_hcd_submit_urb(),并最终调用usb_hcd的驱动成员(hc_driver类型)的urb_enqueue()函数。
ehci_hcd -- ECHI主机
ECHI HCD驱动属于HCD驱动的实例,用ehci_hcd结构体来表示,它通常会作为usb_hcd结构体的私有数据(hcd_priv)。
API函数
该drivers/usb/ehci-hcd.c中实现了EHCI主机驱动的工作,具体的驱动只要简单调用ehci_init_driver()就可以/看一下主机的具体实现:
这个函数就是初始化hc实例_驱动程序,这个函数带的通用hc_driver ,而第二个参数可以是hc_driver实例的reset()、port_power(另外一个驱动程序)一些额外的专利数据。
上面是Linux已经很好操作的ehci接口函数,基本都是通用的,所以不需要自己再实现。
xhci主机的驱动方式和ehci基本一样,在/drivers/usb/host/xhci.c中实现XHCI主机驱动的工作。具体的驱动只要简单调用xhci_init_driver()即可。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !