USB(1)

来源:互联网 发布:wdcp如何查看php版本 编辑:程序博客网 时间:2024/05/16 03:46

如何编写Usb驱动... 1

指定驱动支持的设备... 1

注册 usb_driver 1

在所有的usb驱动中都必须要定义如下结构体... 1

 

 

如何编写Usb驱动

 

  drivers/usb下有个一个usb驱动的框架usb-skeleton.c,可以仿照这个来进行编写

 

  

指定驱动支持的设备

 

硬件厂商提供的usb设备有vendor product_id参数,可以通过查询硬件手册获取

也可以将设备插在主机上通过lsusb 来获取

我们通过如下方式来指定驱动支持的设备

 

/* Define these values to match your devices */

#define USB_SKEL_VENDOR_ID       0xfff0

#define USB_SKEL_PRODUCT_ID     0xfff0

 

/* table of devices that work with this driver */

static struct usb_device_id skel_table [] = {

       { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) },

       { }                               /* Terminating entry */

};

MODULE_DEVICE_TABLE(usb, skel_table);

 

 

注册 usb_driver

 

在所有的usb驱动中都必须要定义如下结构体

struct usb_driver

 

例如:

static struct usb_driver skel_driver = {

       .name =          "skeleton",

       .probe =  skel_probe,

       .disconnect =  skel_disconnect,

       .id_table =      skel_table,

};

 

在这个结构体中定义了probe方法以及对于的id

接着调用usb_register core层注册驱动