当前位置: 技术问答>linux和unix
关于usb驱动
来源: 互联网 发布时间:2015-07-06
本文导语: 我自己用d12作了一快板子,通过计算机给d12发送数据来控制板子上的发光管发光。在Windows下,此硬件工作正常。现在我想在Linux下开发此板卡的驱动程序。于是我把usb-skeleton.c改了一下,将VID和PID改成我那块板卡的VI...
我自己用d12作了一快板子,通过计算机给d12发送数据来控制板子上的发光管发光。在Windows下,此硬件工作正常。现在我想在Linux下开发此板卡的驱动程序。于是我把usb-skeleton.c改了一下,将VID和PID改成我那块板卡的VID和PID,当我将此驱动加载后,然后再在usb上插上我的硬件,结果却发现,在/dev/usb/中并没有预期的skel0的文件.还有什么地方要改吗?
|
我觉得你有件事应该确认一下, 用lsmod看看列表里有没有usb-skeleton
有的话,说明模块装载了。
然后再下面的操作,
你加两行这样的代码,在devfs_register后判断
if(dev->devfs == NULL)
printk(KERN_INFO"devfs register failedn");
重新编译后,
echo 8 > /proc/sys/kernel/printk
insmod ./usb-skeleton.o, 插上硬件后
tail -f /var/log/messages 看看有没有这条信息。
我基得我以前做的时候是失败的,因为这个函数需要文件系统的支持
要编译内核,麻烦我就没用他了,自己mknod
有的话,说明模块装载了。
然后再下面的操作,
你加两行这样的代码,在devfs_register后判断
if(dev->devfs == NULL)
printk(KERN_INFO"devfs register failedn");
重新编译后,
echo 8 > /proc/sys/kernel/printk
insmod ./usb-skeleton.o, 插上硬件后
tail -f /var/log/messages 看看有没有这条信息。
我基得我以前做的时候是失败的,因为这个函数需要文件系统的支持
要编译内核,麻烦我就没用他了,自己mknod
|
。。。咳咳。。。,汗颜!!!!
USB小弟也糊里糊涂的,我觉得首先你要看skel_probe有没有被调用,如果被调用了有打印信息的,程序中如此写的。
sprintf(name, "skel%d", dev->minor);
dev->devfs = devfs_register ();
/* let the user know what node this device is now attached to */
info ("USB Skeleton device now attached to USBSkel%d", dev->minor);
如果没有打印“USB Skeleton device now attached to USBSkel XXX”那么是程序根本没跑到这里了。,如果打印了,那说明devfs_register没达到效果。
如果没打印,首先要看USB host的驱动有没有加载,这个要看你的控制器的类型了,是UHCI还是OHCI,不管UHCI还是OHCI,反正有现成的,程序倒是不用自己写的。
USB小弟也糊里糊涂的,我觉得首先你要看skel_probe有没有被调用,如果被调用了有打印信息的,程序中如此写的。
sprintf(name, "skel%d", dev->minor);
dev->devfs = devfs_register ();
/* let the user know what node this device is now attached to */
info ("USB Skeleton device now attached to USBSkel%d", dev->minor);
如果没有打印“USB Skeleton device now attached to USBSkel XXX”那么是程序根本没跑到这里了。,如果打印了,那说明devfs_register没达到效果。
如果没打印,首先要看USB host的驱动有没有加载,这个要看你的控制器的类型了,是UHCI还是OHCI,不管UHCI还是OHCI,反正有现成的,程序倒是不用自己写的。
|
我也在正在做USB驱动开发,应该是这样的,你的先装载编译好的usb-skeleton.o,然后用这个命令:mknod /dev/usb-skeleton0 c 180 200(200为usb-skeleton.c中定义的USB_SKEL_MINOR_BASE的值)装载设备文件,这时你应该就可以看到了。我就是这样做的