糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > struct usb_hcd

struct usb_hcd

时间:2023-07-30 16:28:05

相关推荐

struct usb_hcd

20.2.1 USB主机驱动的整体结构

USB主机控制器有3种规格:OHCI (Open Host Controller Interface)、UHCI (Universal Host Controller Interface) 和EHCI (Enhanced Host Controller Interface)。OHCI驱动程序用来为非PC 系统上以及带有SiS和ALi芯片组的 PC 主板上的USB芯片提供支持。UHCI驱动程序多用来为大多数其他PC主板(包括 Intel和Via)上的USB芯片提供支持。EHCI由USB 2.0规范所提出,它兼容于OHCI 和UHCI。UHCI的硬件线路比OHCI简单,所以成本较低,但需要较复杂的驱动程序,CPU负荷稍重。本节将重点介绍嵌入式系统中常用的OHCI主机控制器驱动。

1.主机控制器驱动

在Linux内核中,用usb_hcd结构体描述USB主机控制器驱动,它包含USB主机控制器的“家务”信息、硬件资源、状态描述和用于操作主机控制器的hc_driver等,其定义如代码清单20.6所示。

代码清单20.6 usb_hcd结构体

usb_hcd中的hc_driver成员非常重要,它包含具体的用于操作主机控制器的钩子函数,其定义如代码清单20.7所示。

代码清单20.7 hc_driver结构体

在Linux内核中,使用如下函数来创建HCD:

如下函数被用来增加和移除HCD:

2.OHCI主机控制器驱动

OHCI HCD驱动属于HCD驱动的实例,它定义了一个ohci_hcd结构体,作为代码清单20.6给出的usb_hcd结构体的私有数据,这个结构体的定义如代码清单20.8所示。

代码清单20.8 ohci_hcd结构体

使用如下内联函数可实现usb_hcd和ohci_hcd的相互转换:

从usb_hcd得到ohci_hcd只是取得“私有”数据,而从ohci_hcd得到usb_hcd则是通过container_of()从结构体成员获得结构体指针。

使用如下函数可初始化OHCI主机控制器:

如下函数分别用于开启、停止及复位OHCI控制器:

OHCI主机控制器驱动的主机工作仍然是实现代码清单20.7给出的hc_driver结构体中的成员函数。

如果觉得《struct usb_hcd》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。