0

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

pci_device_enable()
pci_set_master()

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

4

2 回答 2

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);
于 2013-09-05T17:57:50.507 回答
0

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

于 2016-04-08T21:48:55.843 回答