You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 12:47:59