usb 分析(1)

 


 
 
 usb 分析(1)
 
 2011-7-5 22:03:14
 
 usb驱动要做的第一件事就是向usb系统进行注册
 
 在框架代码中是如下描述的
 
 static int __init usb_skel_init(void)
{
 int result;

 /* register this driver with the USB subsystem */
 result = usb_register(&skel_driver);
 if (result)
  err("usb_register failed. Error number %d", result);

 return result;
}

调用core中的方法进行注册了这样一个驱动

static struct usb_driver skel_driver = {
 .name =  "skeleton",
 .probe = skel_probe,
 .disconnect = skel_disconnect,
 .id_table = skel_table,
};


需要注意

为了使用热插拔功能
  
  需要使用这样一个id表
 
   /* 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);
 
 
skel_write

确定写入的大小

 if (down_interruptible(&dev->limit_sem)) {
  retval = -ERESTARTSYS;
  goto exit;
 }
 
 限制urb的数目
 
 分配一个urb
  usb_alloc_urb
 
 使用usb_fill_bulk_urb 将回调函数关联起来
 
 接着 提交这个urb
 
 usb_submit_urb
 
 usb_hcd_submit_urb  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值