【问题标题】:Relation between USB and PCIUSB和PCI之间的关系
【发布时间】:2009-11-12 16:24:07
【问题描述】:

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

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

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

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

【问题讨论】:

标签: hardware linux-kernel


【解决方案1】:

它们确实是不同的总线,这就是为什么您需要在它们之间建立一个,以便 CPU 可以通过 PCI 通过桥与 USB 总线上的东西进行通信。

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

【讨论】:

  • 这是否意味着 USB 设备始终需要 PCI 控制器和 pci 总线才能运行??
  • 从硬件的角度来看:是的。在软件方面,所有PCI的东西都会在另一层为你处理,你只需要担心USB函数调用。
  • 爱你的 ASCII 艺术!!有这方面的资料吗?此外,最好将其垂直放置,以便无需滚动即可查看。
【解决方案2】:

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

“桥接”是指 USB 协议数据包传入/传出 CPU/USB 端口,但通常通过 PCI“总线”。

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

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

注意:在命名硬件芯片时经常会出现混淆。出于高效(读取 $$)的原因,拥有多个功能的芯片是很常见的。并不是因为一个芯片的主要功能是“PCI桥”,就必须限制它进行“PCI桥接”。

【讨论】:

  • hmm....但是为什么 PCI 控制器需要担心 USB 控制器/设备。 PCI 控制器用于 pci 设备 USB 控制器用于 USB 设备 为什么需要桥接 USB 接口和 PCI 接口? USB比PCI快(我的理解)通过将USB连接到PCI,我们可能会降低USB的速度......我错了??
  • 换个角度看:板上的硬件有很多功能,包括(但可能不限于)PCI桥接、PCI-USB桥接等。
  • 一个USB 控制器实际上同时也是一个PCI 设备...! (参见我在另一个答案中的图片:它连接到左侧的 PCI,作为它们的从属设备,并且是右侧 USB 总线的主控设备)
  • @Wim:从包装的角度来看是的,但从功能的角度来看,PCI 设备与 USB 是不同的东西设备。
  • @jldupont:“包装”这个词确实澄清了我的疑问,谢谢!
【解决方案3】:

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

【讨论】:

  • " USB 不直接与 CPU 通信,而是首先通过 PCI 总线。"这是否意味着我们的机器中不能“只有 USB 控制器”。为了使用 USB 设备,是否总是必须拥有 PCI 总线。我很困惑?
  • 可能会有这样的实现,但我不确定。
【解决方案4】:

两个非常简单的流程图:

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

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

或者,更好的说法:

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

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

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

【讨论】:

  • 看来你是对的! en.wikipedia.org/wiki/Universal_Serial_Bus 我在这里没有看到任何关于 PCI 的提及 :(
  • @kumar,PCI 在这里有点偶然......它也可能是许多其他架构。我见过基于 MCA 构建的原始 USB 卡。
猜你喜欢
  • 2018-01-04
  • 1970-01-01
  • 2011-09-06
  • 2016-06-10
  • 2013-02-03
  • 2019-07-10
  • 2017-04-04
  • 2010-12-12
  • 1970-01-01
相关资源
最近更新 更多