日期:2014-05-16  浏览次数:20554 次

USB驱动百分紧急请教高手!!
请教大家一个问题--我的USB驱动程序注册成功之后,probe函数里用dev-> udev   =   usb_get_dev(interface_to_usbdev(interface));找到interface对应的usb_device了,但为什么用usb_control_msg往设备控制端点写数据的时候返回错误-19(该错误信息好像是:-ENODEV),此时印udev->state为0 (0的意思是:USB_STATE_NOTATTACHED)  

请教我的驱动程序应该加些什么?--为什么udev->state为NOTATTACHED?
--我是照Linux   Device   Driver第三版的skeleton写的,2.6内核。




------解决方案--------------------
usb_control_msg 函数允许一个驱动发送和结束 USB 控制信息

函数 usb_control_msg 不能被从中断上下文或者持有自旋锁中被调用. 还有, 这个函数不能被任何其他函数取消, 所以当使用它时要小心; 确认你对驱动的 disconnect 函数了解足够多, 在允许它自己被从内存卸载之前完成等待调用.

------解决方案--------------------
keyi 把代码贴出来帮你调一下
------解决方案--------------------
学习,
------解决方案--------------------
中断有没有呢
驱动注册了,不一定能找到设备,正确的给设备发消息
------解决方案--------------------
probe运行并不等于注册成功,使用lsusb命令,看看能不能正确看到设备,有的时候会有两个设备使用同一个设备号的情况,这时候两个设备的probe都会执行,但是谁最后得到设备,就只有天知道了。
------解决方案--------------------
有一个是端点0是控制端点--听说是所有设备都有的--为什么这里没有找到?
======================================
正因为每个USB设备有一个,而且只有一个,所以在INTERFACE的SETTING里是找不到的(因为不用找嘛)
------解决方案--------------------
学习..
------解决方案--------------------
mark...
找到工作了再看这本书...


大家一起努力学习提高...
------解决方案--------------------
我也不明白,照理说应该可以写才对,而且也是很简单的一个API调用:(
------解决方案--------------------
学习。
我觉得LDD3采用的内核并不是最新的,内核不同部分函数就可能改变,而且代码有些分散,我建议你静下心来理一遍usb内核程序,函数调用关系,usb驱动是比较复杂的,祝你好运!
------解决方案--------------------
mark
------解决方案--------------------
mark too
------解决方案--------------------
最近也在弄驱动 关注!

------解决方案--------------------
mark!!