如何在非零端点(libusb)上发送USB控制事务



我正在编写代码以了解飞思卡尔Kinetis微控制器上的USB外设。我已经成功地通过了Linux主机上的枚举,并且我可以发送&在EP0上使用供应商自定义代码接收数据包,与libusb测试程序交互。

看起来我可以在微控制器上配置额外的控制端点(非零端点编号),但我看不到让libusb发送/接收控制传输到这些端点的方法。(libusb_control_transfer不需要端点编号,但libusb_bulk_transferlibusb_interrupt_transfer需要)

非零控制端点是否如此不常见或不必要,以至于不值得为它们操心?有没有办法让libusb对非零端点执行控制事务?

有没有办法让libusb执行非零端点的控制事务?

您可以尝试修改异步I/O API的libusb_transfer结构中的endpoint字段。

但是,如果您的微控制器实际上可以支持非零控制端点(s),那将使我感到惊讶-没有那么多。

在实践中,您宁愿使用中断或批量端点。两者都有更少的开销-允许更高的吞吐量批量传输(例如,参见usb2.0 SPEC表5-2与表5-9)。

最新更新