项目地址https://github.com/bperez77/xilinx_axidma
xilinx_axidma是一个针对Xilinx AXI DMA和VDMA IP块的无拷贝、高带宽Linux驱动和用户空间接口库。
除了可以独立编译外,还可以使用petalinux环境完成编译,此种编译方式的最大好处就是可以将编译好的驱动内核打包进系统包中。
编译参考https://github.com/bperez77/xilinx_axidma/issues/24 ,有部分改动。编译步骤如下:
1,克隆xilinx_axidma源代码
git clone https://github.com/bperez77/xilinx_axidma.git
2,在当前petalinux项目中,创建dma驱动模块“xilinx-axidma”
petalinux-create -t modules -n xilinx-axidma --enable
3,拷贝xilinx-axidma源代码到新建模块“xilinx-axidma”目录下
cp -a driver/*.c driver/*.h include/axidma_ioctl.h <path/to/PetaLinux/project>/project-spec/meta-user/recipes-modules/xilinx-axidma/files
4,移除模块“xilinx-axidma”自动创建的源程序文件“xilinx-axidma.c”
rm <path/to/PetaLinux/project>/project-spec/meta-user/recipes-modules/xilinx-axidma/files/xilinx-axidma.c
5,修改“Makefile”文件
vim <path/to/PetaLinux/project>/project-spec/meta-user/recipes-modules/xilinx-axidma/files/Makefile
使用如下内容替换后保存:
DRIVER_NAME = xilinx-axidma $(DRIVER_NAME)-objs = axi_dma.o axidma_chrdev.o axidma_dma.o axidma_of.o obj-m := $(DRIVER_NAME).o MY_CFLAGS += -g -DDEBUG ccflags-y += ${MY_CFLAGS} SRC := $(shell pwd) all: $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install: $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install clean: rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c rm -f Module.markers Module.symvers modules.order rm -rf .tmp_versions Modules.symvers
6,修改“xilinx-axidma.bb”文件,将源码文件添加至编译列表
vim <path/to/PetaLinux/project>/project-spec/meta-user/recipes-modules/xilinx-axidma/xilinx-axidma.bb
修改SRC_URI参数,修改内容如下:
SRC_URI = "file://Makefile \ file://axi_dma.c \ file://axidma_chrdev.c \ file://axidma_dma.c \ file://axidma_of.c \ file://axidma.h \ file://axidma_ioctl.h \ file://COPYING \ "
7,编译驱动
petalinux-build -c xilinx-axidma
驱动保存路径为: /lib/modules/5.4.0-xilinx-v2020.2/extra/xilinx-axidma.ko
浙公网安备 33010602011771号