USB控制器
+ -

开放主机控制器接口OHCI

2026-04-20 本文链接为:http://www.usbzh.com/article/detail-1617.html ,欢迎转载,转载请附上本文链接。

OHCI (Open Host Controller Interface)由Compaq,Microsoft,National Semiconductor开发,它将更多负担放在了硬件上,而软件更简单. 规格书见:http://www.o3one.org/hwdocs/usb/hcir1_0a.pdf

Open Host Controller Interface(OHCI)

开放主机控制器接口
OHCI 是 USB 1.1 时代的开放主机控制器规范,用于控制 全速(12Mbps)、低速(1.5Mbps) USB 设备。

  • 与 UHCI 并列,但寄存器不兼容
  • 比 UHCI 更智能,硬件自动完成链表调度
  • 负责:帧调度、 Bulk/Control/Interrupt/Isochronous 传输

USB 1.1 全速/低速主机控制器标准(Linux/嵌入式最常用)

二、OHCI 核心架构

┌─────────────────────────────────────────────────────────┐
│                    OHCI 主机控制器                       │
└───────────────────┬─────────────────────────────────────┘
                    │
      ┌─────────────┴─────────────┐
      │                           │
┌─────▼─────┐               ┌─────▼─────┐
│  周期性调度   │            │  异步/批量调度  │
│ Periodic  │               │ Async/Bulk │
└─────┬─────┘               └─────┬─────┘
      │                           │
┌─────▼─────┐               ┌─────▼─────┐
│ 帧列表 Frame List │       │ 控制/批量队列头   │
│ 1024 项,1ms/帧  │        │ Control/Bulk Head│
└─────┬─────┘               └─────┬─────┘
      │                           │
┌─────▼─────┐               ┌─────▼─────┐
│    ED 链表   │◄──────────►│    ED 链表    │
│  端点描述符   │            │  端点描述符    │
└─────┬─────┘               └─────┬─────┘
      │                            │
┌─────▼─────┐               ┌─────▼─────┐
│   TD 链表    │            │   TD 链表    │
│ 传输描述符    │           │ 传输描述符    │
│ (ITD/ITD_TD) │           │(CTD/BTD/ITD) │
└─────┬─────┘               └─────┬─────┘
      │                            │
┌─────▼─────┐               ┌─────▼─────┐
│  中断/等时设备  │          │  控制/批量设备   │
└───────────┘               └───────────┘

结构说明(极简版)

1. ED(Endpoint Descriptor)

  • 每个 ED 对应一个 USB 端点
  • 保存:设备地址、端点号、方向、最大包长、速度
  • 串联成链表,由硬件自动遍历

2. TD(Transfer Descriptor)

  • 每个 TD 对应一次总线事务
  • 保存:数据缓冲区、长度、PID、DATA0/DATA1、状态
  • 挂在 ED 下方

3. 调度分类

  • 周期性调度
    • 帧列表 Frame List(1024 项)
    • 用于:中断 + 等时
  • 异步调度
    • 控制队列头 + 批量队列头
    • 用于:控制 + 批量

4. 与 EHCI 的对应关系

  • OHCI ED ≈ EHCI QH
  • OHCI TD ≈ EHCI qTD / iTD
  • OHCI 帧列表 ≈ EHCI 周期列表

超精简记忆版

OHCI = 帧列表 + ED + TD

  • 帧列表管周期
  • ED 管端点
  • TD 管传输
  • 硬件自动跑链表,CPU 很轻松

1. 调度结构

OHCI 使用 帧列表 + 链表 完成所有传输:

  • 帧列表 Frame List:1024 项,每项指向一个 ED
  • 每 1ms 一帧,对应一个帧号

2. 两大核心数据结构

ED(Endpoint Descriptor)端点描述符

  • 代表一个 USB 端点
  • 保存:设备地址、端点号、方向、最大包长、速度、挂起链表
  • 是调度的最小单元

TD(Transfer Descriptor)传输描述符

  • 代表一次数据传输
  • 包含:缓冲区地址、数据长度、PID、切换位、状态
  • 多个 TD 可以串成一条链表

三、OHCI 四大 TD 类型

  1. Control TD
    控制传输(枚举、配置)
  2. Bulk TD
    批量传输(U 盘、打印)
  3. Interrupt TD
    中断传输(鼠标、键盘)
  4. Isochronous TD
    等时传输(音频、视频)

四、OHCI 寄存器(核心翻译)

1. 控制类

  • HcControl:控制 OHCI 运行/复位/挂起
  • HcCommandStatus:命令状态、调度使能
  • HcInterruptStatus / HcInterruptEnable:中断状态与使能

2. 调度类

  • HcHCCA:主机控制器通信区指针(驱动与控制器共享)
  • HcFrameCounter:当前帧号
  • HcPeriodicStart:周期性调度起始点
  • HcListHead:批量/控制链表头

3. 端口类

  • HcRhDescriptorA / B:根集线器描述
  • HcRhStatus:根集线器状态
  • HcRhPortStatus:端口状态(连接、复位、使能、速度)

五、OHCI 工作流程(总结)

  1. 控制器复位
  2. 初始化帧列表(Frame List)
  3. 初始化 Bulk/Control 链表
  4. 使能调度
  5. 硬件自动遍历 ED → TD 执行传输
  6. 完成后写中断,驱动处理 TD 状态

六、OHCI 关键特点(考试必背)

  • 硬件自动调度链表,CPU 负担低
  • 支持 等时、中断、批量、控制 全部传输类型
  • 帧周期:1ms
  • 帧列表:1024 项
  • 只支持 FS/LS,不支持高速 HS
  • 与 UHCI 不兼容,与 EHCI 是配套关系

七、最简一句话总结

OHCI 是 USB 1.1 的开放、智能、硬件自动调度的主机控制器,
ED + TD + 帧列表 完成全速/低速设备传输,
是 Linux/嵌入式最常见的 USB 1.1 控制器。

本文链接为:http://www.usbzh.com/article/detail-1617.html ,欢迎转载,转载请附上本文链接。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936     USB技术交流3:1031974172

0 篇笔记 写笔记

开放主机控制器接口OHCI
OHCI (Open Host Controller Interface)由Compaq,Microsoft,National Semiconductor开发,它将更多负担放在了硬件上,而软件更简单. 规格书见:http://www.o3one.org/hwdocs/usb/hcir1_0a.pdf......
OHCI / EHCI /xHCI 整体架构对比图
OHCI / EHCI / xHCI 整体架构对比图一张看懂三代 USB 主控制器进化关系┌─────────────────────────────────────────────────────────────────────────────┐# 1. OHCI (USB 1.1 全速/低速)......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!