koh*_*hpe 7 fpga linux-device-driver linux-kernel dma pci-e
我正在研究一个DMA例程,将数据从PC传输到PCIe卡上的FPGA.我读了DMA-API.txt和LDD3 ch.15详情.但是,我无法弄清楚如何从PC到PCIe卡上的一致iomem块进行DMA传输.LDD3中用于PCI的父样本映射缓冲区,然后告诉卡进行DMA传输,但我需要PC才能执行此操作.
我已经发现了什么:
请求总线主站
pci_set_master(pdev);
Run Code Online (Sandbox Code Playgroud)设置DMA掩码
if (dma_set_mask(&(pdev->dev), DMA_BIT_MASK(32))) {
dev_err(&pdev->dev,"No suitable DMA available.\n");
goto cleanup;
}
Run Code Online (Sandbox Code Playgroud)请求DMA通道
if (request_dma(dmachannel, DRIVER_NAME)) {
dev_err(&pdev->dev,"Could not reserve DMA channel %d.\n", dmachannel);
goto cleanup;
}
Run Code Online (Sandbox Code Playgroud)映射缓冲区以进行DMA传输
dma_handle = pci_map_single(pci_dev, buffer, count, DMA_TO_DEVICE);
Run Code Online (Sandbox Code Playgroud)题:
为了让PC执行DMA传输而不是卡,我该怎么办?
谢谢你的帮助!
首先感谢您的回复.也许我应该更准确地提出我的问题:
谢谢你的耐心.