USB理论学习之五-----USB主机协议简介

  • USB主机协议简介
    • USB开发分为:
      • USB外设开发
      • USB核心驱动程序和USB主控制器驱动程序开发-----USB系统软件
    • USB工业标准:
      • 通用式主机控制器接口(UHCI)
      • 开放式主机控制器接口(OHCI)
      • 上述两者均有主机控制器和主机控制器驱动程序组成
        • 主机控制器----面向硬件部分及生产厂商,规定接口,处理各种USB事务的各种功能模块以及给用户使用的寄存器定义
        • 主机控制器驱动程序----USB协议栈软件与USB主机控制器硬件之间联系的接口,直接负责主机控制器硬件的配置和管理
    • USB主机系统的功能:

    • USB主机系统的结构:

      • USB总线接口层
        • 指以USB主机控制器为核心的硬件部分,包括串行接口引擎以及之间的电气连接;
        • USB主机控制器集成了USB根Hub,以及提供了USB设备的连接点;
      • USB系统层
        • 控制主机控制器来管理主机和设备之间的数据传输
        • 包括三部分
          • USB主控制器驱动程序
          • USB核心驱动程序
          • 主机软件
      • USB用户层
        • USB设备驱动程序
        • 用户软件
    • USB主机控制器
      • USB主机控制器即USB主机接口芯片的核心部分
      • 实现功能:
        • 处理主机和设备状态(暂态)
        • 数据串行化和并行化(SIE模块)
        • 产生SOF帧(1ms产生一个帧起始包划分USB总线的时间)
        • 数据处理
        • 协议引擎:USB协议层的接口
        • 数据发送错误处理
          • 超时错误
          • 数据传输错误
          • 协议级错误
        • 远程唤醒:挂起态时USB系统通知主机控制器停止所有USB活动,包括产生SOF帧
        • 根Hub:接口
        • 主机系统接口:USB主机控制器芯片与核心CPU或系统内存之间的通信接口
    • 主控制器驱动程序HCD
      • 对USB主机控制器硬件和数据传输的一种抽象
      • 向上仅对USB核心驱动程序服务
      • 提供一个软件接口,HCDI
      • 向下直接管理和检测主控制器硬件的各种行为
      • HCD提供的功能主要有:
        • 主机控制器硬件初始化
        • 为USBD层提供相应的接口函数
        • 提供根Hub设备配置、控制功能
        • 完成四种类型数据传输
    • USB核心驱动程序USBD
      • 向上接收USB设备驱动程序和用户程序的各种请求和数据
      • 向下把处理好的各种数据发送给HCD,最终与设备通信
      • 通过管道接口和命令接口两套机制来实现其所有的服务
      • 结构

 

      • 主要的服务:
        • 通过命令机制实现配置功能
        • 通过命令和管道机制实现数据传输服务
        • USB事件的指示
        • 状态报告和错误检查
      • 命令机制:
        • 接口状态的控制
        • 管道状态的控制
        • 获取设备描述符
        • 获取当前的配置设置
        • 添加设备,USBD的软件接口USBDI使Hub能够将新接入的设备的信息通知给USBD----USBD为该设备分配地址----准备缺省的控制管道进行枚举和配置
        • 移除设备
        • 管道状态
        • 发送类请求命令:接收设备类驱动程序的请求经过处理后发送给设备
        • 发送用户定义的命令
        • 建立用于替换的设置
        • 建立一个配置
        • 设备描述符:USBDI允许修改已存在的描述符或者增加新的描述符
      • 管道机制:
        • 缺省管道:利用控制传输和设备端点0进行数据传输,用于交换设备的配置信息等,受USBD直接管理
        • 用户管道:不受USBD直接管理,由USBD的上层软件拥有和管理
        • 进行更基本的数据传输
        • 支持四种类型的数据传输