usb_register 与 usb_regieter_dev

1、usb设备与驱动程序的匹配过程
   a.先安装驱动,后插入设备
      这种情况下,usb host controller完成对设备的枚举过程后,将设备的信息封装到一个usb_interface结构体中。usb core根据该结构体提供的设备信息(Vendor_id & Product_id)去遍历所有的驱动程序,找到支持该设备的驱动,并调用该驱动中的probe函数。最终将该驱动与设备关联,完成驱动程序的注册。
b.先插入设备,后安装驱动
      在插入设备后,usb_host_controller已经完成对设备的枚举,usb core中已经存有描述该设备信息的结构体 usb_interface。驱动安装时,调用static int __init usb_skel_init(void)中的usb_register(skel_driver),将该驱动的相关信息(主要是id_table)提交给usb core,usb core根据提供的信息区遍历所有的设备,找到相关联的设备。再调用probe函数完成驱动的注册
 
2、usb_register()
 
usb_register(&skel_driver),这里只是将包含该驱动信息的skel_driver()结构体提交给usb core,以便usb core能够遍历该驱动程序
 
static struct usb_driver skel_driver = {
 .name =  "skeleton",
 .probe = skel_probe,
 .disconnect = skel_disconnect,
 };
当该驱动与设备比配时,usb core能够调用skel_driver提供的probe函数
 
3、usb_register_dev()
   当usb core成功的将设备和驱动程序关联上之后,调用驱动程序中的probe函数。probe函数再调用usb_register_dev(interface, &skel_class),获得次设备号,将usb驱动注册成字符设备驱动提供给用户程序。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值