This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dm3730 dvsdk c6accel dsp 端gpio 中断不工作

Other Parts Discussed in Thread: DM3730

大家好,

我使用dm3730运行dvsdk, 在c6accel的dsp端增加了通过GPMC读写fpga的功能,这个已经完成,我想使用sdma,但没调通,改成fpga通过gpio 65向dsp发gpio中断,dsp收到后在ISR里通过信号量控制从GPMC读数。

我的ISR程序应该是正确的,我使用irq14的timer触发,ISR可以工作,使用gpio65由fpga触发中断,isr不运行。

代码如下:

static inline void __raw_writel(unsigned int b, int addr)
{
 *(volatile unsigned int  *) addr = b;
}

 __raw_writel((1<<18) |  (1<<24),0x480020d0); //scm Pin muxing mode 4 (gpio 65), inputenable
 __raw_writel((1<<1),0x49052034); //OE
 __raw_writel((1<<1),0x4905204C); //falling detect
 __raw_writel((1<<1),0x4905202C); //gpio module 3 irqenable2
C64_disableIER(1<<6);
HWI_eventMap(6, 75);  //gpio 65 in GPIO module 3, so event id is 75
HWI_dispatchPlug(6, (Fxn)dspTimerThread, -1, NULL);
HWI_enable();
C64_enableIER(1<<6);

读gpio3 data in(0x49052038)这个寄存器的值,会随着我的fpga信号从0和2来回变,证明gpio已经读到数据了,读gpio3 irq status2(0x49052028)这个寄存器,值一直是2,这是对的,证明gpio65已经收到中断信号。

但我的ISR程序没有触发,读intx status(0x01800180) 或者 ic event flag 3(0x01800000 +0x4 * 2),这两个寄存器一直是0,似乎是gpio中断没有送到iva里去?请问我少做了什么工作?为什么不能触发ISR,这个问题已经困扰我好几天了。

  • 大家好,

    我终于找到问题出在哪了,我没设WUGEN的interrupt mask寄存器,导致中断信号被屏蔽了,没有送入IVA系统中去。设置WUGEN_MEVTCLR寄存器,问题解决。

    具体语句:__raw_writel((1<<30),0x01c21070);

    谢谢大家的关注。