免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2501 | 回复: 8
打印 上一主题 下一主题

如何动态加载非系统自带usb驱动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-25 10:42 |只看该作者 |倒序浏览
本帖最后由 funmain 于 2012-07-25 10:45 编辑

写了个usb触摸屏驱动,想在ubuntu下动态加载本驱动。

,但是加载后,当插上usb触摸屏设备时,去发现系统使用的驱动

是系统自带的,而不是自己insmod的驱动,该怎么修改呢。

如何让系统就特定设备加载自己的驱动,而不是加载系统自带的驱动?
要求:不重新编译内核

希望高手指点下,谢谢!!!

论坛徽章:
0
2 [报告]
发表于 2012-07-25 14:57 |只看该作者
记得USB设备有个ID,当插入USB设备后,会读取这个ID去比对USB驱动支持的设备ID,找不到就不加载这个驱动。可以尝试修改原USB驱动支持的设备ID。再将ID加入到新的驱动。lsusb命令能查看设备ID。

论坛徽章:
0
3 [报告]
发表于 2012-07-26 19:25 |只看该作者
lol
谢谢你的回答,我去尝试尝试!

论坛徽章:
0
4 [报告]
发表于 2012-07-26 19:38 |只看该作者
大哥,请问怎么修改原usb驱动所支持的设备来去除那个设备ID值呢?,不能编译内核,该怎么配置哪儿呢???

论坛徽章:
0
5 [报告]
发表于 2012-07-27 11:02 |只看该作者
本帖最后由 jzwxh77 于 2012-07-27 11:06 编辑

首先需要你知道原驱动的名称,lsmod可以列出所有已经加载的模块名称。再使用rmmod移除原驱动。在新驱动的查找USB_INTERFACE_INFO宏(它用于加入驱动常用设备的信息)或查找到unusal_devs.h文件(它用于添加支持的特殊设备信息) 添加ID。最后编译新的驱动,使用insmod加载新驱动,并使用USB设备测试。
有空可以看看《Linux那些事儿系列》,这些内容书上都有说明。

论坛徽章:
0
6 [报告]
发表于 2012-07-27 13:41 |只看该作者
谢谢大侠指点

论坛徽章:
0
7 [报告]
发表于 2012-07-31 11:26 |只看该作者
大侠,不对哦。按照你的方法有两个问题
1. 插上我的特点设备后,ubuntu11.10系统加载的是usb鼠标驱动,如果去除了后,那鼠标驱动就不能运行了。
2. unusal_devs.h文件在系统里面没有这个文件,只有在内核源码中才有。而我不能编译内核

论坛徽章:
0
8 [报告]
发表于 2012-08-01 13:55 |只看该作者
你特点的设备ID如果同usb鼠标ID相同就比较麻烦了。如果不同,可以在usb鼠标驱动代码删除的你特点的设备的USB ID,编译成模块文件。先使用rmmod 移除自动加载的usb鼠标驱动,再使用insmod 加载重新编译的USB鼠标驱动。
为什么你不能编译内核?有时候那是必要的。

论坛徽章:
0
9 [报告]
发表于 2012-08-16 17:54 |只看该作者
什么叫惊喜,让我也来好好的瞧一下这
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP