深入解析Linux EHCI主机控制器
4星 · 超过85%的资源 需积分: 35 13 浏览量
更新于2024-07-25
收藏 460KB PDF 举报
"Linux那些事儿之我是EHCI主机控制器.pdf - Linux学习文档,深入解析Linux中的EHCI主机控制器"
本文档是关于Linux操作系统中EHCI(Enhanced Host Controller Interface,增强型USB主机控制器接口)的深度解析,作者通过引子引入话题,旨在探讨Linux内核对USB 2.0高速设备的支持机制。文档主要分为几个部分,包括接口体系、驱动程序的匹配和探测过程,以及数据结构等关键知识点。
1. **接口体系**
EHCI是USB 2.0规范的一部分,设计用于高速(High-Speed)USB设备的控制。在USB 2.0标准中,定义了三种传输速率:低速(Low-Speed, LS)、全速(Full-Speed, FS)和高速(High-Speed, HS)。EHCI仅处理高速设备,对于全速和低速设备,则需要配合其他类型的主机控制器,如UHCI(Universal Host Controller Interface)或OHCI(Open Host Controller Interface)。
2. **套路 - pcimatch和probe**
在Linux内核中,设备驱动的加载通常涉及到`pcimatch`和`probe`两个步骤。`pcimatch`函数负责检查PCI设备ID,确保设备符合驱动程序的支持范围。`probe`函数则在匹配成功后执行,初始化设备并建立必要的数据结构。
3. **数据结构 of EHCI driver and device**
EHCI驱动程序与设备交互依赖于一系列内核数据结构,这些结构存储了设备的状态、队列头部(Queue Head, QH)和事务翻译单元(Transaction Translator, TT)等信息。QH用于管理USB事务,TT则处理HS设备与FS/LS设备之间的通信转换。
4. **2008年的这一场雪**
这可能是指文档创作的时间背景,同时,作者以诗歌形式表达了对同行的敬意,也表明了写作的动机和目的。
5. **EHCI与Companion HC**
当高速、全速或低速设备插入到根集线器(Root Hub)的端口时,EHCI和其同伴控制器(如UHCI)会协同工作。全速和低速设备由同伴控制器管理,而高速设备由EHCI直接处理。如果设备连接到USB 2.0 hub(非根集线器),EHCI会通过分裂事务和事务翻译来支持全速和低速设备。
6. **Routing机制**
插入设备时,路由是关键步骤。所有根集线器端口的设备连接首先需要经过路由判断,决定由哪个控制器来处理。EHCI会检测设备的速度,并根据需要与UHCI或其他控制器协作。
这篇文档详细介绍了Linux内核中EHCI如何处理USB 2.0高速设备,包括与全速和低速设备的协同工作方式,以及驱动程序的核心功能和数据结构。对于想要深入理解Linux USB子系统和驱动开发的人来说,这是宝贵的参考资料。
2018-06-29 上传
228 浏览量
2024-04-08 上传
2024-11-09 上传
389 浏览量
2024-10-26 上传
2024-11-09 上传
fhl2013
- 粉丝: 0
- 资源: 10