驱动下载地址
https://github.com/Xilinx/dma_ip_drivers
1.安装驱动
cd ~/Downloads/dma_ip_drivers-master/XDMA/linux-kernel/xdma
make
cd ~/Downloads/dma_ip_drivers-master/XDMA/linux-kernel/tools
make
先准备好fpga的bit文件,下载到fpga中。需要重启jetson识别。
此时用到的pcie子卡是K7,pcie×8,DDR3.
- 加载驱动
cd ~/Downloads/dma_ip_drivers-master/XDMA/linux-kernel/xdma
sudo insmod xdma.ko
2.再tools文件夹下,进行读写测试。read/write
cd ~/Downloads/dma_ip_drivers-master/XDMA/linux-kernel/tools
sudo ./dma_from_device -d /dev/xdma0_c2h_0 -f ./test2.bin -s 4096 -a 0 -c 2
sudo ./dma_to_device -d /dev/xdma0_h2c_0 -f ./test2.bin -s 4096 -a 0 -c 2
-d:device 设备.
-f:file 文件
-s:size 大小
-a:addr 起始地址
-c:count
这两个操作分别是从板卡读 4096 Bytes 数据到文件 test.bin 以及从 test.bin 读出4096 Bytes 数据发送给板卡。
测试2
fpga:xc7vx690t,pcie×8,ddr2带宽512MByte
2023.4.21
将程序固化到fpga后,测试结果。
linux加载/卸载驱动有两种方法。
1.modprobe
注:在使用这个命令加载模块前先使用depmod -a命令生成modules.dep文件,该文件位于/lib/modules/$(uname -r)目录下;
modprobe命令智能地向内核中加载模块或者从内核中移除模块,可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的依赖关系,决定要载入哪些模块。若在载入过程中出错,modprobe会卸载整组的模块。
载入模块的命令:
(1) 载入指定的模块:modprobe drv.ko
(2) 载入全部模块:modprobe -a
卸载模块的命令:modprobe -r drv.ko
modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。
- insmod/rmmod
insmod需要指定模块的绝对路径,和modprobe不同,insmod并且不会把载入模块的依赖模块也载入进来。
用法:insmod drv.ko
rmmod只需要模块的名字即可实现模块的卸载,同样也不会把待卸载模块的依赖模块进行卸载。
用法:rmmod drv.ko
lsmod:显示已载入系统的模块