interrupt on arm9
Rochat Joël
jrochat at netplus.ch
Wed Oct 24 14:55:44 UTC 2007
Hello,
I'm relative young in rtems developpment. I'm using a board with an ARM9
(at91rm9200) cpu on it with csb337 as bsp.
The tools I've test such as event, timers, semaphores are working well. I
also managed to write some code to 'listen' to
an interrupt. I write this code manually :
void handlerIRQ (void) __attribute__ ((interrupt ("IRQ"))) ;
void handlerIRQ (void)
{
doIsr = TRUE ;
//clear irq
AT91C_BASE_AIC->AIC_EOICR = (1 << AT91C_ID_IRQ5) ;
AT91C_BASE_AIC->AIC_ICCR = (1 << AT91C_ID_IRQ5) ;
}
void initIRQ ()
{
//Level sensitivity and priority of interrupt
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_IRQ5] =
AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE | 1 ;
//give fonction to call when interrupt comes
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_IRQ5] = (unsigned long)handlerIRQ ;
//enable irq
AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_IRQ5) ;
}
This code works fine. But I try now to use rtems interrupt tools. But I'm a
littel bit lost with it here is the code i used
//the isr routine
rtems_isr user_isr(rtems_vector_number vector)
{
gTick = TRUE ;
}
//the catch methode
status = rtems_interrupt_catch(user_isr, ARM_EXCEPTION_IRQ, &old_isr_handler) ;
//then unabled the irq for level 3
rtems_interrupt_enable(3) ;
When I launch this code on the board it stops one time in the isr routine.
Do I have to reste the interupt or somthing like that ?
Did someone use the at91rm9200 with interrupt ?
How can I say to RTEMS that I want to listen to IRQ5 for exemple ?
Think you have a nice day.
Joel R.
More information about the users
mailing list