Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem


Using ARM7 IRQ mode with STR750

Posted by Jack Peacock on September 28, 2007
Environment is FreeRTOS V4.3, GCC 4.2, ST peripheral driver library and the STR750 (ARM7TDMI-S) controller. Interrupts are not nested, and FIQ not used. IRQ mode has a separate stack allocated.

Which CPU mode should be used when handling interrupts when RTOS calls are made for queues and context switching inside the interrupt handler? The example library provided by ST switches from IRQ to SYS mode while procesing an interrupt event generated by peripherals, switching back to IRQ after the interrupt handler completes. However, I am not switching modes, staying in IRQ mode through the entire interrupt, and I don't use the ST provided interrupt handler examples to go with the ST library. Does the interrupt mode make a difference to FreeRTOS?
Jack Peacock

RE: Using ARM7 IRQ mode with STR750

Posted by Dave on September 28, 2007
If you are not wanting the interrupt to cause a context switch then there are no special requirements. If you are wanting the interrupt to cause a context switch then FreeRTOS demonstrates two methods which are

i/ Vector directly to each interrupt individually. In this scheme the interrupt should be declared naked and the FreeRTOS macros used to save and restore the task context. This is done from IRQ mode. This is the way most of the ARM7 ports are configured, but not I don't think all.

ii/ Have a common interrupt entry point that saves the task context, then vectors to the interrupt handler which is just an ordinary C function, then restores the context after the C function completes. The restored context might be different to that which was saved if a context switch has occurred. This is demonstrated in the STR9 demo and maybe some others. This also uses IRQ mode.

Never use startup code that manipulates the registers and processor mode before vectoring to an interrupt other than the method ii/ FreeRTOS code described here. The system will simply crash if you do as this is not how the FreeRTOS code expects to find the processor or stacks.

[ Back to the top ]    [ About FreeRTOS ]    [ Privacy ]    [ Sitemap ]    [ ]

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.


FreeRTOS and other embedded software careers at AWS.

Latest News

FreeRTOS kernel V10.0.1 is available for immediate download. Now MIT licensed.

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Espressif ESP32

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS

Xilinx Microblaze and Zynq partner