USB 3.0 Host Controllers

本文将针对USB3.0的Host Controller进行介绍

Host Controller介绍

Host Controller基本结构

英特尔发明了xHCI(Extensible Host Controller Interface)用于USB3.0的host controller,该控制器能向下兼容并混合使用各个速率的设备,如下图所示

图片名称

当设备直接连接到Root Hub的端口上时,Host Controller将会判断是3.0还是2.0的设备,并由对应的控制器进行接管。有些SoC还提供了额外的Host Controller,通过挂载在PCIe总线上,支持USB3.1协议。每个Host最多支持127个设备,当系统上电后,和其他的PCI设备类似,系统会遍历所有的Host Controller并初始化。

图片名称

Host Controller功能

对于一个简单的master/slave USB模型,一个Host Controller的功能如下:

  • 报告设备的连接/移除
  • 跟踪设备的上下文信息(设备速度/传输类型等)
  • 响应软件的传输请求
  • 初始化USB数据传输
  • 记录传输和其他事务的状态
  • 产生中断

Host Controller初始化

为了初始化Host Controller,需要读取并初始化两个寄存器组:

  • PCI配置空间
  • MMIO. 一个大块的包含xHCI功能结构(软件可以从这些寄存器中读取xHCI支持的功能)/操作寄存器(用于控制Host Controller的行为)/运行寄存器(动态寄存器,用于软件与设备交互)的寄存器块

USB 3.0新特性

相比USB2.0,USB3.0有如下特性:

  • 最大的包长度增加:同步/中断/块增大为1024 bytes,控制增大为512 bytes
  • 数据
0%