Quality RTOS & Embedded Software

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


Loading

ARM Cortex-A9 FreeRTOS_IRQ_Handler

Posted by kamejoko80 on February 20, 2017

Hello everyone,

Regarding to ARM cortex-a9 porting, I see the IRQ handler as below code :

FreeRTOSv9.0.0FreeRTOSSourceportableGCCARM_CA9portASM.S

~~~ .align 4 .type FreeRTOSIRQHandler, %function FreeRTOSIRQHandler:

...

/* Call the interrupt handler. */
PUSH	{r0-r3, lr}
LDR		r1, vApplicationIRQHandlerConst
BLX		r1
POP		{r0-r3, lr}
ADD		sp, sp, r2

CPSID	i
DSB
ISB

.... ~~~

This code intends to allow nested interrupt but IRQ enable instruction "CPSID i" is bellow application IRQ handler, I think this is not correct. In order to higher priority IRQ can preamt lower priority IRQ, IRQ enable instruction should be placed before application IRQ handler.

~~~

...

/* save registers */ PUSH {r0-r3, lr}

CPSID	i
DSB
ISB

/* Call the interrupt handler. */
LDR		r1, vApplicationIRQHandlerConst
BLX		r1

POP		{r0-r3, lr}
ADD		sp, sp, r2

.... ~~~

Please correct me if I'm wrong.

Thanks and Best Regards, Phuong Dang


ARM Cortex-A9 FreeRTOS_IRQ_Handler

Posted by rtel on February 20, 2017

This code intends to allow nested interrupt but IRQ enable instruction "CPSID i" is bellow application IRQ handler, I think this is not correct. In order to higher priority IRQ can preamt lower priority IRQ, IRQ enable instruction should be placed before application IRQ handler.

The IRQ enable instruction is in the application IRQ handler. It is done that way to allow the application writer to decide if they want an interrupt to be nestable or not. CPSID i is disabling the IRQ again, not enabling it, which is why it appears after the application handler.


ARM Cortex-A9 FreeRTOS_IRQ_Handler

Posted by kamejoko80 on February 20, 2017

Hello FreeRTOS,

Got it,

Sorry for my miss reading regarding to CPSID i command. Thanks so much for your quick reply.

Best regards


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


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

Latest News

NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS.

Meet Richard Barry and learn about running FreeRTOS on RISC-V at FOSDEM 2019

Version 10.1.1 of the FreeRTOS kernel is available for immediate download. MIT licensed.

View a recording of the "OTA Update Security and Reliability" webinar, presented by TI and AWS.


Careers

FreeRTOS and other embedded software careers at AWS.



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

Renesas

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