doubts ARM tutorial : interrupts
Discussion in "ARM Development" started by shyam Dec 30, 2007.
Fri Jun 11 2010, 01:46 pm
We can assign the addresses for 16 IRQ interrupts, what about FIQ interrupt?
And i also have doubt on VIC? What is necessity of VICSOFTINT? When we set UART0 interrupt in VICSOFTINT register, what we will be the status of U0LSR register?
And i also have doubt on VIC? What is necessity of VICSOFTINT? When we set UART0 interrupt in VICSOFTINT register, what we will be the status of U0LSR register?
[ Edited Fri Jun 11 2010, 01:48 pm ]
Mon Jun 14 2010, 12:50 am
@vraviteja2929
i missed out your post probably.
FIQ are highest priority interrupts in ARM. you directly assign a handler to FIQ interrupt (see startup file). if both IRQ and FIQ interrupt occurs at the same time FIQ will be serviced first. FIQ status register tells which FIQ interrupt is pending, so you can check which bits are set in that register and so service them.
VICSoftINT is used to generate a forced interrupt request when corresponding bit is made 1 in register.
>When we set UART0 interrupt in VICSOFTINT register, what we will be the status of U0LSR register?
Thats wild never tried do it and check it in simulator.
i missed out your post probably.
FIQ are highest priority interrupts in ARM. you directly assign a handler to FIQ interrupt (see startup file). if both IRQ and FIQ interrupt occurs at the same time FIQ will be serviced first. FIQ status register tells which FIQ interrupt is pending, so you can check which bits are set in that register and so service them.
VICSoftINT is used to generate a forced interrupt request when corresponding bit is made 1 in register.
>When we set UART0 interrupt in VICSOFTINT register, what we will be the status of U0LSR register?
Thats wild never tried do it and check it in simulator.
Mon Jun 14 2010, 11:28 am
As i am new to ARM controller, i feel somewhat difficult. And i know 8051. In 8051 for ever interrupt there is a permanent vector address. I think there is no permanent vector address for interrupts. Here we can set addresses for 16 IRQ vectors using VICVectAddr0-15. And what about FIQ? What is the vector address for FIQ?
In some sample programs:
void IRQ_ON (void) __attribute__ ((interrupt("IRQ")));
void FIQ_Routine (void) __attribute__ ((interrupt("FIQ")));
void SWI_Routine (void) __attribute__ ((interrupt("SWI")));
void UNDEF_Routine (void) __attribute__ ((interrupt("UNDEF")));
they given like this!!
I think when ever FIQ interrupt it goes to corresponding function, is it true? Is this is the way to assign address to an interrupt?
And Ajay thank u for ur reply
In some sample programs:
void IRQ_ON (void) __attribute__ ((interrupt("IRQ")));
void FIQ_Routine (void) __attribute__ ((interrupt("FIQ")));
void SWI_Routine (void) __attribute__ ((interrupt("SWI")));
void UNDEF_Routine (void) __attribute__ ((interrupt("UNDEF")));
they given like this!!
I think when ever FIQ interrupt it goes to corresponding function, is it true? Is this is the way to assign address to an interrupt?
And Ajay thank u for ur reply
Mon Jun 14 2010, 07:35 pm
well you can assign any vector location to any interrupt and a ISR for that vector.
i think you should read chapter "Vector Interrupt Controller" in manual of IC you are using. that will give you clear and broad idea of how things work.
For FIQ there is a fix address and a single function is assigned to that FIQ service routine. Can you attach startup file here?
i think you should read chapter "Vector Interrupt Controller" in manual of IC you are using. that will give you clear and broad idea of how things work.
For FIQ there is a fix address and a single function is assigned to that FIQ service routine. Can you attach startup file here?
Tue Jun 15 2010, 07:35 pm
you can still attach your startup file incase you need more explanation. which compiler are you using?
Powered by e107 Forum System