USB描述符详解
1、USB协议本身很复杂,但方便在提供了统一的接口方式,使得驱动程序在使用设备的时候,工作简化到了类似操作串行接口。
2、USB设备可以看作提供了多个串口的设备,依据USB的规范,我们将每个串口称作端点(Endpoint),要和这个端点通信,我们就要打开到这个端点的连接,这个连接就是管道(Pipe)。
3、打开端点之后,就可以像串口一样进行数据传输了。USB有4种不同类型的传输方式:控制传输(Control Transfer),批量传输(Bulk Transfer),中断传输(Interrupt Transfer)和实时传输(IsochTransfer)。
4、由于一个设备可能要适应多种情况,端点的设置会有多套,以备使用。端点设置称为接口(Interface)。USB设备展现给我们能够找到的东西就是这些Interface,我们选择要用的Interface,就可以找到Endpoint,再打开Endpoint,就可以传输数据了。所以,在驱动程序开始的时候,需要记录下这些Interface。
5、例如:OV511+的端点0是控制端点,用来设置参数以及起停设备;端点1是实时传输端点,用来传输视频。端点1有8套不同的设置,主要区别就在于一次传输的数据帧的大小,所以在USBDeviceAttach的时候,要记录这些设置到驱动程序中,后面才能够选用。
二、描述符介绍
1、设备描述符:一个设备只有一个设备描述符
typedef struct _USB_DEVICE_DESCRIPTOR_
{
}USB_DEVICE_DESCRIPTOR;
bLength
bDescriptorType
bcdUSB
bDeviceClass
bDeviceSubClass
bDeviceProtocol
bMaxPacketSize0
idVendor
idProduct
bcdDevice
iManufacturer
iProduct
iSerialNumber
bNumConfigurations
2、配置描述符:配置描述符定义了设备的配置信息,一个设备可以有多个配置描述符
typedef struct _USB_CONFIGURATION_DESCRIPTOR_
{
}USB_CONFIGURATION_DESCRIPTOR;
bLength
bDescriptorType
wTotalLength
bNumInterfaces
bConfigurationValue
iConfiguration
bmAttributes
MaxPower
3、接口描述符:接口描述符说明了接口所提供的配置,一个配置所拥有的接口数量通过配置描述符的bNumInterfaces决定
typedef struct _USB_INTERFACE_DESCRIPTOR_
{
}USB_INTERFACE_DESCRIPTOR;
bLength
bDescriptorType
bInterfaceNumber: 该接口的编号.
bAlternateSetting
bNumEndpoint
bInterfaceClass
bInterfaceSunClass
bInterfaceProtocol
iInterface
USB描述 相关文章:
- USB的描述符及各种描述符之间的依赖关系(12-15)
- USB入门系列之七 —USB的描述符及各种描述符之间的依赖关系(12-14)
- USB开发基础:USB命令(请求)和USB描述符(12-13)
- USB 描述符及其间的关系(12-12)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)