代码:
#include <linux/atomic.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/usb.h>
#include <linux/videodev2.h>
#include <linux/vmalloc.h>
#include <linux/wait.h>
#include <linux/version.h>
#include <asm/unaligned.h>#include <media/v4l2-common.h>static struct usb_device_id myuvc_ids[] = {/* Generic USB Video Class */{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) },/*vdieocontral interface*/{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 2, 0) },{}
};
static int myuvc_probe(struct usb_interface *intf,const struct usb_device_id *id)
{static int count;printk("connect %d\n",count++);return 0;
};
static void myuvc_disconnect(struct usb_interface *intf)
{static int count;printk("disconnect %d\n",count++);
};struct usb_driver myuvc_driver = {.name = "my_uvcvideo",.probe = myuvc_probe,.disconnect = myuvc_disconnect,//.suspend = uvc_suspend,//.resume = uvc_resume,//.reset_resume = uvc_reset_resume,.id_table = myuvc_ids,//.supports_autosuspend = 1,
};static int myuvc_init(void)
{int ret ;ret = usb_register(&myuvc_driver);if (ret < 0) {return ret;}return 0;
}static void myuvc_cleanup(void)
{usb_deregister(&myuvc_driver);
}module_init(myuvc_init);
module_exit(myuvc_cleanup);
MODULE_LICENSE("GPL");
1.卸载原有的驱动
sudo rmmod uvcvideo //有些没有就不用卸载
sudo insmod myuvc.ko
2.插拔usb设备,并用dmesg 查看信息
dmesg 命令主要用来显示内核信息。使用 dmesg 可以有效诊断机器硬件故障或者添加硬件出现的问题。另外,使用 dmesg 可以确定您的服务器安装了哪些硬件。每次系统重启,系统都会检查所有硬件并将信息记录下来。执行/bin/dmesg 命令可以查看该记录,开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
3.输出