2025年米联客——DMA 闭环测试 学习心得

米联客——DMA 闭环测试 学习心得刚学了米联客的 DMA 闭环测试这一章 这里记录一下 sdk 的理解 主函数 int main void init intr sys axi dma test 主函数很简单就两个子函数 首先来看一下 init intr sys int init intr sys void

大家好,我是讯享网,很高兴认识大家。

刚学了米联客的DMA闭环测试这一章,这里记录一下sdk的理解

/*………………主函数………………*/ int main(void) { init_intr_sys(); axi_dma_test(); }

讯享网

主函数很简单就两个子函数

首先来看一下 init_intr_sys();

讯享网int init_intr_sys(void) { DMA_Intr_Init(&AxiDma,0);//initial interrupt system Init_Intr_System(&Intc); // initial DMA interrupt system Setup_Intr_Exception(&Intc); DMA_Setup_Intr_System(&Intc,&AxiDma,TX_INTR_ID,RX_INTR_ID);//setup dma interrpt system DMA_Intr_Enable(&Intc,&AxiDma); }

这个函数很简单,就是做一些初始化的工作。

前两个函数,分别初始化DMA和系统中断。这两个函数结构都很相似这里就不再解释。(不过在这里有一个疑问,就是前两个函数都是有返回值的,return XST_SUCCESS;return XST_FAILURE;那么它是怎么判断的?如果返回失败串口会打印出来但是程序还是会向下运行?)

第三个是注册中断异常处理程序

第四个是建立DMA中断系统  在这里判断了是否TX RX在工作会返回一个flag即在测试函数中的Txdone 和Rxdone

第五个使能DMA中断  里面只有四个函数两个断开中断、两个使能中断(rx tx)

接下来就是主函数中的第二个子函数DMA的测试函数


讯享网

先贴一个关于DDR3的博客,讲的很详细https://blog.csdn.net/hanxuexiaoma/article/details/

首先,测试函数初始化参数有  TX RX 标记位

 然后进入一个大的for循环这个循环控制的是测试次数,并且每次初值加一。

   以第一次循环为例,初值位0x0c。函数先将数据包即0x0c--0x862以for循环的形式存入发送缓存区。之后用Xil_DCacheFlushRange 将数据刷进DDR中。先启动一次读XAxiDma_SimpleTransfer,在启动一次写XAxiDma_SimpleTransfer。在这里将会进入中断并将TX RX标志位置1,等待收发完成。完成后计数器加一,并将标志位置0。最后检查数据是否一致。

    

 

 

 

小讯
上一篇 2025-02-21 09:01
下一篇 2025-03-22 20:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39442.html