fpga给c6455发doorbell中断,从DOORBELL0_ICSR寄存器来看是收到了中断信号,但是进不了中断服务函数,配置为4x模式,srio可以进行swrite nread等操作,
我的doorbell中断配置如下:
在dsp/bios中的配置:
bios.HWI.instance("HWI_INT4").fxn = prog.extern("srio_db_ISR");
bios.HWI.instance("HWI_INT4").interruptSelectNumber = 20;
bios.HWI.instance("HWI_INT4").useDispatcher = 1;
中断服务程序为:
void srio_db_ISR(void)
{
Uint32 doorbell;
printf("enter doorbell interrupt \n");
//read doorbell. doorbell = SRIO_REGS->DOORBELL_INTR[0].DOORBELL_ICSR;
//printf("received doorbell value %d\n",doorbell);
//clear doorbell interrupt
SRIO_REGS->DOORBELL_INTR[0].DOORBELL_ICCR = doorbell;
SRIO_REGS->INTDST_RATE_CNTL[0] = 0;
……………
}
请问还有那些需要注意的地方
Shine:
请问用了dispatch吗?如果没有需要在srio_db_ISR()中断函数前加interrupt关键字。