方法
官網下載驅動,我下載2017.4版本的,當時還有18.2版本,由於vivado是17.4,實測發現windows下,18.2版本的驅動無法操作17.4的FPGA,切換到老版本即可。ubuntu 16.04.4編譯17.4驅動需要修改代碼,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)
dbg_init("Enabling MSI-X\n");
rc = pci_alloc_irq_vectors(pdev, req_nvec, req_nvec,
PCI_IRQ_MSIX);
#else
int i;
dbg_init("Enabling MSI-X\n");
for (i = 0; i < req_nvec; i++)
xdev->entry[i].entry = i;
rc = pci_enable_msix(pdev, xdev->entry, req_nvec);
#endif
測試,PCIe2.0x4,帶寬位1.5GB/s,達到滿速狀態,
jj@jj-pc:~/xdma/tests$ sudo ./dma_to_device -d /dev/xdma0_h2c_0 -a 0 -s 0x400000 -c 16 -v
sscanf() = 1, value = 0x00000000
sscanf() = 1, value = 0x00400000
sscanf() = 1, value = 0x00000010
device = /dev/xdma0_h2c_0, address = 0x00000000, size = 0x00400000, offset = 0x00000000, count = 16
host memory buffer = 0x7f03545a4000
CLOCK_MONOTONIC reports 0.002827977 seconds (total) for last transfer of 4194304 bytes
jj@jj-pc:~/xdma/tests$ sudo ./dma_from_device -d /dev/xdma0_c2h_0 -a 0 -s 0x400000 -c 16 -v
sscanf() = 1, value = 0x00000000
sscanf() = 1, value = 0x00400000
sscanf() = 1, value = 0x00000010
device = /dev/xdma0_c2h_0, address = 0x00000000, size = 0x00400000, offset = 0x00000000, count = 16
host memory buffer = 0x7f8b21ff7000
CLOCK_MONOTONIC reports 0.003003013 seconds (total) for last transfer of 4194304 bytes