USB Host的意思是该设备可以作为USB主机连接USB外围设备,如连接U盘、键盘、鼠标等。
与之对等的是USB Device(有些地方翻译成target),意思是该设备可以以U盘的身份连接USB主机。
对于手机来说,同时支持Host和Device模式的,称之为OTG
USB linux
设备通常有一个或多个配置;
配置通常有一个或多个接口;
接口通常有一个或多个设置;
接口有零或多个端点。
这样一个设备对应一个设备描述符,支持视频的功能对应一个接口描述符,支持音频功能的对应一个接口描述符。为了支持视频,在下层有多个端口同时工作为提供视频数据传输的支持,所以有多个端点描述符。
USB设备使用各种描述符来说明其设备架构,包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符,他们通常被保存在USB设备的固件程序中。
设备描述符
设备代表一个USB设备,它由一个或多个配置组成。设备描述符用于说明设备的总体信息,并指明其所含的配置的个数。一个USB设备只能有一个设备描述符。
- structusb_device_descriptor
- {
- __u8bLength;//描述符长度
- __u8bDescriptorType;//描述符类型编号
- __le16bcdUSB;//USB版本号
- __u8bDeviceClass;//USB分配的设备类code
- __u8bDeviceSubClass;//USB分配的子类code
- __u8bDeviceProtocol;//USB分配的协议code
- __u8bMaxPacketSize0;//endpoint0最大包大小
- __le16idVendor;//厂商编号
- __le16idProduct;//产品编号
- __le16bcdDevice;//设备出厂编号
- __u8iManufacturer;//描述厂商字符串的索引
- __u8iProduct;//描述产品字符串的索引
- __u8iSerialNumber;//描述设备序列号字符串的索引
- __u8bNumConfigurations;//可能的配置数量
- }__attribute__((packed));
2、配置描述符
- structusb_config_descriptor
- {
- __u8bLength;//描述符长度
- __u8bDescriptorType;//描述符类型编号
- __le16wTotalLength;//配置所返回的所有数据的大小
- __u8bNumInterfaces;//配置所支持的接口数
- __u8bConfigurationValue;//Set_Configuration命令需要的参数值
- __u8iConfiguration;//描述该配置的字符串的索引值
- __u8bmAttributes;//供电模式的选择
- __u8bMaxPower;//设备从总线提取的最大电流
- }__attribute__((packed));