我对PCI的理解 主机CPU负责通过在PCI配置空间中设置BAR寄存器来将PCI域地址分配给PCI总线上的所有其他设备
主机CPU可以将PCI地址域映射到其域(即系统域),以便主机使用主机CPU的简单加载/存储指令实现PCI总线上设备的“PCI内存事务”
问题 - > 即使系统内存即主机的主内存(实际内存)也可能映射到PCI域地址,因此当主机系统是PCI总线上的设备发起的“PCI内存事务”的目标设备时,主存储器是在没有主机CPU干预的情况下读/写的?
附加信息:我正在使用嵌入式系统,其中3个SH4处理器使用PCI总线进行通信
答案 0 :(得分:0)
PCIe世界中有两种内存映射。一种是入站映射,另一种是出站映射。
入站映射:内存空间位于设备上,主机CPU可以查找映射的内存空间。 出站映射:内存空间位于主机CPU上,设备可以查找映射的内存空间。
它们两者似乎相同,但这是一个重要的区别。使用此功能,您不需要任何其他内存副本即可在主机CPU和设备之间进行通信。
答案 1 :(得分:0)
我意识到这是一个古老的问题,但无论如何我都想回答。当您说“由PCI总线上的设备启动的事务”时,我假设您的意思是设备启动的读/写操作以访问系统内存(RAM)。这称为设备上的总线主控(也称为DMA),可以通过让主机CPU分配DMA缓冲区(即,使用dma_alloc_coherent()),并让驱动程序将此DMA地址提供给设备来完成。 。然后,是的,该设备无需主机CPU干预即可读取/写入系统内存。