zoukankan      html  css  js  c++  java
  • 36、USB设备驱动

        USBUniversal Serial Bus)串行通用总线,支持即插即用,也称之为菊链(daisy chaining,因为在一条线缆上可以最多链接127个设备;速度传输速率可达4Mb/s~12Mb/sUSB采用级联方式。

    1USB连接拓扑结构

    1USB host控制器;host控制器其实也就是一个PCI设备,挂载在PCI总线上。

    2USB HubUSB设备。

    我们可以将USB设备理解也一个USB Host连接多个逻辑设备。

    wps_clip_image-15952

    wps_clip_image-6718

    2USB通信流程

    USB的连接模式是HostDevice的连接模式,所有的请求都是由HostDevice发出。

    wps_clip_image-2148

    SWsoftware

        每个USB设备都会有多个管道。对于USB设备驱动程序员,主要工作在USB设备层。

    对于每个USB设备,都有一个或者多个的接口,每个接口(Interface)有多个端点(Endpoints,每个端点通过管道(Pipes)USB Host控制器连接。每个USB设备都会有一个特殊的端点,Endpoint0,它负责传输设备的描述信息,同时也负责传输PC与设备之间的控制信息。

    wps_clip_image-17363

    USB设备驱动向USB控制器驱动请求请求的每次传输被称为一个事务,事务有四种类型,Bulk Transaction,Control Transaction,Interrupt Transaction,Isochronous Transaction。每次事务都会分解成若干个数据包在USB总线上传输。每次传输必须经历两个或三个部分;第一部分,USB控制器向USB设备发出命令,第二部分是USB控制器和USB设备之间传递读写请求,是可选的,第三部分是握手信号。

    如下为Bulk Transaction的示意图:

    wps_clip_image-7376

    wps_clip_image-22829

    其它参见[1]

    3、关于Windows 下的USB驱动

    常用usbviewBusHound来观察和分析USB设备。关于USB设备请求,设备描述符,配置描述符,接口描述符,端点描述符,及USB具体实例,可以参见[1]

    USB驱动程序的主要功能就是设置这些USB令牌,和获取USB设备描述符。USB驱动程序将这些请求最终转化为USB请求包(URB),然后发往USB总线驱动程序。

    [1] Windows驱动开发详解,张帆

  • 相关阅读:
    mysql单机多实例配置
    mysql中FILE权限
    手把手教你用 Git(转)
    单例模式
    Java中的枚举Enum
    常见排序算法的亲手实现(代码与注释)
    Java中的位运算
    重载
    Java中的boxing和unboxing(转)
    Java的transient关键字(转)
  • 原文地址:https://www.cnblogs.com/mydomain/p/1903059.html
Copyright © 2011-2022 走看看