Linux USB子系统 (2)


目录(?)[+]

枚举和设备描述符(Enumeration and Device Descriptors)

每当一个USB设备附着到总线上,它将会被USB子系统枚举.也就是分配唯一的设备号(1-127)然后读取设备描述符.描述符是一个包含关于设备的信息和属性的数据结构.USB标准定义了一个描述符层次结构(参考 Figure2).

Linux USB子系统 (2)_第1张图片
Figure 2. USB Descriptor

标准描述符

  *设备描述符: 描述USB设备的大概信息,其中包括适用于设备的全局信息,所有设备的配置。一个USB设备只有一个设备描述符。

  *配置描述符: 描述了特定的设备配置信息。一个USB设备可以有一或多个配置描述符。每个配置有一个或多个接口(interface),并且每个接口有零或多个端点(endpoint)。一个端点在一个单独的配置下,是不和其他的接口共享的,但是一个单独的接口对于同一个端点能够有几种可选的配置。端点可以没有限制的在一部分不同的配置下的接口间共享。配置仅仅能够通过标准的控制传输set_configuration来激活。不同的配置能够用来全局配置信息,例如供电消耗。

  *接口描述符: 描述了一个配置内的特定接口。一个配置提供一个或多个接口,每个接口带有零个或多个端点描述符描述了在配置内的唯一配置。一个可以包含可选的配置的接口使得配置好的端点和/或他们的特性能够多种多样。默认的接口设置总是设置为零。可替换的设置能够在标准控制传输的set_interface来选择一个。例如一个多功能设备带有话筒的摄像头,可以有三种可用的配置来改变分配在总线上的带宽。

Camera activated
Microphone activated
Camera and microphone activated
  *端点描述符: 包含主机用来决定每个端点带宽的信息。一个端点象征一个USB设备的逻辑数据源或接收端(logic data source or sink)。端点零是用来所有的控制传输并且该端点没有设备描述符。USB spec交替使用pipe和endpoint术语。

  *字符串描述符: 是可选项,提供了unicode编码的额外的可读信息。他们可以是厂商和设备名称或序列号。

设备类型(Device Classes)

标准的设备和接口描述符包含有关分类的内容:class, sub-class和protocol。这些字段主机可以用来设备或接口和驱动联系,依赖于分类说明是如何指定的。对于class字段和接口描述符的合法字段是由USB Device Working Group来定义的。

在Class Specification中将设备或接口分组归类并指定特性,这样就使得主机开发软件能够基于这个类别进行管理多种多样的实现。这样的主机软件通过设备中的描述信息将操作方法绑定到指定的设备。一个类别规格作为所有的该类别的设备或接口的最小操作框架服务。(PS:也就是说,所有该类别的设备或接口,都是以类别规格定义为接口框架。)

人机接口设备(HID)

HID分类,主要是包含人们控制计算机系统的设备。典型的HID分类设备包含:

键盘和鼠标设备例如:标准的鼠标设备,追踪球,游戏手柄。

前端面板控制   例如:旋钮,开关,按键,滚动器。

可能在电话设备,远端控制VCR,游戏或模拟设备上存在控制器。

你可能感兴趣的:(Linux USB子系统 (2))