From 4793063ee09a8e96d4a44d545187c675e93d406e Mon Sep 17 00:00:00 2001 From: Richard Barry Date: Fri, 6 Apr 2012 20:20:35 +0000 Subject: [PATCH] Add #error statements in FreeRTOSConfig.h header files where the CreateProjectDirectoryStructure.bat should be executed prior to the first build. Added the CreateProjectDirectoryStructure.bat file for the XMC4500 Tasking demo. --- .../FreeRTOSConfig.h | 7 +- .../src/FreeRTOSConfig.h | 8 + .../RTOSDemo/Source/FreeRTOSConfig.h | 8 + .../CreateProjectDirectoryStructure.bat | 3 +- .../src/FreeRTOSConfig.h | 7 + .../.cproject | 4 - .../CreateProjectDirectoryStructure.bat | 59 +++++ .../FreeRTOSConfig.h | 8 + .../portable/Tasking/ARM_CM4F/port.c | 234 ------------------ .../portable/Tasking/ARM_CM4F/port_asm.asm | 168 ------------- .../portable/Tasking/ARM_CM4F/portmacro.h | 144 ----------- .../src/FreeRTOSConfig.h | 8 + .../Demo_Source/FreeRTOSConfig.h | 2 +- .../SDKProjects/RTOSDemo/FreeRTOSConfig.h | 2 +- .../RTOSDemo/FreeRTOSConfig.h | 8 + .../RTOSDemo/FreeRTOSConfig.h | 8 + Demo/WIN32-MingW/FreeRTOSConfig.h | 8 + 17 files changed, 130 insertions(+), 556 deletions(-) create mode 100644 Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/CreateProjectDirectoryStructure.bat delete mode 100644 Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port.c delete mode 100644 Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port_asm.asm delete mode 100644 Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/portmacro.h diff --git a/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h b/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h index 407653ea2..d21e4d48d 100644 --- a/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h +++ b/Demo/CORTEX_A2F200_SoftConsole/FreeRTOSConfig.h @@ -52,10 +52,11 @@ */ -/* The following #error directive is to remind users that a batch file must be +/* + * The following #error directive is to remind users that a batch file must be * executed prior to this project being built. The batch file *cannot* be - * executed from within CCS4! Once it has been executed, re-open or refresh - * the CCS4 project and remove the #error line below. + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. */ #error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. diff --git a/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h b/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h index cfda4838e..2a184ff48 100644 --- a/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h +++ b/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h @@ -54,6 +54,14 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + #include "LPC17xx.h" /*----------------------------------------------------------- diff --git a/Demo/CORTEX_M0_LPC1114_LPCXpresso/RTOSDemo/Source/FreeRTOSConfig.h b/Demo/CORTEX_M0_LPC1114_LPCXpresso/RTOSDemo/Source/FreeRTOSConfig.h index 1f0fc4c86..d22858669 100644 --- a/Demo/CORTEX_M0_LPC1114_LPCXpresso/RTOSDemo/Source/FreeRTOSConfig.h +++ b/Demo/CORTEX_M0_LPC1114_LPCXpresso/RTOSDemo/Source/FreeRTOSConfig.h @@ -55,6 +55,14 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + /*----------------------------------------------------------- * Application specific definitions. * diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/CreateProjectDirectoryStructure.bat b/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/CreateProjectDirectoryStructure.bat index ed8c106c6..7ffb1cdee 100644 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/CreateProjectDirectoryStructure.bat +++ b/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/CreateProjectDirectoryStructure.bat @@ -17,7 +17,8 @@ IF EXIST src\FreeRTOS_Source Goto END REM Create the required directory structure. MD src\FreeRTOS_Source - MD src\FreeRTOS_Source\include + MD src\FreeRTOS_Source\include + MD src\FreeRTOS_Source\portable MD src\FreeRTOS_Source\portable\GCC MD src\FreeRTOS_Source\portable\GCC\ARM_CM4F MD src\FreeRTOS_Source\portable\MemMang diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/src/FreeRTOSConfig.h b/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/src/FreeRTOSConfig.h index 65b233fc0..39ddd6d7d 100644 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/src/FreeRTOSConfig.h +++ b/Demo/CORTEX_M4F_Infineon_XMC4500_GCC_Atollic/src/FreeRTOSConfig.h @@ -55,6 +55,13 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. /*----------------------------------------------------------- * Application specific definitions. diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/.cproject b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/.cproject index ac60aeaeb..678730da7 100644 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/.cproject +++ b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/.cproject @@ -55,11 +55,7 @@ - TASKING VX-toolset for ARM Cortex: object linker v4.2r1 Build 135 SN 00521976 - TASKING VX-toolset for ARM Cortex: control program v4.2r1 Build 118 - TASKING VX-toolset for ARM Cortex: assembler v4.2r1 Build 141 TASKING program builder v4.2r1 Build 063 - TASKING VX-toolset for ARM Cortex: C compiler v4.2r1 Build 652 SN 00521976 diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/CreateProjectDirectoryStructure.bat b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/CreateProjectDirectoryStructure.bat new file mode 100644 index 000000000..65b7e627a --- /dev/null +++ b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/CreateProjectDirectoryStructure.bat @@ -0,0 +1,59 @@ +REM This file should be executed from the command line prior to the first +REM build. It will be necessary to refresh the Eclipse project once the +REM .bat file has been executed (normally just press F5 to refresh). + +REM Copies all the required files from their location within the standard +REM FreeRTOS directory structure to under the Eclipse project directory. +REM This permits the Eclipse project to be used in 'managed' mode and without +REM having to setup any linked resources. + +REM Standard paths +SET FREERTOS_SOURCE=..\..\Source +SET COMMON_SOURCE=..\Common\minimal +SET COMMON_INCLUDE=..\Common\include + +REM Have the files already been copied? +IF EXIST FreeRTOS_Source Goto END + + REM Create the required directory structure. + MD FreeRTOS_Source + MD FreeRTOS_Source\include + MD FreeRTOS_Source\portable\ + MD FreeRTOS_Source\portable\Tasking + MD FreeRTOS_Source\portable\Tasking\ARM_CM4F + MD FreeRTOS_Source\portable\MemMang + MD Common_Demo_Source + MD Common_Demo_Source\include + + REM Copy the core kernel files into the SDK projects directory + copy %FREERTOS_SOURCE%\tasks.c FreeRTOS_Source + copy %FREERTOS_SOURCE%\queue.c FreeRTOS_Source + copy %FREERTOS_SOURCE%\list.c FreeRTOS_Source + copy %FREERTOS_SOURCE%\timers.c FreeRTOS_Source + + REM Copy the common header files into the SDK projects directory + copy %FREERTOS_SOURCE%\include\*.* FreeRTOS_Source\include + + REM Copy the portable layer files into the projects directory + copy %FREERTOS_SOURCE%\portable\Tasking\ARM_CM4F\*.* FreeRTOS_Source\portable\Tasking\ARM_CM4F + + REM Copy the basic memory allocation files into the SDK projects directory + copy %FREERTOS_SOURCE%\portable\MemMang\heap_2.c FreeRTOS_Source\portable\MemMang + + REM Copy the files that define the common demo tasks. + copy %COMMON_SOURCE%\dynamic.c Common_Demo_Source + copy %COMMON_SOURCE%\BlockQ.c Common_Demo_Source + copy %COMMON_SOURCE%\death.c Common_Demo_Source + copy %COMMON_SOURCE%\blocktim.c Common_Demo_Source + copy %COMMON_SOURCE%\semtest.c Common_Demo_Source + copy %COMMON_SOURCE%\PollQ.c Common_Demo_Source + copy %COMMON_SOURCE%\GenQTest.c Common_Demo_Source + copy %COMMON_SOURCE%\recmutex.c Common_Demo_Source + copy %COMMON_SOURCE%\sp_flop.c Common_Demo_Source + copy %COMMON_SOURCE%\countsem.c Common_Demo_Source + copy %COMMON_SOURCE%\integer.c Common_Demo_Source + + REM Copy the common demo file headers. + copy %COMMON_INCLUDE%\*.h Common_Demo_Source\include + +: END diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOSConfig.h b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOSConfig.h index bc8fcf3c0..41228ef6c 100644 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOSConfig.h +++ b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOSConfig.h @@ -68,6 +68,14 @@ * See http://www.freertos.org/a00110.html. *----------------------------------------------------------*/ + /* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + #include extern uint32_t SystemCoreClock; diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port.c b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port.c deleted file mode 100644 index 2e34b8737..000000000 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - FreeRTOS V7.1.0 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - -/*----------------------------------------------------------- - * Implementation of functions defined in portable.h for the ARM CM4F port. - *----------------------------------------------------------*/ - -/* Scheduler includes. */ -#include "FreeRTOS.h" -#include "task.h" - -/* Constants required to manipulate the NVIC. */ -#define portNVIC_SYSTICK_CTRL ( ( volatile unsigned long * ) 0xe000e010 ) -#define portNVIC_SYSTICK_LOAD ( ( volatile unsigned long * ) 0xe000e014 ) -#define portNVIC_INT_CTRL ( ( volatile unsigned long * ) 0xe000ed04 ) -#define portNVIC_SYSPRI2 ( ( volatile unsigned long * ) 0xe000ed20 ) -#define portNVIC_SYSTICK_CLK 0x00000004 -#define portNVIC_SYSTICK_INT 0x00000002 -#define portNVIC_SYSTICK_ENABLE 0x00000001 -#define portNVIC_PENDSVSET 0x10000000 -#define portNVIC_PENDSV_PRI ( ( ( unsigned long ) configKERNEL_INTERRUPT_PRIORITY ) << 16 ) -#define portNVIC_SYSTICK_PRI ( ( ( unsigned long ) configKERNEL_INTERRUPT_PRIORITY ) << 24 ) - -/* Constants required to manipulate the VFP. */ -#define portFPCCR ( ( volatile unsigned long * ) 0xe000ef34 ) /* Floating point context control register. */ -#define portASPEN_AND_LSPEN_BITS ( 0x3UL << 30UL ) - -/* Constants required to set up the initial stack. */ -#define portINITIAL_XPSR ( 0x01000000 ) -#define portINITIAL_EXEC_RETURN ( 0xfffffffd ) - -/* The priority used by the kernel is assigned to a variable to make access -from inline assembler easier. */ -const unsigned long ulKernelPriority = configKERNEL_INTERRUPT_PRIORITY; - -/* Each task maintains its own interrupt status in the critical nesting -variable. */ -static unsigned long ulCriticalNesting = 0xaaaaaaaaUL; - -/* - * Setup the timer to generate the tick interrupts. - */ -static void prvSetupTimerInterrupt( void ); - -/* - * Exception handlers. - */ -void SysTick_Handler( void ); - -/* - * Functions defined in port_asm.asm. - */ -extern void vPortEnableVFP( void ); -extern void vPortStartFirstTask( void ); - -/* This exists purely to allow the const to be used from within the -port_asm.asm assembly file. */ -const unsigned long ulMaxSyscallInterruptPriorityConst = configMAX_SYSCALL_INTERRUPT_PRIORITY; - -/*-----------------------------------------------------------*/ - -/* - * See header file for description. - */ -portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters ) -{ - /* Simulate the stack frame as it would be created by a context switch - interrupt. */ - - /* Offset added to account for the way the MCU uses the stack on entry/exit - of interrupts, and to ensure alignment. */ - pxTopOfStack -= 2; - - *pxTopOfStack = portINITIAL_XPSR; /* xPSR */ - pxTopOfStack--; - *pxTopOfStack = ( portSTACK_TYPE ) pxCode; /* PC */ - pxTopOfStack--; - *pxTopOfStack = 0; /* LR */ - - /* Save code space by skipping register initialisation. */ - pxTopOfStack -= 5; /* R12, R3, R2 and R1. */ - *pxTopOfStack = ( portSTACK_TYPE ) pvParameters; /* R0 */ - - /* A save method is being used that requiers each task to maintain its - own exec return value. */ - pxTopOfStack--; - *pxTopOfStack = portINITIAL_EXEC_RETURN; - - pxTopOfStack -= 8; /* R11, R10, R9, R8, R7, R6, R5 and R4. */ - - return pxTopOfStack; -} -/*-----------------------------------------------------------*/ - -/* - * See header file for description. - */ -portBASE_TYPE xPortStartScheduler( void ) -{ - /* Make PendSV and SysTick the lowest priority interrupts. */ - *(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI; - *(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI; - - /* Start the timer that generates the tick ISR. Interrupts are disabled - here already. */ - prvSetupTimerInterrupt(); - - /* Initialise the critical nesting count ready for the first task. */ - ulCriticalNesting = 0; - - /* Ensure the VFP is enabled - it should be anyway. */ - vPortEnableVFP(); - - /* Lazy save always. */ - *( portFPCCR ) |= portASPEN_AND_LSPEN_BITS; - - /* Start the first task. */ - vPortStartFirstTask(); - - /* Should not get here! */ - return 0; -} -/*-----------------------------------------------------------*/ - -void vPortEndScheduler( void ) -{ - /* It is unlikely that the CM4F port will require this function as there - is nothing to return to. */ -} -/*-----------------------------------------------------------*/ - -void vPortYieldFromISR( void ) -{ - /* Set a PendSV to request a context switch. */ - *(portNVIC_INT_CTRL) = portNVIC_PENDSVSET; -} -/*-----------------------------------------------------------*/ - -void vPortEnterCritical( void ) -{ - portDISABLE_INTERRUPTS(); - ulCriticalNesting++; -} -/*-----------------------------------------------------------*/ - -void vPortExitCritical( void ) -{ - ulCriticalNesting--; - if( ulCriticalNesting == 0 ) - { - portENABLE_INTERRUPTS(); - } -} -/*-----------------------------------------------------------*/ - -void SysTick_Handler( void ) -{ -unsigned long ulDummy; - - /* If using preemption, also force a context switch. */ - #if configUSE_PREEMPTION == 1 - *(portNVIC_INT_CTRL) = portNVIC_PENDSVSET; - #endif - - ulDummy = portSET_INTERRUPT_MASK_FROM_ISR(); - { - vTaskIncrementTick(); - } - portCLEAR_INTERRUPT_MASK_FROM_ISR( ulDummy ); -} -/*-----------------------------------------------------------*/ - -/* - * Setup the systick timer to generate the tick interrupts at the required - * frequency. - */ -void prvSetupTimerInterrupt( void ) -{ - /* Configure SysTick to interrupt at the requested rate. */ - *(portNVIC_SYSTICK_LOAD) = ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; - *(portNVIC_SYSTICK_CTRL) = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE; -} -/*-----------------------------------------------------------*/ - diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port_asm.asm b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port_asm.asm deleted file mode 100644 index 3f9dd6de7..000000000 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/port_asm.asm +++ /dev/null @@ -1,168 +0,0 @@ -;/* -; FreeRTOS V7.1.0 - Copyright (C) 2011 Real Time Engineers Ltd. -; -; -; *************************************************************************** -; * * -; * FreeRTOS tutorial books are available in pdf and paperback. * -; * Complete, revised, and edited pdf reference manuals are also * -; * available. * -; * * -; * Purchasing FreeRTOS documentation will not only help you, by * -; * ensuring you get running as quickly as possible and with an * -; * in-depth knowledge of how to use FreeRTOS, it will also help * -; * the FreeRTOS project to continue with its mission of providing * -; * professional grade, cross platform, de facto standard solutions * -; * for microcontrollers - completely free of charge! * -; * * -; * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * -; * * -; * Thank you for using FreeRTOS, and thank you for your support! * -; * * -; *************************************************************************** -; -; -; This file is part of the FreeRTOS distribution. -; -; FreeRTOS is free software; you can redistribute it and/or modify it under -; the terms of the GNU General Public License (version 2) as published by the -; Free Software Foundation AND MODIFIED BY the FreeRTOS exception. -; >>>NOTE<<< The modification to the GPL is included to allow you to -; distribute a combined work that includes FreeRTOS without being obliged to -; provide the source code for proprietary components outside of the FreeRTOS -; kernel. FreeRTOS is distributed in the hope that it will be useful, but -; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -; more details. You should have received a copy of the GNU General Public -; License and the FreeRTOS license exception along with FreeRTOS; if not it -; can be viewed here: http://www.freertos.org/a00114.html and also obtained -; by writing to Richard Barry, contact details for whom are available on the -; FreeRTOS WEB site. -; -; 1 tab == 4 spaces! -; -; http://www.FreeRTOS.org - Documentation, latest information, license and -; contact details. -; -; http://www.SafeRTOS.com - A version that is certified for use in safety -; critical systems. -; -; http://www.OpenRTOS.com - Commercial support, development, porting, -; licensing and training services. -;*/ - - .extern pxCurrentTCB - .extern vTaskSwitchContext - .extern ulMaxSyscallInterruptPriorityConst - - .global PendSV_Handler - .global SVC_Handler - .global vPortStartFirstTask - .global vPortEnableVFP - -;----------------------------------------------------------- - - .section .text - .thumb - .align 4 -PendSV_Handler: .type func - mrs r0, psp - - ;Get the location of the current TCB. - ldr.w r3, =pxCurrentTCB - ldr r2, [r3] - - ;Is the task using the FPU context? If so, push high vfp registers. - tst r14, #0x10 - it eq - vstmdbeq r0!, {s16-s31} - - ;Save the core registers. - stmdb r0!, {r4-r11, r14} - - ;Save the new top of stack into the first member of the TCB. - str r0, [r2] - - stmdb sp!, {r3, r14} - ldr.w r0, =ulMaxSyscallInterruptPriorityConst - msr basepri, r0 - bl vTaskSwitchContext - mov r0, #0 - msr basepri, r0 - ldmia sp!, {r3, r14} - - ;The first item in pxCurrentTCB is the task top of stack. - ldr r1, [r3] - ldr r0, [r1] - - ;Pop the core registers. - ldmia r0!, {r4-r11, r14} - - ;Is the task using the FPU context? If so, pop the high vfp registers too. - tst r14, #0x10 - it eq - vldmiaeq r0!, {s16-s31} - - msr psp, r0 - bx r14 - - .size PendSV_Handler, $-PendSV_Handler - .endsec - -;----------------------------------------------------------- - - .section .text - .thumb - .align 4 -SVC_Handler: .type func - ;Get the location of the current TCB. - ldr.w r3, =pxCurrentTCB - ldr r1, [r3] - ldr r0, [r1] - ;Pop the core registers. - ldmia r0!, {r4-r11, r14} - msr psp, r0 - mov r0, #0 - msr basepri, r0 - bx r14 - .size SVC_Handler, $-SVC_Handler - .endsec - -;----------------------------------------------------------- - - .section .text - .thumb - .align 4 -vPortStartFirstTask .type func - ;Use the NVIC offset register to locate the stack. - ldr.w r0, =0xE000ED08 - ldr r0, [r0] - ldr r0, [r0] - ;Set the msp back to the start of the stack. - msr msp, r0 - ;Call SVC to start the first task. - cpsie i - svc 0 - .size vPortStartFirstTask, $-vPortStartFirstTask - .endsec - -;----------------------------------------------------------- - - .section .text - .thumb - .align 4 -vPortEnableVFP .type func - ;The FPU enable bits are in the CPACR. - ldr.w r0, =0xE000ED88 - ldr r1, [r0] - - ;Enable CP10 and CP11 coprocessors, then save back. - orr r1, r1, #( 0xf << 20 ) - str r1, [r0] - bx r14 - .size vPortEnableVFP, $-vPortEnableVFP - .endsec - - - .end - diff --git a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/portmacro.h b/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/portmacro.h deleted file mode 100644 index 2f671fba1..000000000 --- a/Demo/CORTEX_M4F_Infineon_XMC4500_Tasking/FreeRTOS_Source/portable/Tasking/ARM_CM4F/portmacro.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - FreeRTOS V7.1.0 - Copyright (C) 2011 Real Time Engineers Ltd. - - - *************************************************************************** - * * - * FreeRTOS tutorial books are available in pdf and paperback. * - * Complete, revised, and edited pdf reference manuals are also * - * available. * - * * - * Purchasing FreeRTOS documentation will not only help you, by * - * ensuring you get running as quickly as possible and with an * - * in-depth knowledge of how to use FreeRTOS, it will also help * - * the FreeRTOS project to continue with its mission of providing * - * professional grade, cross platform, de facto standard solutions * - * for microcontrollers - completely free of charge! * - * * - * >>> See http://www.FreeRTOS.org/Documentation for details. <<< * - * * - * Thank you for using FreeRTOS, and thank you for your support! * - * * - *************************************************************************** - - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation AND MODIFIED BY the FreeRTOS exception. - >>>NOTE<<< The modification to the GPL is included to allow you to - distribute a combined work that includes FreeRTOS without being obliged to - provide the source code for proprietary components outside of the FreeRTOS - kernel. FreeRTOS is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. You should have received a copy of the GNU General Public - License and the FreeRTOS license exception along with FreeRTOS; if not it - can be viewed here: http://www.freertos.org/a00114.html and also obtained - by writing to Richard Barry, contact details for whom are available on the - FreeRTOS WEB site. - - 1 tab == 4 spaces! - - http://www.FreeRTOS.org - Documentation, latest information, license and - contact details. - - http://www.SafeRTOS.com - A version that is certified for use in safety - critical systems. - - http://www.OpenRTOS.com - Commercial support, development, porting, - licensing and training services. -*/ - - -#ifndef PORTMACRO_H -#define PORTMACRO_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*----------------------------------------------------------- - * Port specific definitions. - * - * The settings in this file configure FreeRTOS correctly for the - * given hardware and compiler. - * - * These settings should not be altered. - *----------------------------------------------------------- - */ - -/* Type definitions. */ -#define portCHAR char -#define portFLOAT float -#define portDOUBLE double -#define portLONG long -#define portSHORT short -#define portSTACK_TYPE unsigned portLONG -#define portBASE_TYPE long - -#if( configUSE_16_BIT_TICKS == 1 ) - typedef unsigned portSHORT portTickType; - #define portMAX_DELAY ( portTickType ) 0xffff -#else - typedef unsigned portLONG portTickType; - #define portMAX_DELAY ( portTickType ) 0xffffffff -#endif -/*-----------------------------------------------------------*/ - -/* Architecture specifics. */ -#define portSTACK_GROWTH ( -1 ) -#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) -#define portBYTE_ALIGNMENT 8 -/*-----------------------------------------------------------*/ - - -/* Scheduler utilities. */ -extern void vPortYieldFromISR( void ); - -#define portYIELD() vPortYieldFromISR() - -#define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) vPortYieldFromISR() -/*-----------------------------------------------------------*/ - - -/* Critical section management. */ - -/* - * Set basepri to portMAX_SYSCALL_INTERRUPT_PRIORITY without effecting other - * registers. r0 is clobbered. - */ -#define portSET_INTERRUPT_MASK() __set_BASEPRI( configMAX_SYSCALL_INTERRUPT_PRIORITY ) - -/* - * Set basepri back to 0 without effective other registers. - * r0 is clobbered. - */ -#define portCLEAR_INTERRUPT_MASK() __set_BASEPRI( 0 ) - -#define portSET_INTERRUPT_MASK_FROM_ISR() 0;portSET_INTERRUPT_MASK() -#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) portCLEAR_INTERRUPT_MASK();(void)x - - -extern void vPortEnterCritical( void ); -extern void vPortExitCritical( void ); - -#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK() -#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK() -#define portENTER_CRITICAL() vPortEnterCritical() -#define portEXIT_CRITICAL() vPortExitCritical() -/*-----------------------------------------------------------*/ - -/* Task function macros as described on the FreeRTOS.org WEB site. */ -#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) -#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) - -#define portNOP() - -#ifdef __cplusplus -} -#endif - -#endif /* PORTMACRO_H */ - diff --git a/Demo/CORTEX_MPU_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h b/Demo/CORTEX_MPU_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h index eee498453..9e45f8679 100644 --- a/Demo/CORTEX_MPU_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h +++ b/Demo/CORTEX_MPU_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h @@ -54,6 +54,14 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + #include "LPC17xx.h" /*----------------------------------------------------------- diff --git a/Demo/MSP430X_MSP430F5438_CCS/Demo_Source/FreeRTOSConfig.h b/Demo/MSP430X_MSP430F5438_CCS/Demo_Source/FreeRTOSConfig.h index e320f7590..323dfda06 100644 --- a/Demo/MSP430X_MSP430F5438_CCS/Demo_Source/FreeRTOSConfig.h +++ b/Demo/MSP430X_MSP430F5438_CCS/Demo_Source/FreeRTOSConfig.h @@ -57,7 +57,7 @@ * executed from within CCS4! Once it has been executed, re-open or refresh * the CCS4 project and remove the #error line below. */ -//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. #ifndef FREERTOS_CONFIG_H diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemo/FreeRTOSConfig.h b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemo/FreeRTOSConfig.h index 942ac72d0..089bd7c9d 100644 --- a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemo/FreeRTOSConfig.h +++ b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemo/FreeRTOSConfig.h @@ -58,7 +58,7 @@ * from within the Xilinx SDK. Once it has been executed, re-open or refresh * the Eclipse project and remove the #error line below. */ -//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. #ifndef FREERTOS_CONFIG_H diff --git a/Demo/NiosII_CycloneIII_DBC3C40_GCC/RTOSDemo/FreeRTOSConfig.h b/Demo/NiosII_CycloneIII_DBC3C40_GCC/RTOSDemo/FreeRTOSConfig.h index 4ee8fb20a..710c9f62a 100644 --- a/Demo/NiosII_CycloneIII_DBC3C40_GCC/RTOSDemo/FreeRTOSConfig.h +++ b/Demo/NiosII_CycloneIII_DBC3C40_GCC/RTOSDemo/FreeRTOSConfig.h @@ -54,6 +54,14 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + #include "system.h" /*----------------------------------------------------------- diff --git a/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h b/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h index c92f8029d..d5e1ede27 100644 --- a/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h +++ b/Demo/TriCore_TC1782_TriBoard_GCC/RTOSDemo/FreeRTOSConfig.h @@ -54,6 +54,14 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + /*----------------------------------------------------------- * Application specific definitions. * diff --git a/Demo/WIN32-MingW/FreeRTOSConfig.h b/Demo/WIN32-MingW/FreeRTOSConfig.h index 0c6b3172d..9957fd7f3 100644 --- a/Demo/WIN32-MingW/FreeRTOSConfig.h +++ b/Demo/WIN32-MingW/FreeRTOSConfig.h @@ -55,6 +55,14 @@ #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H +/* + * The following #error directive is to remind users that a batch file must be + * executed prior to this project being built. The batch file *cannot* be + * executed from within the IDE! Once it has been executed, re-open or refresh + * the Eclipse project and remove the #error line below. + */ +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. + /*----------------------------------------------------------- * Application specific definitions. *