2013-10-27 53 views
2

我知道PCI和PCIe设备可以由CPU(通过BIOS或OS中的代码)配置以响应某些物理存储器地址,方法是写入特定区域该设备的配置空间。
事实上,linux内核有这样做是考虑到很多的设备的要求(内存对齐,DMA能力等)相当复杂的算法。CPU如何知道PCI地址空间

眼看软件似乎是在是否,何时,何处该内存映射,我的问题是控制:如何能在物理内存块软件控制映射的?

此配置后,PCI设备就知道给定的地址范围做出反应,但如何在CPU知道它应该在PCI总线上对于刚刚动态确定这些具体地址?

+0

您可以加入一个链接从Linux内核源(Web视图),该算法? – n611x007

回答

3

北桥被编程为具有将被路由到存储器控制器(一个或多个)中的地址范围(或多个)。 所有其他地址转到外部总线。

+0

它不是连续的吗?配置软件是否必须为每个phys填充BAR。内存范围? – Pyjong

+0

@Pyjong所有这些访问都去公共汽车;设备本身解码地址。 –

+0

好的,设备响应设置在他们的BAR中的地址。 – Pyjong