写USB驱动:usb-skeleton.c,插上USB键盘,probe没被调用
发布时间:2011-08-27 17:14:24来源:红联作者:辛昕
我想摸索一下USB驱动怎么写,以后要写特定的设备驱动,暂时先以USB键盘着手研究。
我用系统自带的usb-skeleton.c编译成模块,编译成功,然后加载到开发板上,加载成功。
usb-register的返回值是0.
但是,我插上USB键盘上(后来还试过USB鼠标,U盘)三个东西在系统上好好的都能用。
但是,probe函数却没被调用,我在函数开头,啥都没做,写了句printk,但是,dmesg后我没看到那句话。
我的怀疑是:会不会是系统自带了usb驱动,USB鼠等三个都是标准的设备。
所以,我一插上,就让系统接管了,以至于我自己加载的usb-skeleton.o起不了作用。
网上看到一篇资料,说可以先把这些东西删除了。然则,我lsmod,却发现压根没有这些东西,于是我想可能要自己安装吧。
有篇文章这么说:(这里只摘录了部分)
模块的配置方法
在很多时候,我们的USB设备驱动并不包含在内核中。其实我们只要根据它所需要使用的模块,逐一加载。就可以使它启作用。
首先要确保在内核编译时以模块方式选择了相应支持。这样我们就应该可以在/lib/modules/2.4.XX目录看到相应.o文件。在加载 模块时,我们只需要运行modprobe xxx.o就可以了(modprobe主要加载系统已经通过depmod登记过的模块,insmod一般是针对具体.o文件进行加载)
对应USB设备下面一些模块是关键的。
usbcore.o 要支持usb所需要的最基础模块
usb-uhci.o (已经提过)
usb-ohci.o (已经提过)
可是,我却没有找到系统里有这些东西。
我说的是我开发板上的系统。
root@beagleboard:/myfile/MAN/man-pages-3.32# uname -a
Linux beagleboard 2.6.32 #4 PREEMPT Thu Jan 27 17:08:08 CST 2011 armv7l unknown
我想用虚拟机上UBUNTU里的这几个模块----UBUNTU里有加载这几个模块。
可是无法加载,因为显示invalid module format.
我想,应该是版本对不上号惹的。
UBUNTU的是8.04的UBUNTU,上面的版本号是2.6.24
于是我开始了试图寻找,下载这个2.6.32版本下的这些相关驱动。
但是一直没找着。
敢情是要我再编译一个新系统,再去抽取?
这期间,我翻过了TLDP的HOWTO和一些别的文档,都没找到,甚至关于USB的内容就很少!
另外关于USB这个事,我也百思不得其解,也许我走了这么一大段路,没准还南辕北辙,肯定懂这个做过这个的朋友给点帮助,谢谢。