Debugging basic BSP tasking functionality

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Apr 19 08:54:30 UTC 2013


On 04/19/2013 10:44 AM, Matthew J Fletcher wrote:
>  >What do you mean with basic interrupt handlers?
> Not using the IRQ exception handler at 0x18, but like so.
>
> --------------------
>
> #define VICVectAddr0    REG32(0xFFFFF100)    /* Vector Address 0 Register */
> #define VICIntEnable    REG32(0xFFFFF010)    /* Interrupt Enable Register */
> #define VICIntEnClear    REG32(0xFFFFF014)    /* Interrupt Enable Clear Register */
> #define VICIntSelect    REG32(0xFFFFF00C)    /* Interrupt Select Register */
>
> VICIntEnClear = VIC_BIT(VIC_TIMER0);        // Ensure the interrupt is disabled
> ...
> VICVectAddr0 = (ULONG)tick_handler;        // Address of the ISR
> VICIntSelect &= ~VIC_BIT(VIC_TIMER0);        // Timer0 selected as IRQ
> VICIntEnable = VIC_BIT(VIC_TIMER0);        // Timer0 interrupt enabled
> VICVectCntl0 = VIC_ENABLE | VIC_TIMER0;
>
> ---------------------------

This will not work.

>
>  >If you want to keep your exception vectors in the flash, then simply use
> arm_exc_interrupt >(on 4.10) or _ARMV4_Exception_interrupt (on 4.11) as the
> entry point for the interrupt >exception.
>
> Do you mean passing arm_exc_interrupt as the handler into
> rtems_interrupt_handler_install()  ? that still gives an unhandled IRQ
> exception, probably because there is no handler installed in 0x18.

No, the normal sequence is this:

1. Interrupt event
2. CPU calls _ARMV4_Exception_interrupt via exception table
3. This calls bsp_interrupt_dispatch (defined in the BSP)
4. This calls the handler installed via rtems_interrupt_handler_install()

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
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 users mailing list