USB枚举过程以及与驱动如何匹配

USB 设备刚接入 USB 主机后,主机会对 USB 设备进行枚举,在此过程中获取设备的描述符信息,并据此加载合适的驱动程序等。
USB 枚举过程如下:
Host 检测到 Device 接入后,发出总线复位信号,使 Device 的地址复位为 0 ,然后主机向地址 0 的端点 0 发送获取设备描述符的请求,用于确认 USB 通讯是否正常。 Device 响应请求后发送设备描述符给 Host Host 确认设备描述符无误后向 Device 回复一个 ACK 包。
Host 再次复位设备,目的是使 Device 进入确定的状态,然后向地址 0 的端点 0 发送 设置地址请求 来向 Device 分配一个地址, Device 确认后, Host 使用新地址与之通讯。
Host Device 的新地址的端点 0 发送 获取设备描述符 的请求这一次是为了获取整个设备描述符的内容,成功后再发送获取配置描述符请求来获取配置描述符、接口描述符、端点描述符等信息
Host 根据描述符匹配一个最合适的驱动程序给 Device ,然后驱动根据描述符内容 确定 Device 当前的使用配置
匹配的过程:
  • USB控制器或Hub识别出USB设备后,会创建、注册usb_deive

  • usb_device被"drivers\usb\core\generic.c"驱动认领后,会选择、设置某个配置

  • 这个配置下面的接口,都会分配、设置、注册一个usb_interface

  • 左边的usb_driver的id_table和右边的usb_interface如果匹配,则调用usb_driver.probe

static struct usb_device_id myuvc_ids[] = {
	/* Generic USB Video Class */
	{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, 0) },	 /**< VideoControl interface */
	{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 2, 0) }, /**< VideoStreaming interface */
	{}
};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值