我之理解[浅析linux usb driver skeleton]

Target: Skeleton.c 文件 kernel/drivers/usb

1.linux driver 首先需要注册到linux usb subsystem(申明此驱动支持什么设备以及接上或拔掉所支持的设备时应该有哪些函数负责响应)。通过定义一个usb_driver实现其结构如下。

static struct usb_driver skel_driver = {
        .name =         "skeleton", //驱动名称
        .probe =        skel_probe,//probe函数在符合id_table的设备接上时被调用
        .disconnect =   skel_disconnect,//disconnect函数在符合id_table的设备拔掉时被调用

        ...
        .id_table =     skel_table,
};

2. 注册

module_init(usb_skel_init);

static int __init usb_skel_init(void)
{
       ...

       result = usb_register(&skel_driver);
        ...
}

3.实现

/* 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 const struct usb_device_id skel_table[] = {
        { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) },
        { }                                     /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, skel_table);//使能插上设备时自动载入该驱动

--------------------------------------------------------------------

static int skel_probe(struct usb_interface *interface,
                      const struct usb_device_id *id)

{

  /*...*/

}

--------------------------------------------------------------------

static void skel_disconnect(struct usb_interface *interface)
{
 /*...*/

}

4.退出

module_exit(usb_skel_exit);
static void __exit usb_skel_exit(void)
{
        /* deregister this driver with the USB subsystem */
        usb_deregister(&skel_driver);
}

Reference article: How to Write a Linux USB Device Driver http://www.linuxjournal.com/article/4786?page=0,0



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值