FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [February 2017 Threads]
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
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.
Hello FreeRTOS,
Got it,
Sorry for my miss reading regarding to CPSID i command.
Thanks so much for your quick reply.
Best regards
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.