TI中文支持网
TI专业的中文技术问题搜集分享网站

EDMA 添加到系统不能正常工作,会不会引起数据总线竞争?

Hello,

利用DM8148评估板,在DSP C674+端开发了图像处理算法。在DSP端单独运行DSP算法,算法能正常工作。

然后将算法lib加载评估板提供的代码中,算法也能正常工作,整个系统能够正常运行。

然而,为了提高算法计算速度,将子图像提取用EDMA代替(EDMA3的源地址和目标地址都在DDR3),在DSP端代码单独测试,DSP也能正常工作。

然而,将该带有EDMA3的lib,重新添加到评估板系统的代码中,整个系统崩溃,算法不能正常运行。

EDMA的应用会不会,引起数据总线冲突,从而导致系统崩溃。

当EDMA将数据从DDR3源地址搬移到DDR3的目标地址时,会不会引起DDR3总线,或者其它总线冲突(源数据端,数据仍然在更新中,ping-pong buffer)?

什么因素能导致该问题产生?

请高手指导!

非常感谢!

 

 

 

Chris Meng:

Lingcon,

“EDMA的应用会不会,引起数据总线冲突,从而导致系统崩溃。 当EDMA将数据从DDR3源地址搬移到DDR3的目标地址时,会不会引起DDR3总线,或者其它总线冲突(源数据端,数据仍然在更新中,ping-pong buffer)?”

【Chris】EDMA访问DDR的请求最终会有DDR控制来处理,所以即使有两个master要访问同一个DDR地址,到了DDR控制器侧也会是顺序执行。

会不会是你使用的EDMA通道中系统软件里面已经有其他地方已经使用了?

Lingcon Meng:

回复 Chris Meng:

Hello Chris,

非常感谢您的回复。

我也考虑过,EDMA3 通道系统别的资源所占用。

因此我加了测试代码,在没有EDMA3实现子帧抽取且能正常工作的算法代码中molloc了两段DDR3内存,每段400K,然后这两段用同样的EDMA函数搬移(一个作为源地址,一个作为目标地址),这两段内存中的数据只是为了测试,该数据不参与算法运算。

结果算法库在DM8148平台上能正常运行。

因此证明了该EDMA channel 能正常运行,在系统运行中并没有被其他资源所占用。

我刚刚问了下做系统端的同事,实际上,在系统端,它们并没有用ping-pong buffer。

仅仅用了一个buffer。

这样的话,会不会,外设正在该buffer写数据,我同时用EDMA去同时读该buffer数据内容,

会不会因为同一地址,同时读写使系统崩溃?

如果这样,将该数据缓冲的单一buffer,改成ping-pong buffer,是否可以避免此问题的出现?

EDMA读ping buffer时,外设写pong buffer。外设写完pong-buffer,EDMA读pong buffer,外设在ping buffer中填充数据,如此循环。

非常感谢!

 

BRS,

Meng

 

 

 

 

 

 

 

 

Chris Meng:

回复 Lingcon Meng:

Lingcon,

会不会,外设正在该buffer写数据,我同时用EDMA去同时读该buffer数据内容,

会不会因为同一地址,同时读写使系统崩溃?

我在前一个帖子已经回复如下,不会出现你说的情况。

【Chris】EDMA访问DDR的请求最终会有DDR控制来处理,所以即使有两个master要访问同一个DDR地址,到了DDR控制器侧也会是顺序执行。

还请你在代码里面添加一些打印,具体定位一下问题出现的代码位置,是否是启动EDMA。相关EDMA的参数也请打印出来检查是否有异常。

赞(0)
未经允许不得转载:TI中文支持网 » EDMA 添加到系统不能正常工作,会不会引起数据总线竞争?
分享到: 更多 (0)