刚才发了个发错地方了。。。
OMAP5的DMA中断看迷糊了,主要是文档中的一句话:
In contrast to the DMA4_CSRi registers, the DMA4_IRQSTATUS_Lj registers are updated regardless of the
corresponding bits in the DMA4_IRQENABLE_Lj registers.
这句话是不是说不管DMA4_IRQENABLE_Lj配置如何,当32个逻辑通道中的任何通道(假设为i)产生中断时,都会更新DMA4_IRQSTATUS_Lj的相应位(i位),但只有使能DMA4_IRQENABLE_Lj的相应位(i位)后才会提交中断信号给相应的中断控制器(与Line j相连的中断控制器)。
例如:
(1)当四个Line的DMA4_IRQENABLE_Lj寄存器的i位都使能时,若逻辑通道i产生中断,则四条Line都会向相应的中断控制器提交中断信号。
(2)当四个Line的DMA4_IRQENABLE_Lj寄存器的i位都没有使能时,若逻辑通道i产生中断,则四条Line都不会向相应的中断控制器提交中断信号。
以上理解对吗?
如果不对的话请论坛或TI的诸位高手解释下这个误区;
如果对的话,请告诉我下面这种情况如何区分哪个逻辑通道发生了中断:
前提:同时使用两个DMA逻辑通道m和n,且都配置了对应的CICR寄存器,但是仅使能了DMA4_IRQENABLE_L0的n位,m位没有使能。
场景:逻辑通道m先产生了中断,由于没有设置DMA4_IRQENABLE_L0的m位,系统中断控制器不会处理该中断,这时,中断DMA4_IRQSTATUS_L0中的m位置1,且不会被清除,而此时,逻辑通道n产生中断,由于使能了逻辑通道n,系统中断控制器会处理该中断,但中断处理函数确定哪个通道产生中断时需要先读取DMA4_IRQSTATUS_L0,而此时DMA4_IRQSTATUS_L0中有两个1,莫非还要根据DMA4_IRQENABLE_L0的配置来确定究竟哪个逻辑通道产生了中断吗?
Eason Wang:
Could you post on e2e forum, currently we dont have OMAP5 forum on deyisupport.
Sorry for inconvenience
BR,
Eason
TI中文支持网