我对linux设备驱动程序书中的以下语句感到困惑。 http://www.linuxdriver.co.il/ldd3/
13.2。 USB和Sysfs为了帮助理解这个长设备路径意味着什么,我们 描述内核如何标记USB 设备。第一个USB设备是 根集线器。这是USB控制器, 通常包含在PCI设备中。该 控制器是如此命名,因为它 控制整个USB总线连接 它。控制器是一座桥梁 在PCI总线和USB总线之间, 以及作为第一个USB设备 在那辆公共汽车上。
特别声明“控制器是PCI总线和USB总线之间的桥梁”
是这样吗?我的印象是PCI和USB都是不同的总线。 请澄清。
答案 0 :(得分:6)
上面提到的“控制器”是一块硬件。它具有“桥接”USB接口和PCI接口之间通信的功能。
通过“桥接”意味着USB协议数据包通过PCI / USB端口传输,但通常通过PCI“总线”传输。
使用跳通过PCI总线的原因可能归结为2:
注意:在命名硬件芯片方面经常会出现混乱。出于有效(读取$$)的原因,拥有多个功能的芯片是很常见的。这不是因为芯片的主要功能是“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是偶然的。你在写设备驱动程序吗?