USB 规范是公用免费规范。该规范定义了总线和连接器的电子和机械接口。
USB 采用由集线器为 USB 设备提供附着点的拓扑结构。主机控制器包含根集线器,该集线器是系统中所有 USB 端口的起点。有关集线器的更多信息,请参见USB 主机控制器和集线器。
图 7–1 显示了带有三个活动 USB 端口的系统。第一个 USB 端口连接 USB 内存条。第二个 USB 端口连接外部集线器,该集线器又连接 cdrw 设备和键盘/鼠标复合设备。作为复合设备,此键盘包含 USB 控制器,该控制器可以操作键盘和连接的鼠标。键盘和鼠标共享公用的 USB 总线地址,因为它们由同一个 USB 控制器定向。
图 7–1 还显示了作为组合设备的集线器和打印机的示例。该集线器是与打印机封装在同一个箱子中的外部集线器。打印机与集线器永久连接。集线器和打印机具有各自独立的 USB 总线地址。
以下列出了图 7–1 中显示的一些设备的设备树路径名。
/pci@1f,4000/usb@5/storage@1
/pci@1f,4000/usb@5/hub@2/device@1/keyboard@0
/pci@1f,4000/usb@5/hub@2/device@1/mouse@1
/pci@1f,4000/usb@5/hub@2/storage@3
/pci@1f,4000/usb@5/hub@3/printer@1
具有类似属性和服务的 USB 服务组成设备类。 每个设备类都有对应的驱动程序。类中的设备由同一个设备驱动程序对进行管理。但是,USB 规范也允许使用不属于特定类的供应商专有设备。
人工接口设备 (Human Interface Device, HID) 类包含用户控制的设备,如以下设备:
键盘
鼠标设备
游戏控制器
通信设备类包含以下设备:
调制解调器
以太网适配器
其他设备类包括以下类:
音频
显示器
打印机
存储设备
每个 USB 设备都包含反映其所属类的描述符。设备类可指定其成员在配置和数据传输中的行为方式。可以从以下站点获取其他的类信息:
有关 Solaris 发行版支持的 USB 设备的更多信息,请参见 usb(7D)。
从 Solaris 9 4/04 发行版开始,包括以下 USB 驱动程序增强功能。
通用 USB 驱动程序-现在可通过使用标准的 UNIX® read(2) 和 write(2) 系统调用的应用程序来访问和处理 USB 设备,并且无需编写专用内核驱动程序。其他功能包括:
应用程序可访问原始设备数据和设备状态。
驱动程序支持控制、批处理和中断(出入)传输。
有关更多信息,请参阅 ugen(7D)。
USB 串行驱动程序支持
Digi Edgeport USB 支持-Edgeport USB 驱动程序只能用于 Edgeport 设备,而不能用于其他 USB 串行设备。
新设备可以作为 /dev/term/[0-9]* 和 /dev/cua/[0-9]* 进行访问。
USB 串行端口可以像任何其他串行端口一样使用,但不可用作本地串行控制台。用户可以很容易地理解这样一个事实,即数据是通过 USB 端口运行的。
有关更多信息,请参见 usbser_edge(7D) 或转至以下站点:
有关 Edgeport 兼容性问题的更多信息,请访问以下站点:
Keyspan-Keyspan USB 串行驱动程序只能用于 Keyspan 设备,该驱动程序当前支持 USA-19HS 和 USA-49WLC 模型。
有关更多信息,请参见 usbsksp(7D)。
Prolific-Prolific USB 串行驱动程序只能用于基于 PL2303 芯片组的设备。
有关更多信息,请参见 usbsprl(7D)。
对用户编写的内核和用户级驱动程序的文档和二进制数据支持-有关 USB 驱动程序开发的最新信息,请访问:
EHCI 驱动程序的功能包括:
符合支持 USB 2.0 的增强主机控制器接口的标准。
支持高速控制、批处理和中断传输。
目前尚不支持高速同步事务。
USB 2.0 芯片包含一个 EHCI 控制器以及一个或多个 OHCI 或 UHCI 控制器。
USB 1.1 设备插入后会动态分配给 OHCI 或 UHCI 控制器。USB 2.0 设备插入后会动态分配给 EHCI 控制器。
使用 prtconf 命令输出可确定系统是支持 USB 1.1 设备还是 USB 2.0 设备。例如:
# prtconf -D | egrep "ehci|ohci|uhci" |
如果 prtconf 输出标识了 EHCI 控制器,则系统支持 USB 2.0 设备。
如果 prtconf 输出标识了 OHCI 或 UHCI 控制器,则系统支持 USB 1.1 设备。
USB 设备可以表示为两级设备树节点。设备节点表示整个 USB 设备。一个或多个子 接口 节点表示设备上的各个 USB 接口。
驱动程序绑定是通过使用兼容的名称属性实现的。有关更多信息,请参阅 IEEE 1275 USB 绑定的 3.2.2.1 节以及《编写设备驱动程序》。驱动程序可以绑定至整个设备并控制所有接口,也可以只绑定至一个接口。如果供应商或类驱动程序不要求绑定至整个设备,则可以将通用 USB 多接口驱动程序绑定至设备级节点。此驱动程序会通过使用 IEEE 1275 绑定规范的 3.3.2.1 节中定义的兼容名称属性,尝试将各驱动程序绑定至每个接口。
Solaris USB 体系结构 (USB Architecture, USBA) 遵循 USB 1.1 和 USB 2.0 规范,并且是 Solaris 设备驱动程序接口 (Device Driver Interface, DDI) 的一部分。USBA 模型与 Sun 公用 SCSI 体系结构 (Sun Common SCSI Architecture, SCSA) 类似。如下图所示,USBA 是一个薄层,用于为客户机驱动程序提供通用抽象 USB 传输层,进而为这些驱动程序提供实现核心通用 USB 功能的服务。