usb_bulk_msg传输失败的问题
大家好。
我的问题是这样的:
我将板子的端口设置设置成如下情况:
pipe 0 : bulk endpoint 2 , out , maxpacketsize 0x200
我在驱动程序中,我的部分代码如下:
其中,BulkWriteData是我自己设计的结构体,pipeNum的值为2。
在这种情况下,我写应用程序向板子发送数据,用的是ioctl函数。每次retval的返回值-108,并且用lsusb命令会发现usb hub 2.0不见了。实在疑惑不解,请高手赐教。
同时,我改变pipeNum的值,则会返回-22错误,这说明pipeNum为2应该是正确的吧?根据板子的设置。
诚请大家帮忙,看看问题出在哪里。
我的问题是这样的:
我将板子的端口设置设置成如下情况:
pipe 0 : bulk endpoint 2 , out , maxpacketsize 0x200
我在驱动程序中,我的部分代码如下:
BulkWriteData *bwd = (BulkWriteData *)arg;
int retval;
int *actual_length = (int *)kmalloc(sizeof(int));
struct usb_ezusb *dev = (struct usb_ezusb *)filep->private_data;
printk(KERN_INFO "Begin to send bulk msg !\n");
retval = usb_bulk_msg(dev->udev,
usb_sndbulkpipe(dev->udev,bwd->pipeNum),
bwd->data,
bwd->dataLength,
actual_length,
0
);
其中,BulkWriteData是我自己设计的结构体,pipeNum的值为2。
在这种情况下,我写应用程序向板子发送数据,用的是ioctl函数。每次retval的返回值-108,并且用lsusb命令会发现usb hub 2.0不见了。实在疑惑不解,请高手赐教。
同时,我改变pipeNum的值,则会返回-22错误,这说明pipeNum为2应该是正确的吧?根据板子的设置。
诚请大家帮忙,看看问题出在哪里。
...全文
相关推荐
微软RNDIS协议
#### 五、RNDIS到USB的映射RNDIS协议通过USB总线实现网络功能,需要考虑与USB标准的兼容性问题。
STM32H7实现PCAN-USB Pro设备端驱动:USB枚举、批量传输与CAN桥接实战
USB设备端驱动开发常让工程师困惑,尤其当需要复刻PCAN-USB Pro这类商业CAN分析仪时,涉及USB描述符、端点调度、设备枚举和CAN数据流转等多层技术。STM32H7凭借Cortex-M7高主频、内置USB OTG HS与双FDCAN控制器,成为实现高速USB-CAN桥接的理想平台。理解USB枚举机制、批量传输原理和端点FIFO配置,是让设备被主机正确识别的关键。通过HAL库与中间件搭建固件框架,实现CAN报文与USB数据的双向打包转发,并优化中断优先级、DMA与Cache一致性,可稳定实现高速数
winform 检测USB设备的拔插
if (m.Msg == WM_DEVICECHANGE) { // 处理设备变化 switch (m.WParam.ToInt32()) { case DBT_DEVICEARRIVAL: // 设备插入
USBHost_driver-levelup
USBHost API使用:Linux提供了丰富的USBHost API供开发者使用,如`usb_get_device_list()`, `usb_claim_interface()`, `usb_bulk_msg
libusb 源码(win32 & linux USB开发)
驱动开发向来是内核开发中工作量最多的一块,随着USB设备的普及,大量的USB设备的驱动开发也成为驱动开发者手头上做的最多的事情。本文主要介绍Linux平台下基于libusb的驱动开发,希望能够给从事L


