博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Usb设备驱动1:root hub 设备驱动安装
阅读量:5749 次
发布时间:2019-06-18

本文共 715 字,大约阅读时间需要 2 分钟。

按照设备模型的总线,设备,驱动模式,一条总线会把所有这条总线上的设备和驱动都挂载到总线的设备链表和驱动链表上,具体到usb总线上,就是usb主控制器,hub等设备,都需要按照设备模型的要求,作为设备挂载到usb总线的设备链表上,同时也需要把usb主控制器,hub的驱动也挂载到驱动链表上,并且使得设备和设备驱动能够相互关联起来,才能使得设备能够使用,完成应有的设备功能。

那么usb hub驱动是如何被挂载的,驱动又是如何跟hub设备关联在一起的?

首先,要有一条usb总线,就必须有一个usb主控制器,一个usb主控制器对应一条usb总线。一个系统有多少个usb主控制器,就有多少条usb总线,我们常见的UHCI,OHCI,ECHI等,就是不同的usb主控制器类型。一般的,这些主控制器都是PCI接口的,通过加载对应的PCI设备驱动,使得系统增加了usb总线,而这些,都是在我们现在的工作之前完成的。

其次,现在的usb主控制器,都集成了一个根集线器,在我们驱动好usb主控制器后,接下来就是使用设备模型的方式,把根集线器(root hub)作为一个设备添加到usb总线的设备队列里,同时,从总线的驱动队列中查找是否有可以支持这个设备的驱动程序,如果查找到,就可以按照设备模型的三角关系,把设备,驱动,总线通过相应的指针关系,把他们都关联起来;如果找不到驱动,则root hub就不能正常的工作,只能在总线的设备队列中等待有驱动安装时,再匹配是否OK;如果一直都没有对应的驱动,则这条总线也就没有办法挂载其他的设备了。

Root hub匹配成功驱动后,就循环运行一个进程,以发现hub的端口有设备插入或拔除。

大致的流程图如下:

 

 

转载地址:http://qghzx.baihongyu.com/

你可能感兴趣的文章
基于Flask-Angular的项目组网架构与部署
查看>>
一张图道尽程序员的出路
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
烂泥:kvm安装windows系统蓝屏
查看>>
iPhone开发面试题--葵花宝典
查看>>
EdbMails Convert EDB to PST
查看>>
POJ 2184
查看>>
存储过程简单实例
查看>>
大话 程序猿 眼里的 接口
查看>>
struts2用了哪几种模式
查看>>
replace函数结合正则表达式实现转化成驼峰与转化成连接字符串的方法
查看>>
ubuntu 初学常用命令
查看>>
WCF客户端与服务端通信简单入门教程
查看>>
判断是否含有中文
查看>>
Byte[]、Image、Bitmap 之间的相互转换
查看>>
玩转 React【第02期】:恋上 React 模板 JSX
查看>>
MyEclipse Web开发教程:XML & XML架构(一)
查看>>
linux文件权限与属性的更改
查看>>
Juniper系列之密码恢复
查看>>