本人是个小白,如果有什么问题请各位大佬多指点一下,谢谢!

参考资料:

米联客教程:S03_CH01_AXI_DMA_LOOP环路测试

平台:ZedBoard

vivado版本:2019.1

petalinux版本:2019.1

  1. vivado方面的具体配置请参考米联客的教程,我这里就不详细介绍了。

放一张我已经做好的整体图片供参考

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 在这里我要说个细节,就是我在参考教程时,因为我没有加OLED,所以开始的时候我将GP0给勾掉了,结果在petalinux-build时报错,所以在这里我们切记不要将GP0勾掉。

原因时:AXI DMA的数据传输虽然是用AXI-HP的接口,但是AXI DMA的配置接口S_AXI_Lite用的是AXI-GP接口,所以AXI-GP接口不能擅自去掉。

    2. 将生成的hdf文件拷贝到Ubuntu下,准备进行Linux系统的移植。

    我之前的博客都是基于zynqMP的,与zynq有一些差别

    (1) 创建工程

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

    (2) 导入hdf文件

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

    (3) 修改petalinux-config->DTG Settings->MACHINE_NAME为zedboard

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

其余的配置都可以默认即可,因为默认情况下dma相关的驱动是被选中的

3. 创建模块,将驱动放入内核当中

驱动下载地址:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842418/Linux+DMA+From+User+Space?preview=/18842418/18848721/dma-proxy.zip

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 

4. 然后修改module下面的文件

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 

 

5. 修改设备树

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 

6. 然后编译程序,打包成BIN文件。

在这里我们要注意在打包BIN文件时,由于是zynq所以没有了pmufw。

由于我已经生成过了,所以下图中我在后面加了--force。

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 

7. 然后将BOOT.BIN和image.ub复制到SD卡中

8. 启动板卡后,安装驱动

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 

9. 将dma-proxy对应的测试程序,通过sdk进行编译,生产elf文件也放入到sd卡中。在安装完驱动,将sd卡挂载上,然后运行其程序。如下图所示,表示测试成功。

ZYNQ7000平台 - Linux环境下pl-ps使用AXI-DMA进行数据传输

 

相关文章: