DMA引擎在PowerPC linux上没有正确响应

时间:2013-08-04 18:59:23

标签: linux powerpc dma pci-e

DMA引擎在PowerPC linux上没有正确响应。当我的PCIe设备向主机发送读/写请求时,会发生超时。我在较低的地址范围内有1GB的RAM。 我调用了以下函数

pci_device_enable()
pci_set_master()

DMA内存在0x0F00_0000分配,并且能够从主机的用户空间访问此内存。我该如何调试此问题。可能是什么原因?

2 个答案:

答案 0 :(得分:0)

请检查PCIe设备是否使用了正确的DMA存储器地址。您只提到一个地址,但用户和内核空间中DMA存储器的地址将不同于从PCIe总线看到的DMA存储器的地址。

您没有说明如何分配DMA内存,有几种不同的方法。 例如,如果使用以下调用来获取DMA内存,则dma_addr_t是地址 在PCIe设备中使用。

void *pci_alloc_consistent(struct pci_dev *dev, size_t size,
               dma_addr_t *dma_handle);

答案 1 :(得分:0)

检查是否定义了内核配置的CONFIG_FSL_DMA部分以编译DMA驱动程序。还要确保您的设备树有一个片上DMA设备的条目。