博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USB device layout, descriptors, interface alternate setting
阅读量:5958 次
发布时间:2019-06-19

本文共 11130 字,大约阅读时间需要 37 分钟。

http://msdn.microsoft.com/en-us/library/windows/hardware/hh920375(v=vs.85).aspx

A Universal Serial Bus (USB) device defines its capabilities and features through configurations, interfaces, alternate settings, and endpoints. This topic provides a high-level overview of those concepts. For details, see the USB specifications atUniversal Serial Bus Documents.

USB configuration defines the capabilities and features of a device, mainly its power capabilities and interfaces. The device can have multiple configurations, but only one is active at a time. The active configuration isn't chosen by the USB driver stack, but by a client of the driver stack, such as the device driver. A configuration can have one or more USB interfaces that define the functionality of the device. Typically, there is a one-to-one correlation between a function and an interface. However, certain devices expose multiple interfaces related to one function. In that case, the device can have an interface association descriptor (IAD). An IAD groups together interfaces that belong to a particular function.

Each interface contains one or more endpoints, which are used to transfer data to and from the device. In addition, the interface contains alternate settings that define the bandwidth requirements of the function associated with the interface. To sum up, a group of endpoints form an interface, and a set of interfaces constitutes a configuration in the device.

During device configuration, the USB client driver for the device must select a configuration, one or more or interfaces within that configuration, and an alternate setting for each interface. Most USB devices don't provide multiple interfaces or multiple alternate settings. For example, the OSR USB FX2 Learning Kit device has one interface with one alternate setting and three endpoints. For more information about the learning kit, see OSR Online.

Single interface device

This diagram shows the configuration of a device with a single interface:

In this example, the diagram shows Endpoint 0, called the default endpoint. All USB devices must have a default endpoint that is used for control transfers (see USB Control Transfer). Configuration 0 has one interface: Interface 0 with one alternate setting. Alternate Setting 0 uses all three endpoints in the interface.

Multiple-interfaces device

For multifunction devices, the device has multiple interfaces. To use a particular function or an interface, the client driver selects the interface and an associated alternate setting. Consider a multi-function USB device such as a webcam. The device has two functions, video-capture (camera) and audio input (microphone). The device defines an endpoint in a video interface that streams video. The device has another endpoint in a separate interface that takes audio input through the microphone. The configuration of the device includes both of these interfaces.

This diagram shows the configuration of the webcam device:

In this example, the diagram shows the default endpoint. Configuration 0 has two interfaces: Interface 0 and Interface 1.

Interface 0 has three alternate settings. Only one of the alternate settings is active at any given time.
Notice that Alternate Setting 0 doesn't use an endpoint, whereas Alternate Settings 1 and 2 use Endpoint 1.
Typically, a video camera uses an isochronous endpoint for streaming. For that type of endpoint, when the endpoint is in use, bandwidth is reserved on the bus. When the camera is not streaming video, the client driver can select Alternate Setting 0 to conserve bandwidth. When the webcam is streaming video, the client driver can switch to either Alternate Setting 1 or Alternate Setting 2, which provides increasing levels of quality and consumes increasing bus bandwidth. Interface 1 has two alternate settings.
Similar to Interface 0, Alternate Setting 0 doesn't use an endpoint. Alternate Setting 1 is defined to use Endpoint 2.

Endpoints can't be shared between two interfaces within a configuration. The device uses the endpoint address to determine the target endpoint for a data transfer or endpoint operation, such as pipe reset. All those operations are initiated by the host.

Information about device configuration, interface, and endpoints are described in data structures called descriptors. For more information, see USB Descriptors.

Before you start using the device, get information about the device layout. Usbview.exe is an application that enables you to browse all USB controllers and the USB devices that are connected to them. For each connected device, you can view the device, configuration, interface, and endpoint descriptors to get an idea about the capability of the device.

You can install USBView from the Install Debugging Tools for Windows package in the Windows Software Development Kit (SDK). Typically, USBView is installed in theDebuggers folder in the Windows Driver Kit (WDK).

A USB device provides information about itself in data structures called USB descriptors. This section provides information about various descriptors that a client driver can obtain from a USB device. 

The host obtains descriptors from an attached device by sending various standard control requests (GET_DESCRIPTOR requests) to the default endpoint. Those requests specify the type of descriptor to retrieve. In response to such requests, the device sends descriptors that include information about the device, its configurations, interfaces and the related endpoints. Device descriptors contain information about the whole device. Configuration descriptors contain information about each device configuration. String descriptors contain Unicode text strings.

Every USB device exposes a device descriptor that indicates the device’s class information, vendor and product identifiers, and number of configurations. Each configuration exposes it's configuration descriptor that indicates number of interfaces and power characteristics. Each interface exposes an interface descriptor for each of its alternate settings that contains information about the class and the number of endpoints. Each endpoint within each interface exposes endpoint descriptors that indicate the endpoint type and the maximum packet size.

For example, consider the OSR FX2 board device layout described in . At device level, the device exposes a device descriptor and an endpoint descriptor for the default endpoint. At configuration level, the device exposes a configuration descriptor for Configuration 0. At interface level, it exposes one interface descriptor for Alternate Setting 0. At the endpoint level, it exposes three endpoint descriptors.

In this section

Topic Description

The device descriptor contains information about a USB device as a whole. This topic describes the  structure and includes information about how a client driver can send a get-descriptor request to obtain the device descriptor.

A USB device exposes its capabilities in the form of a series of interfaces called a USB configuration. Each interface consists of one or more alternate settings, and each alternate setting is made up of a set of endpoints. This topic describes the various descriptors associated with a USB configuration.

Device, configuration, and interface descriptors may contain references to string descriptors. This topic describes how to get a particular string descriptor from the device.

USB interface association descriptor (IAD) allows the device to group interfaces that belong to a function. This topic describes how a client driver can determine whether the device contains an IAD for a function.

Microsoft provides a set of proprietary device classes and USB descriptors, which are called Microsoft OS Descriptors (MODs). This topic provides an overview of MODs.

This topic describes the steps for issuing a select-interface request to activate an alternate setting in a USB interface. The client driver must issue this request after selecting a USB configuration. Selecting a configuration, by default, also activates the first alternate setting in each interface in that configuration.

Each USB configuration must support one or more multiple USB interfaces. Each interface exposes one or more endpoints that are used to transfer data to and from the device. USB interfaces must have a device-defined, interface index that is used to identify the interface. The interface must also have one or more alternate settings that group the endpoints of the interface. As part of device configuration, the client driver must select one of the alternate settings in the interface. Because endpoints can be shared among alternate settings, only one setting can be active at a given time. After the alternate setting is active, its endpoints become available for data transfers.

For a multiple interface device, two interfaces can be active at a given time. The client driver must activate an alternate setting in each interface. Endpoints are not shared among interfaces and therefore, each simultaneous data transfers can be performed on each interface.

Alternate settings are device-defined and identified with a number called the setting index. The alternate setting at index 0 is called the default alternate setting in this documentation set. An alternate setting is described in a  structure. The structure contains the interface index with which the setting is associated and the number of endpoints defined by the setting. It also contains information about the class specification to which the functionality of the interface conforms. The way, in which endpoints are grouped, depends on the functionality of the device.

For example, an interface exposes two isochronous and two bulk endpoints through three alternate settings (index 0, 1, 2).

The Alternate Setting 0 does not define any endpoint;
Alternate Setting 1 defines the bulk endpoints;
Alternate Setting 2 defines the isochronous endpoints.
Because Alternate Setting 0 has no endpoint, the client driver can select this setting to disable data transfer in order to conserve bandwidth. When either of the other settings is active, the device is ready for data transfers.
Alternate Setting 1 can be used to transfer bulk data.
Alternate Setting 2 can be selected when the device is in streaming mode.
Therefore, alternate settings give the client driver the flexibility of changing the device configuration as and when required.
In this example, the client driver can switch the device functionality from a bulk transfer to streaming, just by selecting an alternate setting.

Alternate settings can also be used to set bandwidth requirements. For an example, see the .

Windows Driver Foundation (WDF) provides methods in  and that the client driver can call to select a different alternate setting. KMDF client driver can select a setting by specifying the setting index, interface descriptor of the setting, or by submitting an URB that contains the request. UMDF client driver can only select an alternate setting by specifying its setting index.

After a select-configuration request completes successfully, the previously active alternate setting is deactivated.

 

转载地址:http://rekax.baihongyu.com/

你可能感兴趣的文章
STP、RSTP、PVST&PVST+、MSTP
查看>>
ESXi删除最后的快照
查看>>
OPT_PARAM Hint
查看>>
Debian 使用 iptables-persistent 持久化 iptables 规则
查看>>
SATA硬盘分区设置与安装详解
查看>>
iptalbes配置ftp的主\被动模式
查看>>
账号和权限的管理
查看>>
nginx 某个url或者url下面的图片不能访问就跳到指定的url
查看>>
利用44951 event解决LOB SPACE enq HW - contention等待争用
查看>>
域名301跳转
查看>>
JNI-Java调用C++牛刀小试
查看>>
spring配置datasource三种方式
查看>>
Linux文件查看命令之sort
查看>>
SFTP无法连接,报"Connection closed by server with exitco
查看>>
Web service 客户端 应用
查看>>
使用jQuery EasyUI去除必填验证报错400错误问题原因
查看>>
Centos配置网络yum
查看>>
IV 8 MySQL REPLICATION(SSL)
查看>>
Python购物车练习
查看>>
iptables 规则执行顺序
查看>>