RTEMS Interrupt Handling on ARM

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Nov 28 18:06:10 UTC 2012


On 28/11/12 15:34, Claas Ziemke wrote:
> hi all,
>
> sorry for me vanishing from the surface for so long. I just started to take up the work on the BeagleBoard BSP again.
>
> I have 3 questions concerning the Interrupt handling. Since the BSP is based on lpc32xx my question are centred on the
> implementation of that BSP.
>
> 1. Which is the entrypoint of the RTEMS IRQ handling? I mean the function that is called from the exception vector.
> I know there is a "bsp_interrupt_dispatch" function, is that the entrypoint, or is that function called from somewhere else?

Yes, this is the entry point, see

http://git.rtems.org/rtems/tree/cpukit/score/cpu/arm/arm_exc_interrupt.S

>
> 2. If so, what is the purpose of the "arm_status_irq_enable" and "arm_status_restore" functions?

This allows nested interrupts if your interrupt controller supports this.

>
> 3: My BSP till now uses the /libbsp/arm/share/start/start.S boot and system startup code.  As i understand the exception
> vector is installed right before the _start symbol. But i only see that all are pointing either to "_start" and "reset". So
> where are the actual interrupt handlers are called?

The exception handler table is relocated later in a board specific way 
(see "_CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, arm_exc_interrupt, 
NULL);").  If you want to use the table in start.S you have to use 
arm_exc_interrupt as the entry point for IRQ.

-- 
Sebastian Huber, embedded brains GmbH

Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
Phone   : +49 89 18 90 80 79-6
Fax     : +49 89 18 90 80 79-9
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the devel mailing list