|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
测试环境是ubuntu16.04(内核好像是4.0.4的) + VC707. PCIE DMA模式是主总线模式。现在发现Write DMA(form Device)无法写到内存(我在应用程序中buf中看到还是初始值),Read DMA操作时PC返回的是CPLK,也就是访问的内存是locked的。
我是如下映射的:
gReadBuffer = dma_alloc_coherent(&(gDev->dev), BUF_SIZE, &gReadHWAddr,GFP_KERNEL); // 写DMA的地址
gWriteBuffer = dma_alloc_coherent(&(gDev->dev), BUF_SIZE, &gWriteHWAddr,GFP_KERNEL);// 读DMA的地址
流式DMA我也试过,还是同样的问题:
virt_addr = kmalloc(count, GFP_KERNEL);
// 申请内存连续的虚拟空间
dma_write_addr = pci_map_single(gDev, virt_addr, count, PCI_DMA_FROMDEVICE);
... // DMA操作
pci_unmap_single(gDev, dma_read_addr, count, PCI_DMA_TODEVICE);
请问,这是哪出问题了? |
|