Skip to main content
 首页 » 编程设计

linux之可以在 USB 中的同一个 URB 中发送和接收数据吗 Linux操作系统

2026年05月17日38xxx_UU

我正在 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,也就是说,您需要更多。