可以在USB中以相同的URB发送和接收数据吗? LINUX

时间:2013-11-21 07:32:31

标签: linux linux-kernel linux-device-driver embedded-linux usb-drive

我在linux内核空间开发USB驱动程序我的usb接口是两个批量端点(IN和OUT)。我使用ONE URB来发送和接收数据。我可以使用相同的usb_alloc_urb()来发送和接收数据。

我使用以下步骤使用urb发送和接收数据

usb_alloc_urb()--->只创造了一个

usb_fill_bulk_urb()--->使用usb_sndbulkpipe

usb_sumbit_urb()---->总结成功

usb_fill_bulk_urb()--->使用usb_rcvbulkpipe

usb_submit_urb()----->在这一点上,我得到ERROR -16。

以上步骤是否正确/可能?

谢谢

1 个答案:

答案 0 :(得分:1)

您不能同时使用相同的URB进行两次转移

为了能够重用URB,您必须等到它完成(成功或出错)。

要使用全双工传输,您需要两个URB。

要获得较高的传输速率,您必须对URB进行流水线操作,即您需要更多。