USB和PCI之间的关系

kum*_*mar 7 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都是不同的总线.请澄清.

jld*_*ont 6

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

"桥接"意味着USB协议包被传送到CPU/USB端口或从CPU/USB端口传送,但通常通过PCI"总线"传送.

一个原因过可能是使用PCI总线归结为2:

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

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


Wim*_*Wim 5

它们确实是不同的总线,这就是为什么你需要它们之间的桥接,以便CPU可以通过PCI通过桥接器与USB总线上的内容进行通信.

CPU ---(front-side bus)----  PCI controller ----(PCI-bus)-+--   USB controller ----(USB-bus)--+-- USB mouse
                                                          |                                   +--- USB printer
                                                          +--   SATA controller
Run Code Online (Sandbox Code Playgroud)

  • 这是否意味着 USB 设备始终需要 PCI 控制器和 PCI 总线来运行? (2认同)
  • 从硬件角度来说:是的。从软件方面来看,所有 PCI 的东西都将在另一层为您处理,您只需要担心 USB 函数调用。 (2认同)