rtel wrote on Wednesday, September 03, 2008:
> My platform is cortex-m3. Can’t interrupts in this MCU be
> preempted by other interrupts ?
Yes - full interrupt nesting is supported, however…
> Say if SYSTICK interrupt has
> occured, won’t it interrupt a perihperal interrupt and do a
> FreeRTOS stuff such as context switching.
… SYSTICK operates at the lowest priority so will never interrupt a peripheral ISR (assuming you have not changed the value of configKERNEL_INTERRUPT_PRIORITY from 255). SYSTICK can itself be interrupted by a peripheral ISR but this is ok, the design will allow this safely.
You can use queues from interrupts provided the interrupt priority is equal to or below portMAX_SYSCALL_INTERRUPT_PRIORITY - note that on Cortex M3 the lowest priority is the highest numeric value, so 255 has lower priority than 254. Again this is safe as the kernel is designed to allow this.
> If we can assume that the UART ISR won’t be interrupt by
> anything else my problem is easy to fix. As you suggested I’d
> just use double buffering, and we are good to go. Is that the case ?
Hopefully I have answered that. They wont get interrupted by the kernel but I cannot say whether any other interrupts using the same buffers will interrupt your UART interrupt because this depends how you have designed your system and set your interrupt priorities.