DMA传输大数量数据至BRAM控制器时陷入循环卡死的问题求助
DMA传输大数量数据至BRAM控制器时陷入循环卡死的问题求助
我最近在做DMA传输数据到块存储器(BRAM)控制器的功能,碰到了个头疼的问题:当我调用 MoveDataDMA(source6, destination6, 65536); 尝试传输65536个数据时,程序直接卡在了 while ((Done==0) & (Error==0)); 这个循环里,完全没反应。但如果把传输长度改成2048,调用 MoveDataDMA(source6, destination6, 2048);,就能正常跑完传输流程,一点问题都没有。
下面是我用到的关键代码片段:
DMA完成回调函数
void DmaDoneHandler(unsigned int Channel, XDmaPs_Cmd *DmaCmd, void *CallbackRef) { /* done handler */ Done = 1; }
MoveDataDMA函数开头
int MoveDataDMA(u32 * source,
我现在实在摸不着头脑,有没有大佬能帮我分析下可能的原因?比如是不是DMA通道对单次传输的长度有限制?或者BRAM的地址范围配置没覆盖到这么大数据量的传输区域?还是回调函数的注册或者触发逻辑哪里有疏漏?
内容来源于stack exchange
相关产品推荐
相关产品推荐

