我正在linux内核空间开发一个USB驱动程序,在那里我的USB接口作为两个大容量端点(输入和输出),我使用一个URB来发送和接收数据。我是否可以使用相同的usb alloc urb()来发送和接收数据。
我正在使用以下步骤使用urb发送和接收数据
usb alloc_urb()-->只创建了一个
usb_fill_bulk_urb()-->使用usb_sndbulkpipe
usb_sumbit_urb()--->sumbit成功
usb-fill-bulk-urb()-->使用usb-rcvbulkpipe
usb_submit_urb()--->在这一点上,我得到了错误-16。
上述步骤是否正确/可行?
谢谢你
最佳答案
不能同时使用同一个URB进行两次传输。
要重用一个URB,您必须等到它完成(成功或出现错误)。
要使用全双工传输,您需要两个urb。
为了获得高的传输率,你必须对URBs进行管道传输,也就是说,你需要更多的URBs。
关于linux - 可以在USB的同一URB中发送和接收数据吗? LINUX,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20114983/