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

C6670一个核使用两3D中断输出问题

TI工程师,您好:
C6670芯片中,在一个core中使用TCP3D_A和TCP3D_C来交替解码,通知中断分别用7和46,能正常运行一段时间后,发现3D输出中断不再响应,每次停在相同帧长的解码中。通过查看寄存器和3D输出buffer的值,发现EDMA已经把本次要输出的数据从3D加速器中搬到了3D的buffer中,但没有响应中断通知CORE取数据(注:这不是第一次两3D中断不响应,是运行多帧后出现的情况)。请问3D的通知中断事件号7和46有问题吗?为什么输出中断不能响应?请帮忙参考一下,谢谢!!!

Andy Yin1:

通知中断号是7和46是EDMA 通道号么?如果是使用EDMA完成产生中断,check一下EDMA参数状态,此时EDMA是否完成,EDMA相关状态寄存器如IPR的状态。

另外能把你具体实现的过程大致说一下么,不是很清楚你的过程。

wenzheng liu:

回复 Andy Yin1:

7和46是INTC0输入事件号。Demo例程中的3D_A和3D_B分别用的是7和23。初始化过程是TCP3D_C用EDMA实例0,对应的EDMA通道号用的是0和1,region是6;TCP3D_A用的是EDMA实例2,对应EDMA通道号是0和1,region也是6。运行时交替调用3D_A和3D_C加速器进行解码(两3D都是以单CB块输入运行)。从运行挂住的现象看,输出比输入少两次,也就是有两个CB的数据未被3D中断响应。但从3D数据的输出buffer中看都已有3D的输出结果(此处buffer为L2中存放3D结果的缓存),看寄存器0x20830000和0x35630000的数据与3D数据buffer值一致。另外:两3D一般都能交替运行30000-50000个CB不等后死掉;单独运行其中一个3D加速器都能正常运行。

wenzheng liu:

回复 wenzheng liu:

当挂死时,查看IPR寄存器,3D_A和3D_C都是3。

Andy Yin1:

回复 wenzheng liu:

有没有可能是由于中断来的太快导致的,在EDMA中断响应函数中又来了一次中断但是被软件清除,建议提高中断频率试试。

wenzheng liu:

回复 Andy Yin1:

Andy Yin1,您好:

        中断来太快导致,这很有可能,因为我专门针对出问题的帧长在送3D解码时做过延时,结果该帧长不在挂死。请问提高中断频率使在哪配置,配置哪个寄存器,麻烦给个例子?我下去也在看看文档,谢谢。

wenzheng liu:

回复 Andy Yin1:

顺便再问一下,3D例程通知事件号7和23是INTC0输入事件号吗?3D_C用46合适吗?怎么选择这个号?另外我们在运行3D加速器时把EDMA相关的中断给屏蔽了,也就是REVENT0、REVENT1和edma3完成中断都不响应,只保留了通知事件注册的中断,所以在EDMA中断响应函数中又来了一次中断但是被软件清除的情况是否就不存在了?跑一个3D时,以上设置是没问题,运行两个3D,这样设置是否有问题呢?另外,我现在使用两个3D和两个EDMA事例,资源基本是独立的,为什么还会相互影响呢?

Andy Yin1:

回复 wenzheng liu:

中断频率没法配置,我说的意思是通过软件的方式来控制,比如以前是译码完一个CB就产生中断,可以修改成译码完成多个CB之后再产生中断,减少中断次数。

你参考的是哪个例程,6670 INTC0输入事件号7及23是reserved,不能使用,具体EDMA的中断事件号参考6670 data manual interrupt section。

wenzheng liu:

回复 Andy Yin1:

我参考的使CCS5.1安装软件内PDk里自带的3D解码例程,它的3D_A通知事件号用的使7,3D_B通知事件号用的使23,参考它的代码设计文档,好像说它们是 INTC0输入事件号。但我也查看了C6670手册,这两个号是reserved,所以就不明白7和23是怎么选择的?

赞(0)
未经允许不得转载:TI中文支持网 » C6670一个核使用两3D中断输出问题
分享到: 更多 (0)