一,vivado配置:
二,在sdk裸机进行验证,参考:https://blog.csdn.net/wangjie36/article/details/105038670
三,petalinux下配置参数:
1,新建petalinux工程:petalinux-create --type project --template zynq --name axi_dma
2,导入硬件:petalinux-config --get-hw-description ../linux_base.sdk 配置为SD卡启动
(1)配置界面misc/config System Configuration,取消Auto Config Settings --->Device tree autoconfig选项
(2)配置启动方式:自选EMMC或flash或sd卡启动
BOOT.BIN启动方式:
Subsystem AUTO Hardware Settings --->
# Advanced bootable images storage Settings --->
# boot image settings --->
# image storage media ---> 自选
uimage.ub启动:
#Subsystem AUTO Hardware Settings --->
# Advanced bootable images storage Settings --->
# kernel image settings --->
# image storage media ---> 自选
(3)配置petalinxu内核目录:并填入路径
3,在目录下新建DMA驱动模块命令:petalinux-create -t modules -n xilinx-axidma --enable
然后可以在ax_peta---->project-spec---->meta-user---->recipes-modules中找到新建的DMA驱动模块文件夹xilinx-axidma
4,下载DMA官方驱动文件,链接如下:(1条消息) xilinx_axidma.zip-Linux文档类资源-CSDN下载
复制所下载文件目录下源文件目录driver下的所有.c和.h文件,以及include / axidma_ioctl.h复制到驱动模块文件夹.../axi_dma/project-spec/meta-user/recipes-modules/xilinx-axidma/files下,并删除这个文件夹下本来就有的xilinx-axidma.c原始文件。
5,修改原来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
6,进入打开.../axi_dma/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-config -c device-tree
进入../axi_dma/components/plnx_workspace/device-tree/device-tree-generation目录下,修改设备树文件pl.dtsi,dma-channel 40400030的xlnx,device-id 0x0改为0x1在里面添加:
axidma_chrdev: axidma_chrdev@0 {
compatible = "xlnx,axidma-chrdev";
dmas = <&axi_dma_0 0 &axi_dma_0 1>;
dma-names = "tx_channel", "rx_channel";
};
改完如图所示:
8,配置AXI_DMA驱动:petalinux-config -c kernel
选择Kernel Features---->Maximum count of the CMA areas 改为30
9, petalinux-build编译内核启动文件image.ub,然后生成BOOT.BIN执行:
petalinux-package --boot --fsbl zynq_fsbl.elf --fpga design_1_wrapper.bit --u-boot
10,进入 /lib/modules/4.9.0-xilinx-v2017.4/extra中,将xilinx-axidma.ko复制到开发板:
然后执行insmod xilinx-axidma.ko,这时候ls /de/下能找到axidma设备目录,就说明驱动加载成功。