Not seeing interrupts.
I have tried to activate interrupts with following code
Using the following code to start 2 timiers which will both generate an interrupt after 2 seconds:
BSP_TMR_Init(eBSP_TMR_GPT_02);
BSP_TMR_WriteNSec(eBSP_TMR_GPT_02,2000000000);
BSP_TMR_Start(eBSP_TMR_GPT_02);
BSP_TMR_Init(eBSP_TMR_GPT_03);
BSP_TMR_WriteNSec(eBSP_TMR_GPT_03,2000000000);
BSP_TMR_Start(eBSP_TMR_GPT_03);
*GICD_ITARGETSR(70)= 3;
*GICD_ITARGETSR(71)= 3;
*GICD_ICENABLER(1)= 0xFFFFFFFF;
*GICD_ISENABLER(2)= 0x000000C0;
*GICD_CTLR= 0x01;
*GICC_CTLR= 0x01; //does not affect pending
*GICC_PMR= 0xF0; //does not affect pending
for (i=20;i<100;i++) {
*GICD_IPRIORITYR(i)= 0xF0;
}
*GICD_IPRIORITYR(70)= 0x50;
*GICD_IPRIORITYR(71)= 0x50;
*GICD_IGROUPR(1)= 0xFFFFFFFF; //does not set
*GICD_IGROUPR(2)= 0xFFFFFFFF; //does not set
*GICD_ICACTIVER(2)= 0xC0;
*GICD_ICPENDR(2)= 0xC0;
BSP_TMR_WriteNSec(eBSP_TMR_GPT_02,2000000000);
BSP_TMR_Start(eBSP_TMR_GPT_02);
BSP_TMR_Init(eBSP_TMR_GPT_03);
BSP_TMR_WriteNSec(eBSP_TMR_GPT_03,2000000000);
BSP_TMR_Start(eBSP_TMR_GPT_03);
*GICD_ITARGETSR(70)= 3;
*GICD_ITARGETSR(71)= 3;
*GICD_ICENABLER(1)= 0xFFFFFFFF;
*GICD_ISENABLER(2)= 0x000000C0;
*GICD_CTLR= 0x01;
*GICC_CTLR= 0x01; //does not affect pending
*GICC_PMR= 0xF0; //does not affect pending
for (i=20;i<100;i++) {
*GICD_IPRIORITYR(i)= 0xF0;
}
*GICD_IPRIORITYR(70)= 0x50;
*GICD_IPRIORITYR(71)= 0x50;
*GICD_IGROUPR(1)= 0xFFFFFFFF; //does not set
*GICD_IGROUPR(2)= 0xFFFFFFFF; //does not set
*GICD_ICACTIVER(2)= 0xC0;
*GICD_ICPENDR(2)= 0xC0;
I see the timers indicate an interrupt after 2 seconds.
Not sure what I am missing- I am not seeing an interrupt being called:
If interrupt vector was wrong I should see a crash - but it appears no interrupt is called
I see RPR (running priority) changes is 0x50
I see both interrupts are pending and enabled
GICD_ICPENDR[2]= 0xC0 and GICD_ICENABLER[2]= 0xC0
GICD_ICACTIVER[2]= 0x40; //timer2 is active
HPPIR= 0x47; //timer3 is highest pending interrupt
Any help would be appreciated.