文章导读
各位编程爱好者,你是否曾好奇过,USB设备是如何与电脑主机进行通信的呢?今天,我们就来揭开USB主机控制器(Host Controller)的神秘面纱,一起探讨其工作原理和设计思想。正文部分
首先,让我们来认识一下USB主机控制器。它就像是USB设备的总指挥,负责协调和管理所有USB设备的通信。在USB的世界里,没有主机控制器,设备就无法主动发送数据。
什么是USB主机控制器?
USB主机控制器,顾名思义,就是USB设备和主机的接口。一个主机可以支持多个主机控制器,它们可能来自不同的厂商。那么,USB主机控制器具体是做什么的呢?简单来说,它就是控制所有USB设备的通信。
CPU会将要处理的事情分配给主机控制器,然后自己去处理其他事情。主机控制器会替CPU完成剩下的工作,并在事情完成后通知CPU。这样,CPU就可以专注于更重要的任务,而不必担心每个设备的通信细节。
主机控制器Driver的工作
为了让主机控制器正常工作,我们需要编写主机控制器Driver。这个过程主要包括以下几个步骤:
- 按照主机控制器的要求组织结构体
- 将结构体在合适的时间、放在合适的地方
- 触发操作
- 等待完成信号
关键数据结构
关键数据结构关系如下(此处省略图片):
系统架构
EHCI负责处理高速设备,OHCI负责处理全速/低速设备。当USB设备插入时,系统会根据设备类型选择合适的控制器进行处理。
端口逻辑
在端口逻辑方面,我们需要特别注意当前端口属于哪个控制器。例如,当端口被OHCI拥有时,插入高速设备就无法识别。因此,在没有插入设备时,不应该让OHCI拥有这个端口。
usb_submit_urb
usb_submit_urb处理流程如下(此处省略图片):
小结与拓展
通过本文的学习,我们深入了解了USB主机控制器的工作原理和设计思想。希望这篇文章能帮助大家更好地理解USB技术。接下来,我们可以进一步探讨USB设备驱动程序的开发、USB协议等内容。
我是林译川,来自新派编程网(www.xjpbg.com)。如果你对编程技术有任何疑问,欢迎关注我们的网站,获取更多精彩内容。
