我正在研究在 PCI/PCIe 机箱中有多个相同(National Instruments)PCIe DAQ 模块的情况,这些模块通过单机箱控制器或双机箱控制器连接。在最坏的情况下,总线上可能有 8 个相同的模块。
我一直相信 PCI 枚举是非确定性的 - 即不能保证从引导到引导,PCI 总线将以相同的顺序枚举。这是真的?
这是否也意味着 PCI(e) 总线/设备/功能值可以更改,引导到引导,即使物理硬件布局没有?
简而言之,我知道初始 PCI 枚举是由 BIOS 完成的,并且引导操作系统(在我的情况下为 RHEL 6)使用此枚举列表来为已识别的硬件提供服务。此列表是否始终包含按相同顺序找到的设备?
这是Red Hat Bugzilla中的一个提示,暗示 BIOS 顺序始终相同。
请注意,我(尚未)谈论操作系统处理设备的顺序(例如,在 Linux 中,确定 /dev/ 名称顺序)。
谢谢!
有人可以澄清一下 PCI/PCIe 总线上的内存和 I/O 地址之间的区别吗?
我知道 I/O 地址是 32 位的,限制在 0 到 4GB 的范围内,并且不映射到系统内存 (RAM),并且内存地址是 32 位或 64 位。
我的印象是内存寻址必须映射到可用的 RAM 上,这是真的吗?如果 PCI 设备希望将数据传输到内存地址,则该地址必须存在于实际系统 RAM(并在 PCI 配置期间分配)而不是虚拟内存中。
因此,如果 PCI 设备一次只需要传输少量数据,而将其放入 RAM 或使用 DMA 没有优势,那么 I/O 寻址就可以了(例如在 PCI 卡上实现的并行端口) .
为什么我一直读到 PCI/PCIe I/O 寻址已被弃用,而取而代之的是内存寻址?
谢谢!