xxw19840406 发表于 2010-12-31 10:16

USB驱动问题

现在USB驱动碰到了个问题
就是用usb_fill_bulk_urb(...,complete_fun,...)注册了urb完成处理函数

在usb_submit_urb()调用之后正常情况下是会调用前面的complete_fun的,但是现在有时候不会调用,这个是什么原因呢   

困惑中!

xxw19840406 发表于 2010-12-31 11:11

usb_submit_urb()成功返回0了
但是完成处理函数一直没调到呀

urb一直没有被处理???

lelee007 发表于 2011-01-02 14:01

printk吧,跟踪一下,看代码都跑到哪儿去了

xxw19840406 发表于 2011-01-05 15:24

printk吧,跟踪一下,看代码都跑到哪儿去了
lelee007 发表于 2011-01-02 14:01 http://linux.chinaunix.net/bbs/images/common/back.gif


    printk打印了   调到了td_fill(...)了,   这个应该是硬件开始传输了吧
   但是完成处理函数一直不被调用

kamingli 发表于 2011-01-06 09:55

什么芯片? 原来u口的driver工作正常吗? 有没有考虑是硬件的问题,如布线等。 有条件接个分析仪看看usb总线上是否有数据在跑。

xxw19840406 发表于 2011-01-06 10:45

本帖最后由 xxw19840406 于 2011-01-06 10:48 编辑

回复 5# kamingli


    我现在用的开发板是三星的v210,连接的威盛的3G模块(USB转串口)
    原来的U口工作是正常的
    分析仪等工具没有

   我觉得是模块的问题。如果urb传给设备,设备一直没有给响应(NACK或别的),是不是就会有这种现象呀
   谢谢!

kamingli 发表于 2011-01-07 18:02

usb_fill_bulk_urb , 我记得是使用系统默认的timeout时间, 试试换能自己添加timeout的API, 具体的我忘了, 我印象中记得, 即使设备有问题, host在timeout后也会通知是否成功的, 反正有这样的API, 再不行,试试libusb, 当然这还得熟悉一下libusb了。 还有, 你能确保你的3G模块进入了modem状态? 因为目前的3G模块刚开始都是u盘状态的。要不在winxp下装个抓包软件看看, www.perisoft.net/bushound/index.htm

star316 发表于 2011-01-07 21:45

用USB 分析仪抓下LOG 不就知道了,

xxw19840406 发表于 2011-01-10 14:06

回复 7# kamingli


      谢谢耐心的回复
   其实还是模块那边有问题,更新了模块的问题后问题不存在了
   但从您的回复中还是看到自己有好多东西要学,受益匪浅!(以前没搞过USB,所以知识和手段方面都很匮乏)
页: [1]
查看完整版本: USB驱动问题