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

时间:2016-09-05 03:37:21

标签: usb linux-device-driver microcontroller device-driver libusb

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

看起来我可以在微控制器上配置其他控制端点(非零端点号),但我没有看到一种方法使libusb发送/接收控制传输到这些端点。 (libusb_control_transfer不需要端点号,但libusb_bulk_transferlibusb_interrupt_transfer会这样做。)

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

1 个答案:

答案 0 :(得分:2)

  

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

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

但如果您的微控制器实际上可以支持非零控制端点,那将会让我感到惊讶 - 并非如此。

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