当前位置:  技术问答>linux和unix

usb 驱动读数据问题 (100分) 请有usb驱动经验的高手指点!

    来源: 互联网  发布时间:2016-05-05

    本文导语:  我根据内核中的:usb-skeleton.c 改写了一个驱动,现在写数据没有问题,但就是读不到数据(没修改前读数据时,提示错误urb->status=-110,修改也没成功interval也没用),其中写数据部分没有改,读数据不成功才修改成...

我根据内核中的:usb-skeleton.c 改写了一个驱动,现在写数据没有问题,但就是读不到数据(没修改前读数据时,提示错误urb->status=-110,修改也没成功interval也没用),其中写数据部分没有改,读数据不成功才修改成如下:
 static void my_read_interrupt_callback(struct urb *urb)
{
    char *tmpDbg;   
    struct usb_skel *dev;   
    dbg("Enter my_read_interrupt_callback()");
    dev = (struct usb_skel *)urb->context;
    tmpDbg= (char*)(urb->transfer_buffer);    
    /* sync/async unlink faults aren't errors */
   if ( urb->status &&
        !(urb->status == -ENOENT || urb->status == -ECONNRESET || urb->status == -ESHUTDOWN)
    ) {
        dbg("%s - nonzero read interrupt status received: %d", __FUNCTION__, urb->status);
    }

    else {   dbg("The urb->status is %d",urb->status);  }
    dbg( "device buffer(callback): %X  %X ",tmpDbg[0],tmpDbg[1]);
}

static ssize_t skel_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
{
struct usb_skel *dev;
int retval;
size_t bytes_read = min(count, (size_t)MAX_TRANSFER);
struct urb *urb = NULL;

dev = (struct usb_skel *)file->private_data;

mutex_lock(&dev->io_mutex);
if (!dev->interface) {
retval = -ENODEV;
goto exit;
}
        urb = usb_alloc_urb(0, GFP_KERNEL);
if (!urb) {
retval = -ENOMEM;
goto exit;
}
        usb_fill_int_urb(urb,dev->udev,usb_rcvintpipe(dev->udev, dev->bulk_in_endpointAddr),
        dev->bulk_in_buffer,
        bytes_read,
        my_read_interrupt_callback,
        dev,250 ); 
        urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 
        
        retval = usb_submit_urb(urb, GFP_KERNEL);    
        err("The status of usb_submit_urb() is %d",retval);
        
if (!retval) {
if (copy_to_user(buffer, dev->bulk_in_buffer, bytes_read))
retval = -EFAULT;
else
retval = bytes_read;
}

exit:
mutex_unlock(&dev->io_mutex);
return retval;
}
执行时怎么不进入了my_read_interrupt_callback()函数?
并且还是读不到单片机返回的数据?
我单片机是cdc acm 设备

开始没修改读数据时,为什么urb->status=-110?
请大家指教!

|
在windows平台下可以正常通信,说明协议没问题。还是看看是不是代码问题吧。


|
只能up了。。

    
 
 

您可能感兴趣的文章:

  • 有谁能告诉我USB设备驱动和USB gadget驱动究竟有什么不同么?
  • 有两个USB键盘怎么用自己写的USB键盘驱动程序只替换其中一个驱动?
  • usb驱动与umount的问题!读懂USB驱动的大牛过来瞧瞧啊
  • usb驱动中 hcd,pcd,device,gadget驱动有什么区别啊?
  • USB驱动程序开发中,如何读取USB设备数据??
  • linux usb驱动中的usb0端口接收数据问题
  • 关于Linux 2.6平台下,自定义的USB HID设备是系统提供驱动程序还是需要自己完成驱动程序?
  • linux USB从口设备驱动问题
  • Linux下开发USB硬盘驱动
  • linux上的USB从设备驱动!
  • 关于USB驱动开发
  • USB 是根据什么来联系驱动程序的?
  • 求基于arm的usb驱动开发的书籍
  • 有没有linux下USB作为从设备的驱动程序源码
  • 求助:Linux下USB驱动的问题
  • usb 驱动开发
  • 毕业设计,急问关于usb驱动的问题!在线等待
  • Linux USB驱动使用问题
  • 移植USB驱动的小问题
  • linux设备驱动程序 usb-skeleton这个程序,能不能用具体的usb设备测试它的读写功能啊??
  • usb-skeleton.c怎么编译并运行,希望大家指点一下 ^_^
  • 请高手指点:怎样在Linux里访问格式化成fat32的移动硬盘,通过USB接口?
  • 真心需要各位前辈指点,谢谢 有关LINUX USB驱动程序编写的一个问题
  • 虚拟串口怎么读数据? 请有 串口 或者 usb 驱动经验的高手指点
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • usb接口与usb transceiver的问题
  • 提问:arm9上对usb设备usb四根线数据的截取
  • USB同一个端口,USB协议不同对应不同的总线
  • linux主机检测不到开发板(USB-USB连接)
  • usb键盘和usb鼠标对应的设备文件是哪两个?
  • [求助]关于usb-serial---------usb转串口没有设备
  • 挂载USB后,打开USB时找不到文件,都是文件夹,求解!
  • usb.c:usb 2(vend...) is not claimed by any active driver???
  • 安装usb-modeswitch时提示 找不到usb.h
  • 请教usb host和usb slave的区别
  • 请问如何在USB上安装Linux,并通过USB引导
  • (cdc-acm.c)usb转串口驱动中usb读数据问题:usb->status=-2
  • 对于linux下的usb蓝牙适配器驱动hci_usb.c中的一些宏(如HCI_RESET)是什么意思?
  • 如何禁用USB鼠标和键盘,但是USB存储设备还可以使用??
  • 任桥伟《我是USB》usb_parse_confiuratiion中一小段代码的疑问
  • 嵌入式linux用usb接3G手机模块 以及usb虚拟串口的测试问题
  • USB自动复位
  • usb闪存启动盘制作工具 Flashboot
  • Linux2005下怎样使用USB移动U盘?
  • usb_storage模块卸载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3