USB和PCI之间的关系

时间:2009-11-12 16:24:07

标签: hardware linux-kernel

我对linux设备驱动程序书中的以下语句感到困惑。 http://www.linuxdriver.co.il/ldd3/

  

13.2。 USB和Sysfs为了帮助理解这个长设备路径意味着什么,我们   描述内核如何标记USB   设备。第一个USB设备是   根集线器。这是USB控制器,   通常包含在PCI设备中。该   控制器是如此命名,因为它   控制整个USB总线连接   它。控制器是一座桥梁   在PCI总线和USB总线之间,   以及作为第一个USB设备   在那辆公共汽车上。

特别声明“控制器是PCI总线和USB总线之间的桥梁”

是这样吗?我的印象是PCI和USB都是不同的总线。 请澄清。

4 个答案:

答案 0 :(得分:6)

上面提到的“控制器”是一块硬件。它具有“桥接”USB接口和PCI接口之间通信的功能。

通过“桥接”意味着USB协议数据包通过PCI / USB端口传输,但通常通过PCI“总线”传输。

使用通过PCI总线的原因可能归结为2:

  • 1接口优于2(成本和复杂性)
  • USB速度比PCI速度慢得多(当然是PCI-Express):将USB协议数据包“封装”到PCI上以便穿梭于主板周围很容易。

注意:在命名硬件芯片方面经常会出现混乱。出于有效(读取$$)的原因,拥有多个功能的芯片是很常见的。这不是因为芯片的主要功能是“PCI桥接”,它必须限于执行“PCI桥接”。

答案 1 :(得分:5)

它们确实是不同的总线,这就是为什么你需要一个网桥,这样CPU就可以通过网桥与USB总线上的东西通信。

CPU ---(front-side bus)----  PCI controller ----(PCI-bus)-+--   USB controller ----(USB-bus)--+-- USB mouse
                                                          |                                   +--- USB printer
                                                          +--   SATA controller

答案 2 :(得分:2)

USB控制器同时通信USB和PCI。 USB不直接与CPU通信,而是首先与PCI总线通信。

答案 3 :(得分:2)

两个非常简单的流程图:

用户空间 - >内核 - > PCI - > USB控制器 - > USB设备

USB设备 - > USB控制器 - > PCI - >内核 - >用户空间

或者,更好地说:

用户空间 - >内核 - > [CARD_ARCHITECTURE] - > USB控制器 - > USB设备

USB设备 - > USB控制器 - > [CARD_ARCHITECTURE] - >内核 - >用户空间

......如你所见,PCI是偶然的。你在写设备驱动程序吗?