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