mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-08-01 08:54:14 -04:00
Core kernel code:
Allow the stats formatting functions to be built in without stdio.h being included inside tasks.c. Kernel port code: - Slight change to the Cortex-A GIC-less port to move all non portable code to the application level. SAMA5D4 demo project: - Update the Atmel provided library to V1.1. - Create a DDR build configuration. - Ensure interrupts are all edge sensitive. - Update the regtest code to use all 32 flop registers.
This commit is contained in:
parent
e3263bb9b3
commit
ca22607d14
75 changed files with 12981 additions and 495 deletions
|
@ -63,9 +63,6 @@
|
|||
1 tab == 4 spaces!
|
||||
*/
|
||||
|
||||
/* Standard includes. */
|
||||
#include <stdlib.h>
|
||||
|
||||
/* IAR includes. */
|
||||
#include <intrinsics.h>
|
||||
|
||||
|
@ -80,6 +77,14 @@
|
|||
#endif
|
||||
#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */
|
||||
|
||||
#ifndef configSETUP_TICK_INTERRUPT
|
||||
#error configSETUP_TICK_INTERRUPT() must be defined in FreeRTOSConfig.h to call the function that sets up the tick interrupt. A default that uses the PIT is provided in the official demo application.
|
||||
#endif
|
||||
|
||||
#ifndef configCLEAR_TICK_INTERRUPT
|
||||
#error configCLEAR_TICK_INTERRUPT must be defined in FreeRTOSConfig.h to clear which ever interrupt was used to generate the tick interrupt. A default that uses the PIT is provided in the official demo application.
|
||||
#endif
|
||||
|
||||
/* A critical section is exited when the critical section nesting count reaches
|
||||
this value. */
|
||||
#define portNO_CRITICAL_NESTING ( ( uint32_t ) 0 )
|
||||
|
@ -242,7 +247,6 @@ uint32_t ulAPSR;
|
|||
{
|
||||
/* Start the timer that generates the tick ISR. */
|
||||
configSETUP_TICK_INTERRUPT();
|
||||
__enable_irq();
|
||||
vPortRestoreTaskContext();
|
||||
}
|
||||
|
||||
|
|
|
@ -132,26 +132,24 @@ FreeRTOS_IRQ_Handler
|
|||
AND r2, r2, #4
|
||||
SUB sp, sp, r2
|
||||
|
||||
; Obtain the address of the interrupt handler, then pass it into the ISR
|
||||
; callback.
|
||||
PUSH {r0-r3, lr}
|
||||
LDR r1, =configINTERRUPT_VECTOR_ADDRESS
|
||||
LDR r0, [r1]
|
||||
LDR r1, =vApplicationIRQHandler
|
||||
BLX r1
|
||||
|
||||
; Call the port part specific handler.
|
||||
LDR r0, =vApplicationIRQHandler
|
||||
BLX r0
|
||||
POP {r0-r3, lr}
|
||||
ADD sp, sp, r2
|
||||
|
||||
CPSID i
|
||||
|
||||
; Write to the EOI register
|
||||
; Write to the EOI register.
|
||||
LDR r4, =configEOI_ADDRESS
|
||||
STR r0, [r4]
|
||||
|
||||
; Restore the old nesting count
|
||||
STR r1, [r3]
|
||||
|
||||
; A context switch is never performed if the nesting count is not 0
|
||||
; A context switch is never performed if the nesting count is not 0.
|
||||
CMP r1, #0
|
||||
BNE exit_without_switch
|
||||
|
||||
|
@ -198,7 +196,6 @@ switch_before_exit
|
|||
; Restore the context of, and branch to, the task selected to execute next.
|
||||
portRESTORE_CONTEXT
|
||||
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@ TIMECAPS xTimeCaps;
|
|||
/* Just to prevent compiler warnings. */
|
||||
( void ) lpParameter;
|
||||
|
||||
for(;;)
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait until the timer expires and we can access the simulated interrupt
|
||||
variables. *NOTE* this is not a 'real time' way of generating tick
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue