码迷,mamicode.com
首页 > 其他好文 > 详细

DMA的学习——数据通路的问题?

时间:2018-11-25 17:46:35      阅读:459      评论:0      收藏:0      [点我收藏+]

标签:int   initial   art   类型转换   解决   and   分享   compare   http   

解决:

  dma应该只有一个硬件设备(固定映射),然后一个dma顺序完成不同的写任务。

  bram ctrl的映射地址是edit addr的那个,但是不能直接使,要用宏定义的那个数(后面多了一个U,我也不知道为啥)。找自己的bram ctrl的base宏定义是什么名字要去xparameters.h找,看名字找,好像没有表格。。。

  路径:bsp的include里面

重要!记得类型转换成(int *)!!!!!!!!!!!!!!!!!!!!!!

static int * Src = (int*)XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR;

技术分享图片

 

 

  看源码有点乱,dma怎么实现的内外存?内存就是用数组表示就行,外存的地址怎么找的?

1.好像是用DmaCmd的bd结构体先赋值?

  问题是dma怎么获得的外存地址?

    DmaCmd.ChanCtrl.SrcBurstSize = 4;//设置cmd参数
    DmaCmd.ChanCtrl.SrcBurstLen = 4;
    DmaCmd.ChanCtrl.SrcInc = 1;
    DmaCmd.ChanCtrl.DstBurstSize = 4;
    DmaCmd.ChanCtrl.DstBurstLen = 4;
    DmaCmd.ChanCtrl.DstInc = 1;
    DmaCmd.BD.SrcAddr = (u32) Src;//
    DmaCmd.BD.DstAddr = (u32) Dst;
    DmaCmd.BD.Length = DMA_LENGTH * sizeof(int);

  写dma的时候只初始化了src的值,dst清零了,两个空间都是在内存里:

            /* Initialize source 给源数据赋值*/
            for (Index = 0; Index < DMA_LENGTH; Index++)
                Src[Index] = DMA_LENGTH - Index;

            /* Clear destination 清空结果数组*/
            for (Index = 0; Index < DMA_LENGTH; Index++)
                Dst[Index] = 0;         

  dma回读的代码如下:

   int *Src;//局部变量
    int *Dst;

    Src = (int *)DmaCmd->BD.SrcAddr;//重新赋值?src不是全局变量吗?为什么不直接使?
    Dst = (int *)DmaCmd->BD.DstAddr;

/* compare the src and dst buffer */ for (Index = 0; Index < DMA_LENGTH; Index++) { if ((Src[Index] != Dst[Index]) || (Dst[Index] != DMA_LENGTH - Index)) { Status = -XST_FAILURE; } }

 2.助教的示例中,将src的值变为板上地址?

在示例工程的源代码中,修改第 121行代码 为
static int * Src = (int*)XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR;
即可实现内存与 PL缓存之间的数据传输。

  板上地址获得:看platform文件,直接抄就可以吗?是不是已经做了虚拟存储mma了?

 

3.不用dma,直接往bram的地址写也可以,用自带的out函数

  https://blog.csdn.net/NarutoInspire/article/details/79401559?utm_source=blogxgwz7

DMA的学习——数据通路的问题?

标签:int   initial   art   类型转换   解决   and   分享   compare   http   

原文地址:https://www.cnblogs.com/iwanna/p/10011717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!