USB设备被识别流程

USB模块包括usb core,host,hub,device驱动,其中hub会启动一个内核线程名曰:khubd(hub_events一直在查询(hub使用的是中断传输), 当usb 设备连接在 hub 的某个端口上,hub检测到有设备连接了进来,hub会去调用hub_port_status函数去获取hub端口状态,要是真有设备了,会调用hub_port_connect_change函数会调用usb_alloc_dev函数为设备分配一个struct usb_device 结构的对象并初始化,这个初始化将usb设备的状态设置为Attached,调用usb_set_device_state函数将设备的状态设置成USB_STATE_POWERED上电状态,然后复位设备,复位成功后,设备就会进入 Default状态(这个状态可以接收hcd的回应了);

        然后设备又该进入 Address状态,首先调用 hub_set_address设置address状态需要发送usb_control_msg函数去设置,在usb_control_msg里面调用了usb_internal_control_msg函数,这个函数主要的功能就是创建一个控制 urb,并把它发送给 usb 设备,然后等待它完成,这个过程包括了(usb_alloc_urb、usb_fill_control_urb、usb_start_wait_urb)这三个函数调用,完了以后,调用usb_hcd_submit_urb将urb发送到HCD,HCD 每收到urb,就会将它添加到这个 urb指定的urb_list中,形成链表,现在进入了HCD模块(略),处理完以后,会返回一个状态,最后usb_api_blocking_completion会去处理这次urb的收尾工作,如果成功的话设备就是正式进入了address状态;

       接下来设备要进入configer状态,这个过程需要先获取配置usb_get_device_descriptor->usb_get_descriptor先得到配置描述符中的wTotalLength字段,然后通过wTotalLength长度,获取所以配置信息,然后将获取的配置解析出来处理(此过程较为繁琐),配置好以后调用usb_new_device说明发现了设备驱动;

        然后tell the world(announce_device)说明设备已经找到了,最后调用设备模型提供的接口device_add将设备添加到 usb 总线的设备列表里,然后 usb总线会遍历驱动列表里的每个驱动,调用自己的 match(usb_device_match) 函数看它们和你的设备或接口是否匹配,匹配的话调用device_bind_driver函数,现在就将控制权交到设备驱动了。

   函数调用流程如下所示:

usb_hub_init(kthread_run(hub_thread, NULL, "khubd"))->
  hub_thread->
    hub_events->
       hub_port_connect_change->
         usb_new_device->
              usb_enumerate_device(udev); /* Read descriptors */
              announce_device(udev); /* Tell the world! */
              device_add
              usb_create_ep_devs

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VCOM是Virtual COM Port的缩写,它是一种USB驱动程序。VCOM驱动允许用户在计算机上模拟一个COM端口,并将其用于与外部设备进行通信。这些外部设备可以是基于串口通信的硬件设备,如调制解调器、打印机、控制器等。 VCOM USB驱动的安装步骤通常如下: 1. 首先,需要从官方网站或可信的下载渠道下载VCOM USB驱动程序的安装文件。 2. 下载完成后,进入计算机的下载文件夹,双击安装文件。 3. 弹出安装界面后,按照向导指引点击“下一步”按钮,并阅读并接受许可协议。 4. 在接下来的步骤中,可以选择安装驱动程序的位置,默认情况下通常为系统默认位置,可以根据需要选择其他位置。 5. 接下来,点击“安装”按钮,驱动程序开始安装。这个过程可能需要一些时间,需要耐心等待。 6. 安装完成后,可以选择是否启动驱动程序。如果启动,VCOM驱动程序会自动检测计算机上的可用COM端口,并为其分配虚拟端口号。 7. 可以在计算机的设备管理器中检查VCOM驱动的安装情况。如果一切正常,应该可以看到新安装的COM端口,且无任何“驱动程序无法安装”或“设备无法识别”的错误信息。 总之,VCOM USB驱动是一种使计算机模拟COM端口的驱动程序,安装完成后可以为用户提供与外部硬件设备进行通信的能力。使用VCOM驱动前,请确保从官方渠道下载,并按照正确的安装步骤进行安装,以避免可能出现的驱动冲突或错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值