当前位置: 技术问答>linux和unix
什么HID设备加载的总是usbhid?(我认为是有难度的问题)
来源: 互联网 发布时间:2016-07-29
本文导语: 本帖最后由 barater 于 2010-01-12 08:25:23 编辑 我正在制作一个HID设备的驱动程序。 但是很无奈,写完的驱动没有执行 XXX_probe()函数。 情况: 1、模块加载时,能够执行初始化 XXX_init() 2、已经添加了设备ID,确定ID结构...
但是很无奈,写完的驱动没有执行 XXX_probe()函数。
情况:
1、模块加载时,能够执行初始化 XXX_init()
2、已经添加了设备ID,确定ID结构体中的元素“厂商ID”、“产品ID”等没有配置错误。确定是HID设备,设备信息很全面。
3、已经执行了depmod,在modules.dep,modules.alies等文件追加了关联关系,使用modprobe XXX也可以加载模块。
4、程序绝大部分是参照各种资料、源代码,linux自带的鼠标键盘驱动的源代码写的。
困难是:
1、当我在没有其他HID设备的情况下(USBHID模块没有加载),插入这个XXX设备时,被加载的模块是USBHID,不是我写的模块
2、即便我手动加载XXX模块,XXX设备插入的时候,XXX_probe()函数没有被执行。
(我理解应该这个函数被执行的,我在XXX_probe()最前面加入了printk,没有在LOG中显示,init()函数前我也加了,就能够在log中显示,printk本身没问题)
我想问:
1、如何能实现,XXX设备插入USB的时候,自动加载XXX驱动模块。
2、如果自己写驱动模块困难的话,是否可以利用USBHID这个HID内核,来编写程序(不是驱动模块)使用这个HID设备。
(这个XXX设备是使用中断方式通讯的HID设备,而且是一个输出输入都有的设备,不会主动发送数据,需要有主机主动向设个XXX设备发起通讯请求才会进行通讯)。
我自己刚开始学习linux不久,迫于压力,需要急需解决,两个星期了,求求各位大哥帮帮忙,有想法的都说说,我先谢过了~~~
补充:
usbhid这个hid内核模块中支持的设备ID号的厂商ID和设备ID都是ANY_ID,ANY_ID
。
那我的那个XXX设备也是靠厂商ID和设备ID来识别的,岂不是都让usbhid抢去了设备控制权?
|
这个需要你对platform driver和device的编程一些了解,http://blog.csdn.net/unbutun/archive/2009/02/24/3933278.aspx你可以看看这个
第一个问题 可能是 你的硬件信息并没有注册到总线上,所以当你插入到usb时候,他更本无法找到你的设备,所以不能启动你的驱动。
第一个问题 可能是 你的硬件信息并没有注册到总线上,所以当你插入到usb时候,他更本无法找到你的设备,所以不能启动你的驱动。
|
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。