群内的大神们:
你们好! 我用的是基于8127芯片, ipnc-rdk 3.8 ,在m3vpss核上用到EDMA时遇到了问题,具体用到的EDMA接口函数如下:
void DM81XX_EDMA3_setParams(int chId, int dmaQueue, unsigned int srcAddr, unsigned int dstAddr, unsigned short edmaWidth,
unsigned short edmaHeight, short srcLineOffset, short dstLineOffset);
void DM81XX_EDMA3_triggerTransfer(int chId);
由于需要,我在操作每帧数据时大概会调用上述接口130次左右,我使用的是chId=12, dmaQueue=0,
能够正常运行一段时间(从10分钟到1个小时不等), 随后就卡在这个地方了,我想咨询的是:
1)这个EDMA调用频率不能太频繁吗?大概什么样的频率能正常工作?
2)我在m3vpss中使用,chId这个值的范围是多少的? 还是dmaQueue的范围是多少呢?
3)如果EDMA不能调用太频繁,在m3vpss核上进行内存拷贝,我还能采取什么方式能比较快的完成(memcpy太慢)?
先谢谢啦,困扰了好多天,请指点…
Chris Meng:
Zhang Jensen,
建议你阅读一下DM814x TRM里面EDMA的相关章节。理论上调用edma是不应该会不结束的,你可以检查一下edma的error寄存器,看是否有出错。
如果你修改的edma的参数不是很多,建议你仅仅修改需要修改的参数,而不是全部写一遍。
EDMA还有link,能自动加载参数,你看看能否适用于你的应用。