WindowsXP下USB控制器ECHCI驱动分析
+ -

Windows XP系统USB驱动栈及功能说明

2024-09-27 0 0

这里主要讲的是Windows XP下USB驱动协议栈的整体结构,以及内部的一些重要数据结构。

USB协议栈是由如下几个驱动文件构成的:

  • usbport.sys USB主机控制器共用驱动代码库,供miniport驱动调用。
  • usbhub.sys USB总线驱动,USB总线也是USB设备的一种。
  • usbehci.sys USB EHCI主机控制器驱动,它是属于miniport驱动。
  • usbuhci.sys USB UHCI主机控制器驱动,它是属于miniport驱动。
  • usbohci.sys USB OHCI主机控制器驱动,它是属于miniport驱动。
  • usbd.sys USB设备驱动共用代码库,供USB设备驱动和总线驱动调用。

USB功能设备

  • usbccgp.sys USB复合设备驱动。
  • usbstor.sys USB存储设备驱动。
  • usbaudio.sys USB声音设备驱动。
  • usbvideo.sys USB视频设备驱动。
  • hidusb.sys USB HID设备驱动。

主机控制器驱动是USB协议栈的最底层驱动,在它之上就是USB总线驱动,再之上是USB设备驱动。

USB设备驱动上面呢,一般还有其它的驱动。象usbstor上面还有存储设备class驱动,hidusb上面还有HIDclass驱动。不过这上面的驱动,就和USB的驱动协议栈没有多大的关系了。而设备驱动和具体的设备类有千丝万缕的关系,不是我们要讨论的重点。

这里重点要讨论的是控制器和总线,这是USB驱动协议栈的核心。

我们知道,USB2.0有EHCI控制器,USB1.1有UHCI和OHCI控制器。这样一共有三种控制器,它们之间有什么区别呢? 这要先说一说控制器的作用,USB协议栈并不是凭空而建立起来的,它下层就是PCI总线驱动(一般而言,也不一定非得是PCI总线),而控制器的作用就是和PCI总线打交道,将USB的功能和操作转变成PCI总线上的一系列操作,同时还兼任着usb总线的日常管理。

不同的硬件厂商都可以有它自己的一个控制器规范,这在USB协议出现早期尤为突出。但这样各自为政毕竟对整个规范的发展不利,于是大家便开始统一接口规范,这统一规范能满足大家的绝大部分需求,所以大家也就都用标准规范。USB 1.1时,就形成了OHCI和UHCI两大阵营,而USB2.0时,则只有EHCI了,显然,大家还是觉得标准越少麻烦越少。

对比一下UHCI和OHCI,两者都是提供对USB1.1协议的支持,只不过,UHCI硬件实现相对较少而成本相对较低,但软件驱动复杂度相对较高,所以,UHCI多用在PC上,OHCI多用在嵌入设备中。而 EHCI 则是伴随着USB 2.0规范一同出现(因为大家都受够了要同时支持两大规范的痛苦),它同时也向下兼容UHCI和OHCI。

好了,废话就说这么多,再具体的网上可查。下面,就说说控制器驱动的事儿。各大控制器规范和底层PCI总线的接口差别比较大,但它控制USB总线那一块的功能都基本上差不多 — 都是完全符合USB本身规范的。所以,各大控制器的驱动底层接口部分是各自为政,而USB总线管理部分则被提炼出来,形成一个共同的代码库,名为usbport.sys。也就是说,usbport.sys并不是一个独立的驱动,而只是一个供别人调用的动态链接库。而这个动态链接库由于实现了控制器驱动的绝大多数功能,所以,我们习惯地将它当作控制器驱动的主体。

讲了usbport.sys是怎么回事,顺带讲讲usbd.sys。usbd.sys和usbport.sys角色定位类似,它也只是作为一个动态链接库供USB设备驱动和USB总线驱动使用。不过,由于usbd.sys实现的功能很有限,作用没有usbport.sys那么突出,所以就显得比较边缘化,在一般的讨论中将它忽略掉。

原文转自:http://www.17ext.com/Windowsjc/511879.html

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

window主机USB驱动栈
WindowsXP最高支持USB2.0高速,所以向下兼容USB1.0,USB1.1。根据USB主机控制分类,USB1.0/1.1一般为OHCI,UHCI,USB2.0为EHCI。具体详见:https://www.usbzh.com/article/detail-74.html由于USB主机控制器分......
Windows系统USB驱动栈-设备树名分析
Windows系统USB驱动栈主机端这里主要介绍以下两种:DeviceUSBFDO-X这里的X是指的是数字USBFDO这里主要指定的USB主机控制器的FDO.DeviceUSBPDO-X这里主要包括两种PDO设备第一种是USB主机控制器创建的USB根集线器的PDO第二种是USB根集线......
USB根集线器USBD_DEVICE_HANDLE
USBD_DEVICE_HANDLE简介USB主机控制器会创建一个PDO设备代表着根集线器。USB根集线器的扩展数据结构中个很重要的成员就是RootHubDeviceHandle。typedef struct _PDO_EXTENSION { USBD_DEVICE_HANDLE Roo......
LINUX系统USB设备驱动栈
内核打印Linux系统的内核打印可以通过如下命令来显示:cat /proc/kmsg &而在Windows系统则可以通过DbgViewer或者Windbg查看,当然,前提条件是需要配置注册表项。Linux内核打印默认是7个等级,使用函数printk来进行内核打印,相当于Windows的......
Linux&UVC驱动栈
以下内容仅代表个人观点,有很大概率不准确。作业初学者,仅为学习笔记而已,勿全当真。但本人会随着认识而修正本文错误的观点。Windows系统有驱动层级结构,Linux应该也有。作为初学者,需要多读多学,并对新学的知识进行总结。本人根据自己的理解对Linux系统UVC驱动栈进行绘制图。最底层的......
Windows XP系统USB驱动栈及功能说明
这里主要讲的是Windows XP下USB驱动协议栈的整体结构,以及内部的一些重要数据结构。USB协议栈是由如下几个驱动文件构成的:usbport.sys USB主机控制器共用驱动代码库,供miniport驱动调用。usbhub.sys USB总线驱动,USB总线也是USB设备的一......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!