Can Anybody tell me how to init IRQ and FIQ interrupts at cortex A9. According reference manual we can set secure interrupt to FIQ and non-secure to IRQ. The secure interrupt work excellent. The handle FIQ is executed. But with non-secure i have some problem. I see pending non-secure interrupt from GIC to CPU in pending register, but CPU not bring up IRQ handler.
Example:
"0" is secure interrupt. works ok
"1" and "32" non-secure interrupt
#define SOFTWARE_INT_ID 0x00
#define CPU_TARGET_LIST (0x03 << 16)
#define TargetListFilter (0x0 << 24)
#define SATT(id) ((id) << 15)
INTC_DISTR_SetDisableCorrespondingInt(0);
INTC_DISTR_SetDisableCorrespondingInt(1);
INTC_DISTR_SetPriority(0, 1);
INTC_DISTR_SetPriority(1, 0x0);
INTC_DISTR_SetPriority(32, 0x0);
INTC_DISTR_SetSecurityStatus(1);
INTC_DISTR_SetSecurityStatus(32);
INTC_DISTR_SetIntProcessorTarget(1+31, 1);
INTC_DISTR_SetEnabeCorrespondingInt(0);
INTC_DISTR_SetEnabeCorrespondingInt(1);
INTC_DISTR_SetEnabeCorrespondingInt(1+31);
INTC_CPU_SetInterruptPriorityFilter(0xf0);
INTC_CPU_EnableSignallingOfInterrupts();
INTC_DISTR_SetForwardsPendingToCPU();
MxSetARMIntCtrl(INT_CTRL_IRQ_ENABLED | INT_CTRL_FIQ_ENABLED); //clear I and F
Distr->SoftGenInt = SOFTWARE_INT_ID | CPU_TARGET_LIST | (TargetListFilter) | SATT(0);
INTC_DISTR_SetPendingInt(32);
Distr->SoftGenInt = (SOFTWARE_INT_ID + 1) | CPU_TARGET_LIST | (TargetListFilter) | SATT(1);
Thanks
This post has been edited by jenyam: 20 November 2009 - 01:15 PM














