深入解析Linux EHCI主机控制器

4星 · 超过85%的资源 需积分: 35 7 下载量 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子系统和驱动开发的人来说,这是宝贵的参考资料。