接口描述符&端点描述符 ECM¶
五、ECM网卡¶
以太网控制模型(Ethernet Networking Control Model) 用于在设备和主机之间传输以太网数据包。 在操作系统看来,CDC ECM设备就是一个虚拟以太网卡,包含标准网卡需要的MAC地址和IP地址。 CDC ECM设备通常是一个以太网卡,用于连接LAN或者是WLAN。ECM是标准的,隶属USB协议,当然是usb封装的TCP协议,数据接口则用于在USB总线上交换USB数据包,这些USB数以的包封装了完整的以太网包。 8910平台支持ECM功能,默认处于关闭状态。需要发送AT+SETUSB=2设置USB网卡的工作模式。命令发送完成之后可以断电保持,重启有效。
正常情况下只要将模块接入运行linux系统,电脑就会识别出来一块网卡。windows系统上默认不支持ECM网卡,需要额外安装驱动才能使用。
5.1、ECM接口关联描述符(8字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
72 |
0x08 |
描述符 大小为8字节 |
bDescr iptorType |
8 |
80 |
0x0B |
接口类型 :INTERFACE_ ASSOCIATION |
bFirst Interface |
8 |
88 |
0x00 |
接口 关联的第一 个接口号是0 |
bInter faceCount |
8 |
96 |
0x02 |
接 口关联的连 续接口数为2 |
bFunc tionClass |
8 |
104 |
0x02 |
接 口属于通信 设备/接口类 |
bFunctio nSubClass |
8 |
112 |
0x06 |
接口属于以 太网网络控 制模型子类 |
bFunctio nProtocol |
8 |
120 |
0x00 |
接口使用 不需要特定 于类的协议 |
** iFunction** |
8 |
128 |
0x03 |
接 口字符串描 述符索引为3 |
5.2、控制接口¶
5.2.1、ECM控制接口描述符(9字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
136 |
0x09 |
描述符 大小为9字节 |
bDescr iptorType |
8 |
144 |
0x04 |
接口 描述符类型 |
bInterf aceNumber |
8 |
152 |
0x00 |
此接口号 的索引为0。 |
bAlterna teSetting |
8 |
160 |
0x00 |
用于选择此 接口的备用 设置的值为0 |
bNum Endpoints |
8 |
168 |
0x01 |
此接 口使用的端 点数为1(不 包括端点0) |
bInter faceClass |
8 |
176 |
0x02 |
接 口实现通信 设备/接口类 |
bInterfac eSubClass |
8 |
184 |
0x06 |
接口实现以 太网组网控 制模型子类 |
bInterfac eProtocol |
8 |
192 |
0x00 |
接口使用 不需要特定 于类的协议 |
i Interface |
8 |
200 |
0x05 |
接 口字符串描 述符索引为5 |
5.2.2、ECM CDC Header功能描述符(5字节)¶
Header功能描述符表示功能描述符的开始,其他紧跟的内容就是此设备的功能描述符的内容。bcdCDC表示的是CDC的版本。
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
208 |
0x05 |
描述符 的大小,以 字节为单位 |
bDescr iptorType |
8 |
216 |
0x24 |
描述符类型 |
bDescript orSubType |
8 |
224 |
0x00 |
描 述符子类型 |
bcdCDC |
16 |
232 |
0x0110 |
USB通信 类定义通信 规范1.10版 |
5.2.3、ECM CDC Union功能描述符(5字节)¶
Union描述符就是用来告诉主机端,哪些接口是联合在一起的,对应着一个功能,这个功能需要主机装载对应的驱动来实现,因此,功能与驱动是一对一的关系。这里bControlInterface值为0,则表示接口0为控制接口,bSubBoardinateInterface0值为1,表示接口1为控制接口0的下级接口,即数据接口。在CDC标准中,控制接口是必须的,而数据接口是可选的,因此,数据接口为控制接口的附属。
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
248 |
0x05 |
描述符 的大小,以 字节为单位 |
bDescr iptorType |
8 |
256 |
0x24 |
描述符类型 |
bDescript orSubType |
8 |
264 |
0x06 |
描 述符子类型 |
bControl Interface |
8 |
272 |
0x00 |
通信 或数据类接 口的接口号 |
bS ubordinateI nterface0 |
8 |
280 |
0x01 |
下级接 口的接口号 |
5.2.4、ECM CDC ethernet功能描述符(13字节)¶
字段 |
长 度 ( 位 ) |
偏移 量( 位) |
十 六 进 制 值 |
说明 |
---|---|---|---|---|
bLength |
8 |
288 |
0 x0D |
描述符的大小,以字节为单位 |
bDescr iptorType |
8 |
296 |
0 x24 |
描述符类型:CS_INTERFACE |
bDescript orSubType |
8 |
304 |
0 x0F |
功能描述符子类型 |
iM ACAddress |
8 |
312 |
0 x06 |
字符串描述符索引 |
** bmEthernetS tatistics** |
32 |
296 |
0 x00 060 F24 |
Bit 0: XMIT_OK 0Bit 1: RVC_OK 0Bit 2: XMIT_ERROR 0Bit 3: RCV_ERROR 0Bit 4: RCV_NO_BUFFER 0 Bit 5: DIRECTED_BYTES_XMIT 0 Bit 6: DIRECTED_FRAMES_XMIT 0 Bit 7: MULTICAST_BYTES_XMIT 0 Bit 8: MULTICAST_FRAMES_XMIT 0 Bit 9: BROADCAST_BYTES_XMIT 0 |
wMaxSe gmentSize |
16 |
352 |
0x0 5EA |
以太网设备能够支持的最大段大小 |
wNumber MCFilters |
16 |
368 |
0x0 000 |
多播筛选器位图 |
bNumberPow erFilters* |
8 |
384 |
0 x00 |
包含可用于唤醒主机的模式筛选器数 |
5.2.5、ECM通知端点描述符(7字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
392 |
0x07 |
描述符 大小为7字节 |
bDescr iptorType |
8 |
400 |
0x05 |
端点 描述符类型 |
bEndpoi ntAddress |
8 |
408 |
0x81 |
这 是端点号为 1的输入端点 |
bmA ttributes |
8 |
416 |
0x03 |
类型-传输 :中断低功 耗:无Pkt大 小调整:无 |
wMaxP acketSize |
16 |
424 |
0x0010 |
此 终结点的最 大数据包大 小为16字节 。如果是高 速,则每帧 增加0个事务 |
** bInterval** |
8 |
440 |
0x20 |
轮询间隔值 为每32帧。 高速未定义 |
5.3、数据接口¶
5.3.1、ECM数据接口描述符alt0(9字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
448 |
0x09 |
描述符 大小为9字节 |
bDescr iptorType |
8 |
456 |
0x04 |
接口 描述符类型 |
bAlterna teSetting |
8 |
464 |
0x01 |
此 接口号为1。 |
bAlterna teSetting |
8 |
472 |
0x00 |
用于选择此 接口的备用 设置的值为0 |
bNum Endpoints |
8 |
480 |
0x00 |
此接 口使用的端 点数为0(不 包括端点0) |
bInter faceClass |
8 |
488 |
0x0A |
接口实现 数据接口类 |
bInterfac eProtocol |
8 |
504 |
0x00 |
接口使用 不需要特定 于类的协议 |
bInterfac eSubClass |
8 |
496 |
0x00 |
子类编码为0 |
i Interface |
8 |
512 |
0x00 |
接 口字符串描 述符索引为0 |
5.3.2、ECM数据接口描述符alt1(9字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
520 |
0x09 |
描述符 大小为9字节 |
bDescr iptorType |
8 |
528 |
0x04 |
接口 描述符类型 |
bAlterna teSetting |
8 |
536 |
0x01 |
此 接口号为1。 |
bAlterna teSetting |
8 |
544 |
0x01 |
用于选择此 接口的备用 设置的值为1 |
bNum Endpoints |
8 |
552 |
0x02 |
此接 口使用的端 点数为2(不 包括端点0) |
bInter faceClass |
8 |
560 |
0x0A |
接口实现 数据接口类 |
bInterfac eProtocol |
8 |
576 |
0x00 |
接口使用 不需要特定 于类的协议 |
bInterfac eSubClass |
8 |
568 |
0x00 |
子类编码为0 |
i Interface |
8 |
584 |
0x04 |
接 口字符串描 述符索引为4 |
5.3.3、ECM数据输入端点描述符(7字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
592 |
0x07 |
描述符 大小为7字节 |
bDescr iptorType |
8 |
600 |
0x05 |
端点 描述符类型 |
bEndpoi ntAddress |
8 |
608 |
0x82 |
这是端点号 为2的IN端点 |
bmA ttributes |
8 |
616 |
0x02 |
类型-传输 :批量包大 小调整:否 |
wMaxP acketSize |
16 |
624 |
0x0200 |
此 终结点的最 大数据包大 小为512字节 。如果是高 速,则每帧 增加0个事务 |
** bInterval** |
8 |
640 |
0x00 |
轮询间隔 值为每0帧。 高速未定义 |
5.3.4、ECM数据输出端点描述符(7字节)¶
字段 |
长度(位) |
偏 移量(位) |
十六进制值 |
说明 |
---|---|---|---|---|
bLength |
8 |
648 |
0x07 |
描述符 大小为7字节 |
bDescr iptorType |
8 |
656 |
0x05 |
端点 描述符类型 |
bEndpoi ntAddress |
8 |
664 |
0x01 |
这 是端点号为 1的输出端点 |
bmA ttributes |
8 |
672 |
0x02 |
类型-传输 :批量包大 小调整:否 |
wMaxP acketSize |
16 |
680 |
0x0200 |
此 终结点的最 大数据包大 小为512字节 。如果是高 速,则每帧 增加0个事务 |
** bInterval** |
8 |
696 |
0x00 |
轮询间隔 值为每0帧。 |