• USB驱动程序之概念介绍学习笔记


    现象:把USB设备接到PC
    1. 右下角弹出"发现android phone"
    2. 跳出一个对话框,提示你安装驱动程序


    问1. 既然还没有"驱动程序",为何能知道是"android phone"
    答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"
         提示你安装的是"设备驱动程序"
         
         USB总线驱动程序负责:识别USB设备给USB设备找到对应的驱动程序


    问2. USB设备种类非常多,为什么一接入电脑,就能识别出来?
    答2. PC和USB设备都得遵守一些规范。
         比如:USB设备接入电脑后,PC机会发出"你是什么"?
               USB设备就必须回答"我是xxx", 并且回答的语言必须是中文(格式一样)
         USB总线驱动程序会发出某些命令想获取设备信息(描述符)
         USB设备必须返回"描述符"给PC
         
    问3. PC机上接有非常多的USB设备,怎么分辨它们?
         USB接口只有4条线: 5V,GND,D-,D+
    答3. 每一个USB设备接入PC时,USB总线驱动程序都会给它分配一个编号
         接在USB总线上的每一个USB设备都有自己的编号(地址)
         PC机想访问某个USB设备时,发出的命令都含有对应的编号(地址)


    问4. USB设备刚接入PC时,还没有编号;那么PC怎么把"分配的编号"告诉它
    答4. 新接入的USB设备的默认编号是0,在未分配新编号前,PC使用0编号和它通信


    问5. 为什么一接入USB设备,PC机就能发现它?
    答5. PC的USB口内部,D-D+接有15K的下拉电阻,未接USB设备时为低电平

         USB设备的USB口内部,D-D+接有1.5K的上拉电阻;它一接入PC,就会把PC USB口的D-或D+拉高,从硬件的角度(电平由低变高)通知PC有新设备接入。下面的全速设备和低速设备区别在于上拉电阻接在D+还是D-端。在usb device端,这时就有高速低速设备的区别了,高速设备:d+ 接一个1.5kohm的上拉电阻,d-不接;低速设备则相反。
     



    其他概念:
    1. USB是主从结构的(连续不断地查询)

       所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能力。
       例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来读数据,只能被动地等得PC机来读


    2. USB的传输类型:
    a. 控制传输:可靠,时间有保证,比如:USB设备的识别过程
    b. 批量传输: 可靠, 时间没有保证, 比如:U盘
    c. 中断传输:可靠,实时,比如:USB鼠标 (只是借助中断这个概念,没有中断能力,使用查询方式来实现实时性)
    d. 实时传输:不可靠,实时,比如:USB摄像头


    3. USB传输的对象:端点(endpoint)
       我们说"读U盘"、"写U盘",可以细化为:把数据写到U盘的端点1,从U盘的端点2里读出数据
       除了端点0外,每一个端点只支持一个方向的数据传输
       端点0用于控制传输,既能输出也能输入
       
    4. 每一个端点都有传输类型,传输方向


    5. 术语里、程序里说的输入(IN)、输出(OUT) "都是" 基于USB主机的立场说的。

       比如鼠标的数据是从鼠标传到PC机, 对应的端点称为"输入端点"
         
    6. USB总线驱动程序的作用
    a. 识别USB设备
    b. 查找并安装对应的设备驱动程序
    c. 提供USB读写函数(只是收发送信,不知道信的内容)


    USB总线驱动程序已经有了读写函数,能不能让应用程序直接使用这些函数来访问(跨过设备驱动程序)。USB总线驱动程序里面有libusb(里面封装了接口函数)

    USB驱动程序框架:


    app:   
    -------------------------------------------
              USB设备驱动程序      // 知道数据含义
    内核 --------------------------------------
              USB总线驱动程序      // 1. 识别, 2. 找到匹配的设备驱动, 3. 提供USB读写函数 (它不知道数据含义)
    -------------------------------------------
               USB主机控制器
               UHCI OHCI EHCI
    硬件        -----------
                  USB设备


    UHCI: intel阵营规范(主硬件),     低速(1.5Mbps)/全速(12Mbps)
    OHCI: microsoft阵营规范(主软件)  低速/全速
    EHCI:            高速(480Mbps)


    USB 主机控制器有 种规格:

    OHCI (Open Host Controller Interface)

    UHCI (Universal HostController Interface)

    EHCI (Enhanced Host Controller Interface)

    ##################################################

    OHCI驱动程序用来为非 PC 统上以及带有 SiS 和 ALi 芯片组的 PC 主板上的 USB 芯片提供支持。

    ##################################################

    UHCI 驱动程序多用来为大多数其他 PC 主板(包括 Intel 和 Via)的的 USB 芯片提供支持。 

    ##################################################

    EHCI 由 USB 2.0 规范所提出,

    它兼容于 OHCI 和 UHCI。 UHCI 的硬件线路比 OHCI 简单,所以成本较低,但需要较复杂的驱动

    程序, CPU 负荷稍重。本节将重点介绍嵌入式系统中常用的 OHCI 主机控制器驱动。


    转自:http://blog.csdn.net/qingkongyeyue/article/details/53363090

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/alan666/p/8311881.html
Copyright © 2020-2023  润新知