USB设备描述符布局
通用串行总线USB以其强大的功能,方便的连接广受用户使用,这些都得益于USB灵活多样的描述符。
USB设备通过配置描述符,接口描述符,端点描述符等描述符实现设备功能。
USB设备灵活多变的角色转换是通过USB的配置描述符来实现的,但一个USB设备有多个配置描述符时,就表明了这个USB设备支持多角的转换,不过一次只能有一个USB配置描述符有效。当设备在接入PC时,主机端发现设备存在多配置功能时,会弹窗让用户选择一种工作状态。
一个USB配置描述符可以有多个USB接口描述符。在USB规范定义中,一个接口代表着该USB设备当前支持的一种功能,其实现是通过其接口描述符下的端点描述符中的端点来完成。通常对设备功能的操作,就是主机通过端点描述符进行数据交互。
在一般的情况下,这种设备功能的函数接口与端点操作一一对应,但是USB也定义了一种复杂设备,这种复杂设备是需要多个接口联合来实现某一种设备功能,所以将多个接口联合接来的描述又叫接口关联描述符。如UVC摄像头设备,UAC音频设备这种复杂设备,其都是通过接口关联描述来整合该USB设备的音视频流功能。
关于UVC,UAC设备,可参考本站USB中文网的相关规范。
简单的USB设备功能
一般一个接口代表着该设备的一个独立功能。
复杂USB设备功能
复杂设备功能是由多接口通过接口关联描述符组合完成USB设备的功能。
在上述设备中,配置0具有两个接口: Interface 0 和 Interface 1。 接口0具有三个替代设置(alternate setting 接口)。 在任何给定时间,只有一个备用设置处于活动状态。 请注意,替代设置0不使用终结点,而备用设置1和2使用终结点1。 通常,视频摄像机使用 同步端点 进行流式处理。 对于这种类型的端点,在使用端点时,会在总线上保留带宽。 当照相机未流式传输视频时,客户端驱动程序可以选择备用设置0来节省带宽。 当网络摄像机是流式传输视频时,客户端驱动程序可以切换为备用设置1或备用设置2,这将提供更高的质量级别并消耗增加的总线带宽。 接口1具有两个替代设置。 类似于接口0,备用设置0不使用终结点。 替换设置1定义为使用终结点1。
端点不能在配置中的两个接口之间共享。 设备使用端点地址来确定数据传输或端点操作的目标端点,如管道重置。 所有这些操作都由主机启动。