1、8910芯片USB描述符:设备描述符&配置描述符

前言

  AirCat1系列模块是合宙出品的4G cat1 LTE模块,拥有丰富功能模块以及完善AT指令,用户可以通过AT指令实现所需的功能,也可以插上PC的USB当作网卡使用,也可以使用PPP拨号等等。这些功能都可以用模块的USB设备实现,下面就介绍下AirCat1系列模块强大的USB设备。

  AirCat1模块USB功能默认支持NDIS网卡和ECM网卡,但同时只能支持一个,用户可以根据自己的实际需要自行切换。ecm网卡一般是在linux上面会用到,windows默认不带ecm驱动。除了网卡外,还默认支持三个虚拟串口。如下图所示:

接口名 功能
NDIS RNDIS网卡接口(默认)
ECM ECM网卡接口
modem PPP拨号和发送AT指令
AT 发送AT指令
ap 调试抓log接口

  本系列文章将会按照USB的枚举顺序依次对模块的USB描述符进行简要分析。

一、设备描述符&配置描述符

1.1、设备描述符(18字节)

  设备描述符是USB设备的第一个描述符,每个USB设备都得具有设备描述符,且只能拥有一个。
| 字段 | 长度(位) | 偏移量(位) | 十六进制值 | 说明 |
| ———————- | ———- | ———— | ———- | ——————————– |
| bLength | 8 | 0 | 0x12 | 描述符大小为18字节 |
| bDescriptorType | 8 | 8 | 0x01 | 设备描述符类型 |
| bcdUSB | 16 | 16 | 0x0200 | USB规范版本2.00 |
| bDeviceClass | 8 | 32 | 0x00 | 驱动类型 |
| bDeviceSubClass | 8 | 40 | 0x00 | 驱动子类 |
| bDeviceProtocol | 8 | 48 | 0x00 | 无协议设备基础 |
| bMaxPacketSize0 | 8 | 56 | 0x40 | 端点0的最大数据包大小为64 |
| idVendor | 16 | 64 | 0x1782 | 供应商ID为6018:展讯香港有限公司 |
| idProduct | 16 | 80 | 0x4E00 | 产品ID为19968 |
| bcdDevice | 16 | 96 | 0x0000 | 设备版本号为0.00 |
| iManufacturer | 8 | 112 | 0x01 | 制造商字符串描述符索引为1 |
| iProduct | 8 | 120 | 0x02 | 产品字符串描述符索引为2 |
| iSerialNumber | 8 | 128 | 0x00 | 设备没有描述序列号的字符串描述符 |
| bNumConfigurations | 8 | 136 | 0x01 | 设备有1种可能的配置 |

在这里插入图片描述

1.2、配置描述符(9字节)

  配置描述符定义了设备的配置信息,一个设备可以有多个配置描述符。
  大部分的USB设备只有一个配置描这符,设备存在多个配置描述符时,系统会自动弹出对话框让用户选择。

  配置描述符在USB设备的枚举过程中,需要获取两次:
  第一次只获取配置描这符的基本长度9字节,获取后从wTotalLength字节中解析出配置描述符的总长度,然后再次获取全部的描述符。

  配置描述数据中不仅包括配置描述符本身,也包括其下的接口描述符和端点描述符。

字段 长度(位) 偏移量(位) 十六进制值 说明
bLength 8 0 0x09 描述符大小为9字节
bDescriptorType 8 8 0x02 配置描述符类型
wTotalLength 16 16 0x0090 此配置的数据总长度为144。
这包括返回的所有描述符的组合长度警告:wTotalLength的值不等于实际长度
bNumInterfaces 8 32 0x05 此配置支持5个接口
bConfigurationValue 8 40 0x01 值1应用于选择此配置
iConfiguration 8 48 0x00 设备没有描述此配置的字符串描述符
bmAttributes 8 56 0xE0 配置特征:
位7:保留(设置为一个)1
位6:自供电1
位5:远程唤醒1
bMaxPower 8 64 0xC8 此配置中设备的最大功耗为400 mA
在这里插入图片描述

上次更新 2021-01-28