1、参考https://forums.xilinx.com/t5/%E5%B5%8C%E5%85%A5%E5%BC%8F-%E7%A1%AC%E4%BB...
按照官方说明,copy数据速率基本为系统ddr的带宽。
2、工程 生成数据大小2048X2048 4MB 也就是一次dma数据大小,一次dma数据的大小与axi-dma核中buffer lenght registr有关,长度最大26,也就是2^26个字节,为64MB,工程中加入ila核用来调试。

3、生成bit后,导出xsa文件。
4、在vitis中应用xsa文件,新建a5_zynqmp_fsbl工程,按照官方说明,修改sfsbl_main.c,并编译,在debug文件夹中可以找到a5_zynqmp_fsbl.elf文件。

5、在petalinux环境中新建工程,参考以前的博客,直到petalinux-build。
6、修改设备树

7、重新petalinux-build。
8、在image/linux文件夹下

9、拷贝出bl31.elf boot.scr image.ub pmufw.elf system.bit system.dtb u-boot.elf 七个文件,以及vitis中生成的a5_zynqmp_fsbl.elf共8个文件,到linux_dma_test.
10、在petalinux工程中,build文件夹中拷贝bootgen.bif文件,并修改成如下

11、新建regs.init

12、生成BOOT.BIN,然后一起将BOOT.BIN image.ub和boot.scr复制到sd卡。

13、测试


14、上电开机,加载axi-dma的驱动,将3.0U盘挂在到mnt下

由以上可以看出,pl生成一张4MB的数据耗时43ms,将4MB数据由dma读缓冲区copy到内核缓冲区耗时4ms,基本接近ddr的带宽。整个链路中的带宽完全受限于U盘的存储速度。
15、U盘中的图片,大小128MB,数据正确。

审核编辑:符乾江
-
文件
+关注
关注
1文章
585浏览量
25522 -
编译
+关注
关注
0文章
680浏览量
34361
发布评论请先 登录
对于CYUSB3014芯片,哪个函数可以读取GPIF II端DMA缓冲区中缓存的实际数据量?
如何清除CYUSB3014的缓冲区数据?USB接口数据什么时候发送到电脑?
FX3 Socket缓冲区切换的最大时间是多少?
在传输DMA通道中的所有缓冲区后,DMA标志(就绪和部分)被卡住了是怎么回事?
DMA缓冲区设置为48K,如果没有写满48K,数据会自动被发送出去吗?
求助,关于3014的缓冲区设置疑问求解
请问如何在Linux中使用帧缓冲区更新epdc显示?
求助,关于使用glTexDirectVIVMap通过openGL绘制相机缓冲区内容的AXI总线错误问题求解
FreeRTOS进阶使用之流缓冲区:高效处理字节流的秘密武器
RTOS的流缓冲区机制解析

评论