主机系统内存映射到PCI域地址

时间:2014-07-03 05:31:26

标签: pci memory-mapping

  1. 我对PCI的理解 主机CPU负责通过在PCI配置空间中设置BAR寄存器来将PCI域地址分配给PCI总线上的所有其他设备

    主机CPU可以将PCI地址域映射到其域(即系统域),以便主机使用主机CPU的简单加载/存储指令实现PCI总线上设备的“PCI内存事务”

  2. 问题 - > 即使系统内存即主机的主内存(实际内存)也可能映射到PCI域地址,因此当主机系统是PCI总线上的设备发起的“PCI内存事务”的目标设备时,主存储器是在没有主机CPU干预的情况下读/写的?

  3. 附加信息:我正在使用嵌入式系统,其中3个SH4处理器使用PCI总线进行通信

2 个答案:

答案 0 :(得分:0)

PCIe世界中有两种内存映射。一种是入站映射,另一种是出站映射。

入站映射:内存空间位于设备上,主机CPU可以查找映射的内存空间。 出站映射:内存空间位于主机CPU上,设备可以查找映射的内存空间。

它们两者似乎相同,但这是一个重要的区别。使用此功能,您不需要任何其他内存副本即可在主机CPU和设备之间进行通信。

答案 1 :(得分:0)

我意识到这是一个古老的问题,但无论如何我都想回答。当您说“由PCI总线上的设备启动的事务”时,我假设您的意思是设备启动的读/写操作以访问系统内存(RAM)。这称为设备上的总线主控(也称为DMA),可以通过让主机CPU分配DMA缓冲区(即,使用dma_alloc_coherent()),并让驱动程序将此DMA地址提供给设备来完成。 。然后,是的,该设备无需主机CPU干预即可读取/写入系统内存。