编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

USB 客户机驱动程序

USBA 2.0 框架本身不是设备驱动程序。本章介绍Figure 20–1 和Figure 20–2 中所示的客户机驱动程序。客户机驱动程序与各种类型的 USB 设备(如海量存储设备、打印机和人机接口设备)交互。集线器驱动程序是同时充当结点驱动程序的客户机驱动程序,它枚举其端口上的设备,并为这些设备创建 devinfo 节点,然后连接客户机驱动程序。本章并未介绍如何编写集线器驱动程序。

USB 驱动程序的结构与其他任何 Oracle Solaris 驱动程序相同。USB 驱动程序可以是块驱动程序、字符驱动程序或 STREAMS 驱动程序。USB 驱动程序遵循调用约定,并使用 Oracle Solaris OS 手册页第 9 节中说明的数据结构和例程。请参见 Intro(9E)、Intro(9F) 和 Intro(9S)。

USB 驱动程序与其他 Oracle Solaris 驱动程序的差别在于,USB 驱动程序通过调用 USBA 2.0 框架函数来访问设备,而不是直接访问设备。USBA 2.0 框架是对标准 Oracle Solaris DDI 例程的补充。请参见下图。

图 20-2  驱动程序和控制器接口

image:图中显示了 DDI 和 USBAI 函数、不同版本的 USBA 框架和不同类型的主机控制器。

Figure 20–2 比Figure 20–1 更为详细地显示了接口。Figure 20–2 显示 USBA 是客户机驱动程序可以调用的内核子系统,正如客户机驱动程序可以调用 DDI 函数一样。

并非所有系统都具有Figure 20–2 中所示的所有主机控制器接口。OHCI(Open Host Controller Interface,开放式主机控制器接口)硬件在 SPARC 系统和第三方 USB PCI 卡上最常见。UHCI(Universal Host Controller Interface,通用主机控制器接口)硬件在 x86 系统上最常见。但是,OHCI 和 UHCI 硬件都可以在任何系统上使用。当存在 EHCI(Enhanced Host Controller Interface,增强型主机控制器接口)硬件时,EHCI 硬件与 OHCI 或 UHCI 位于相同的卡上,并共享相同的端口。

主机控制器、主机控制器驱动程序和 HCDI 构成由 USBA 控制的传输层。您不能直接调用 OHCI、EHCI 或 UHCI。可通过与平台无关的 USBA 接口间接调用它们。