USB 设备第一次连接到主机上时 , 要接收主机的枚举( Enumeration)和配置( Configuration), 目的就是让主机知道该设备具有什么功能、是哪一类的USB设备、需要占用多少USB的资源、使用了哪些传输方式以及传输的数据量多大等等。
(1)、描述符
描述符(Descriptor), 是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中, 用于描述一个USB设备的所有属性。
描述符类型:
设备描述符(Device Descriptor ) ;
配置描述符( Configuration Descriptor) ;
接口描述符( Interface Descriptor ) ;
端点描述符( Endpoint Descriptor ) ;
字符串描述符( String Descriptor , 可选)。
(2)、描述符之间的关系
设备描述符是最高级的描述符, 而端点描述符是最低级的描述符, 如下图所示。每一个设备只有一个设备描述符, 但设备描述符可以包含多个配置描述符; 而一个配置描述符又可包含多个接口描 述符; 一个接口使用了几个端点, 就有几个端点描述符。字符串描述符是可选的。
每一个描述符都是一系列的字段(Field, 为了与组成包的域相区别, 这里叫做字段)所组成的, 每个字段都是一连串二进制数。其中设备描述符的bNumConfigurations 字段可设定配置描述符的个数; 配置描述符的bNumInterface字段用于设定接口描述符的个数; 而接口描述符的 bNumEndpoints 则表示了该接口所用到的端点数量, 也就是端点描述符的数量。
如有错误,请及时提出。万分感谢!