ZYNQ petalinux下AXI_DMA使用

一,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设备目录,就说明驱动加载成功。

Guess you like

Origin blog.csdn.net/wangjie36/article/details/119526636