Xilinx xdma使用

方法

官網下載驅動,我下載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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章