多个控制端点(非EP0)的用途是什么?

时间:2014-03-14 23:20:00

标签: usb

我在OSDev wiki上了解到,端点0是默认控制管道,允许双向控制传输。这用于设备配置,例如检索设备描述符。 USB 2.0 spec在第5.5节控制转移中解释了这一点。

还有可用的端点数量有限(2个用于低速,15个用于全速和高速设备)。在USB 2.0规范的某处,我已经读过必须有至少一个控制管道。这意味着可能存在多个控制端点,但它的用途是什么?您是否知道将EP配置为控制管道的任何特定USB设备或类?


后来,我在规范10.1.2 控制机制中找到了这个:

  

特定的USB设备可能允许使用其他消息管道   传输特定于设备的控制信息。这些管道使用   与默认管道相同的通信协议,但信息   传输特定于USB设备,并未标准化   USB规范。

如果我理解正确,这意味着非EP0不能用于配置设备(例如,GET_DESCRIPTOR等标准请求)。但是设置/数据/状态阶段似乎仍然可用(" [..]使用相同的通信协议[...]")。它是否正确?或者是否禁止非EP0使用标准/类别请求?

背景:在QEMU中处理模拟USB设备时,出现了用于调试目的的USB监视器的需求。在检查QEMU核心USB代码期间,我注意到它只处理了EP0的控制命令。其他端点将被视为数据。有些虚拟设备(host-libusb)总是拒绝那些其他端点的控制传输。因此,问题是这是否是正确的行为(如果有效,是否存在真正实现此功能的设备)。

1 个答案:

答案 0 :(得分:0)

据我所知,非EP0控制端点没有用处。我开发了几种在端点0上使用自定义控制传输的产品,作为发送特定于设备的请求的主要方式,我没有遇到任何基本问题。

如果您确实制作了非EP0控制端点,我认为您的理解是正确的;您将无法将其用于标准请求,但您可以将其用于自定义请求,并且事务序列与EP0上的相同。