usb host controller

转载 2015年07月09日 19:46:47

1. 主机控制器(Host Controller)

      • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1)
      • OHCI: Open Host Controller Interface (开放主机控制接口,USB1.0/1.1)
      • EHCI: Enhanced Host Controller Interface (用于USB2.0高速设备的“增强主机控制接口”)    

     USB的拓扑结构决定了主机控制器就是最高统帅,没有主机控制器的要求设备永远不能主动发数据。所以主机控制器在USB的世界里扮演着重要的角色,它是幕后操纵者。

     比如说Host发送Setup包获取设备描述符是怎么发出去的?

    这个过程包含很多信息,比如:如何在D+和D-这两根线上传过去的、又传过来的。  这一切的工作都是主机控制器给我们做的。USB Host控制器的规范有很多种这里只介绍混得不错的EHCI和OHCI。这个EHCI主要针对高速的USB设备。如果要操作全速和低速可以考虑OHCI。

 

      • 什么是USB controller?

   USB 设备和主机的接口就是host controller,一个主机可以支持多个host controller比如分别属于不同厂商的。那么USB host controller 本身是做什么的? controller(控制器):用于控制。控制什么?控制所有的USB设备的通信。

      CPU把要做的事情分配给主机控制器,然后自己想干什么就干什么去,主机控制器替他去完成剩下的事情,事情办完了再通知CPU。否则让CPU去盯着每一个设备做每一件事情,那是不现实的。

      控制器的主要工作是什么? 把数扔出去,把数拿回来。绝对不应该偷偷加工数据。

      主机控制器控制总线上包的传输, 使用1ms或125us的帧。在每帧的开始时,主机控制器产生一个帧开始包(SOF: Start of Frame)。
      SOF包用于同步帧的开始和跟踪帧的数目。包在帧中被传输,或由Host到Device(out事务),或由Device到Host(in事务)。传输总是由Host发起(轮询传输)。回此每条USB总线只能有一个Host。每个包的传输都有一个状态阶段同(同步传输除外),数据接收者可以在其中返回ACK(应答接收),NAK(重试),STALL(错误条件)或什么也没有(混乱数据阶段,设备不可用或已经断开)。

 

      • 主机控制器Driver的工作是什么?

   让主机控制器工作起来,发挥它的潜力。 让控制器发数据、收数据 。主机控制器主要包含以下几步:

    1) 按照主机控制器的要求组织结构体  

       2) 将结构体在合适的时间、放在合适的地方 

       3)  trigger 

       4)  等待完成信号

       主机控制器Driver开发过程就是上面这几步。

2. 关键数据结构

     关键数据结构关系如下图所示:

 

 3. 系统架构 

     EHCI负责处理高速设备,OHCI负责处理全速/低速设备。上面这张图描述了USB控制器在route USB设备时的操作。
     一个port 多个主人,OHCI的角色是companion,伴侣。地位低点。EHCI处理不了再给它处理。 

 

       关于端口逻辑这块需要特别注意,Driver设计者要注意:当前端口正在属于谁。当端口被OHCI所拥有时,你插入个高速设备怎么办?没办法!在没有插入设备时,就不应该让OHCI拥有这个端口。只有EHCI控制器才能识别出设备是全速、高速还是低速。

4. usb_submit_urb

 usb_submit_urb处理流程如下图所示:

USB主机控制器(Host Controller)--深入理解

1. 主机控制器(Host Controller)       • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1) ...
  • MyArrow
  • MyArrow
  • 2013年01月14日 11:28
  • 20292

usb host controller & usb core & usb device driver之间的关系

使用USB设备时,两个模块是必须的: usb核心模块:usbcore       usb主机控制器驱动( host controller driver ),如ehci_hcd、ohci_h...
  • chrovery
  • chrovery
  • 2016年01月05日 10:44
  • 1085

USB子系统学习之基础篇三(host controller)

理所当然,我们需要开始分析usb host controller了。 位置linux-2.6.32.21/drivers/usb/host,哇塞,怎么这么多xhci啊,什么ehci,uhci,fhci...
  • dragon101788
  • dragon101788
  • 2013年07月22日 16:27
  • 4443

mini2440 usb host device controller驱动分析(一)---host controller

这里接着开始分析usb host端的驱动。 对于USB来讲,host端的驱动比我们之前分析的gadget端的驱动要复杂的多。但是有个好处就是驱动的主体部分已经实现得很完善了,我们写自己的驱动时候需要完...
  • a_jige
  • a_jige
  • 2013年10月16日 16:22
  • 3648

usb unknow device 无法识别的USB设备 Enhanced Host Controller 静电

近日发现连接的HP LaserJet 1022打印机时常出现莫名的脱机现象,通过开关打印机电源或插拔连接的USB口总能解决脱机问题。但今天,任凭我怎样开关打印机的电源和插拔连接不同的USB口,系统始终...
  • fjnu2008
  • fjnu2008
  • 2011年03月12日 00:42
  • 3214

Standard OpenHCD USB Host Controller

Standard OpenHCD USB Host Controller 这个USB驱动没用怎么办。该设备找不到足够资源可以使用(代码 12) 检举|2012-03-09 22:10 提问者...
  • autumn20080101
  • autumn20080101
  • 2013年05月15日 10:19
  • 1908

第三十八篇:USB3.0/3.1 xHCI host controller第二次开发(第一次彻底开发),基本完成,写博纪念

在前一家跨国IC大公司,曾经一度参与过USB3.0/3.1 xHCI host controller IP的开发,但后来被BOSS安排去做基于我们自己开发的USB3.0 Device controll...
  • u013140088
  • u013140088
  • 2016年10月21日 21:34
  • 1359

Linux USB subsystem --- EHCI host controller register

目的:对USB作深入学习,在此留下笔记。欢迎讨论。 [Linux 3.2] [driver/usb/host/ehci-hcd.c] 函数:ehci_hcd_init() stati...
  • voice_shen
  • voice_shen
  • 2012年03月27日 22:01
  • 3099

Vmware提示:host usb device connections disabled-(vmware 主机已禁用 usb 设备连接)

VMware Workstation,提示提示Host USB device connection disabled。如图: 按照图片中的提示,应该是VMware USB Arbitration...
  • casilin
  • casilin
  • 2010年10月22日 15:33
  • 4582

Intel (R) 82801G (ICH7 Family) USB Universal Host Controller前面有感叹号

   症状:1、打印机不能正常打印,老是“脱机打印”,查看打印机首选项,文字都变成了?? 2、鼠标不能使用。  解决步骤: 1、怀疑是打印机驱动问题,更新驱动,不行。 2、下载笔记本主板驱动,重启,不...
  • qingfengke78
  • qingfengke78
  • 2010年02月24日 23:52
  • 5973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:usb host controller
举报原因:
原因补充:

(最多只允许输入30个字)