我正在 linux 内核空间中开发一个 USB 驱动程序,其中我的 USB 接口(interface)作为两个批量端点(IN 和 OUT)。我正在使用一个 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() -----> 在这一点上我得到错误 -16。
以上后续步骤是否正确/可行?
谢谢
请您参考如下方法:
您不能同时对两次传输使用同一个 URB。
为了能够重用 URB,您必须等到它完成(成功或出错)。
要使用全双工传输,您需要两个 URB。
要获得高传输率,您必须流水线化 URB,也就是说,您需要更多。
