]> git.sur5r.net Git - freertos/commitdiff
Remove the remnants of the legacy trace functionality (since replaced with FreeRTOS...
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 12 Aug 2012 17:05:23 +0000 (17:05 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 12 Aug 2012 17:05:23 +0000 (17:05 +0000)
Replaced the #error that traps configMAX_SYSCALL_INTERRUPT_PRIORITY being set to 0 with a configASSERT() for GCC Cortex-M3/4 ports as the #error does not work if configMAX_SYSCALL_INTERRUPT_PRIORITY includes any casting.  Not a problem for other compilers as they cannot have casting anyway as that would break the assembly code.

git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1770 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Source/include/mpu_wrappers.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/portable/GCC/ARM_CM3/port.c
FreeRTOS/Source/portable/GCC/ARM_CM3_MPU/port.c
FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
FreeRTOS/Source/portable/GCC/NiosII/port.c
FreeRTOS/Source/portable/IAR/ATMega323/port.c
FreeRTOS/Source/portable/MemMang/heap_1.c
FreeRTOS/Source/portable/Tasking/ARM_CM4F/port.c
FreeRTOS/Source/tasks.c

index 12246b8d976d6008ced52327a7c5c1bc3813961c..6538c91a5a1afd7f95c4ea0a8f83d436b9f79220 100644 (file)
@@ -92,8 +92,6 @@ only for ports that are using the MPU. */
                #define uxTaskGetNumberOfTasks                  MPU_uxTaskGetNumberOfTasks\r
                #define vTaskList                                               MPU_vTaskList\r
                #define vTaskGetRunTimeStats                    MPU_vTaskGetRunTimeStats\r
-               #define vTaskStartTrace                                 MPU_vTaskStartTrace\r
-               #define ulTaskEndTrace                                  MPU_ulTaskEndTrace\r
                #define vTaskSetApplicationTaskTag              MPU_vTaskSetApplicationTaskTag\r
                #define xTaskGetApplicationTaskTag              MPU_xTaskGetApplicationTaskTag\r
                #define xTaskCallApplicationTaskHook    MPU_xTaskCallApplicationTaskHook\r
index 3f462ff3ee8e947041650d7b34eb210e523d9cf2..9f27bd13f73e8aa2a230e601a40904a0f6004758 100644 (file)
@@ -1085,40 +1085,6 @@ void vTaskList( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION;
  */\r
 void vTaskGetRunTimeStats( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION;\r
 \r
-/**\r
- * task. h\r
- * <PRE>void vTaskStartTrace( char * pcBuffer, unsigned portBASE_TYPE uxBufferSize );</PRE>\r
- *\r
- * Starts a real time kernel activity trace.  The trace logs the identity of\r
- * which task is running when.\r
- *\r
- * The trace file is stored in binary format.  A separate DOS utility called\r
- * convtrce.exe is used to convert this into a tab delimited text file which\r
- * can be viewed and plotted in a spread sheet.\r
- *\r
- * @param pcBuffer The buffer into which the trace will be written.\r
- *\r
- * @param ulBufferSize The size of pcBuffer in bytes.  The trace will continue\r
- * until either the buffer in full, or ulTaskEndTrace () is called.\r
- *\r
- * \page vTaskStartTrace vTaskStartTrace\r
- * \ingroup TaskUtils\r
- */\r
-void vTaskStartTrace( signed char * pcBuffer, unsigned long ulBufferSize ) PRIVILEGED_FUNCTION;\r
-\r
-/**\r
- * task. h\r
- * <PRE>unsigned long ulTaskEndTrace( void );</PRE>\r
- *\r
- * Stops a kernel activity trace.  See vTaskStartTrace ().\r
- *\r
- * @return The number of bytes that have been written into the trace buffer.\r
- *\r
- * \page usTaskEndTrace usTaskEndTrace\r
- * \ingroup TaskUtils\r
- */\r
-unsigned long ulTaskEndTrace( void ) PRIVILEGED_FUNCTION;\r
-\r
 /**\r
  * task.h\r
  * <PRE>unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask );</PRE>\r
index 344b381eb04f2d4ea3bb591d8096898c1ce620fa..0b0fc86daefdf5865bb32a7deb0eb82c56de27d6 100644 (file)
@@ -79,10 +79,6 @@ FreeRTOS.org versions prior to V4.4.0 did not include this definition. */
        #define configKERNEL_INTERRUPT_PRIORITY 255\r
 #endif\r
 \r
-#if configMAX_SYSCALL_INTERRUPT_PRIORITY == 0\r
-       #error configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html\r
-#endif\r
-\r
 /* Constants required to manipulate the NVIC. */\r
 #define portNVIC_SYSTICK_CTRL          ( ( volatile unsigned long *) 0xe000e010 )\r
 #define portNVIC_SYSTICK_LOAD          ( ( volatile unsigned long *) 0xe000e014 )\r
@@ -184,6 +180,10 @@ static void prvPortStartFirstTask( void )
  */\r
 portBASE_TYPE xPortStartScheduler( void )\r
 {\r
+       /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  \r
+       See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+       configASSERT( configMAX_SYSCALL_INTERRUPT_PRIORITY );\r
+\r
        /* Make PendSV, CallSV and SysTick the same priroity as the kernel. */\r
        *(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;\r
        *(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;\r
index 9c424bcc61ad738e20a89e1b86417dfd97315358..f1cd17caf176be1d502edcb78d7f2f06ac03eea9 100644 (file)
@@ -40,7 +40,7 @@
     FreeRTOS WEB site.\r
 \r
     1 tab == 4 spaces!\r
-    \r
+\r
     ***************************************************************************\r
      *                                                                       *\r
      *    Having a problem?  Start by reading the FAQ "My application does   *\r
      *                                                                       *\r
     ***************************************************************************\r
 \r
-    \r
-    http://www.FreeRTOS.org - Documentation, training, latest information, \r
+\r
+    http://www.FreeRTOS.org - Documentation, training, latest information,\r
     license and contact details.\r
-    \r
+\r
     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,\r
     including FreeRTOS+Trace - an indispensable productivity tool.\r
 \r
-    Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell \r
-    the code with commercial support, indemnification, and middleware, under \r
+    Real Time Engineers ltd license FreeRTOS to High Integrity Systems, who sell\r
+    the code with commercial support, indemnification, and middleware, under\r
     the OpenRTOS brand: http://www.OpenRTOS.com.  High Integrity Systems also\r
-    provide a safety engineered and independently SIL3 certified version under \r
+    provide a safety engineered and independently SIL3 certified version under\r
     the SafeRTOS brand: http://www.SafeRTOS.com.\r
 */\r
 \r
@@ -78,10 +78,6 @@ task.h is included from an application file. */
 #include "task.h"\r
 #include "queue.h"\r
 \r
-#if configMAX_SYSCALL_INTERRUPT_PRIORITY == 0\r
-       #error configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html\r
-#endif\r
-\r
 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE\r
 \r
 /* Constants required to access and manipulate the NVIC. */\r
@@ -191,8 +187,6 @@ portTickType MPU_xTaskGetTickCount( void );
 unsigned portBASE_TYPE MPU_uxTaskGetNumberOfTasks( void );\r
 void MPU_vTaskList( signed char *pcWriteBuffer );\r
 void MPU_vTaskGetRunTimeStats( signed char *pcWriteBuffer );\r
-void MPU_vTaskStartTrace( signed char * pcBuffer, unsigned long ulBufferSize );\r
-unsigned long MPU_ulTaskEndTrace( void );\r
 void MPU_vTaskSetApplicationTaskTag( xTaskHandle xTask, pdTASK_HOOK_CODE pxTagValue );\r
 pdTASK_HOOK_CODE MPU_xTaskGetApplicationTaskTag( xTaskHandle xTask );\r
 portBASE_TYPE MPU_xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter );\r
@@ -261,13 +255,9 @@ void vPortSVCHandler( void )
                #else\r
                        "       mrs r0, psp                                             \n"\r
                #endif\r
-                       "       b prvSVCHandler                                 \n"\r
-                       :::"r0"\r
+                       "       b %0                                                    \n"\r
+                       ::"i"(prvSVCHandler):"r0"\r
        );\r
-\r
-       /* This will never get executed, but is required to prevent prvSVCHandler\r
-       being removed by the optimiser. */\r
-       prvSVCHandler( NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -336,7 +326,11 @@ static void prvRestoreContextOfFirstTask( void )
  */\r
 portBASE_TYPE xPortStartScheduler( void )\r
 {\r
-       /* Make PendSV and SysTick the same priroity as the kernel. */\r
+       /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  See\r
+       http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+       configASSERT( ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) );\r
+\r
+       /* Make PendSV and SysTick the same priority as the kernel. */\r
        *(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;\r
        *(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;\r
 \r
@@ -838,30 +832,6 @@ portBASE_TYPE xRunningPrivileged = prvRaisePrivilege();
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-       void MPU_vTaskStartTrace( signed char * pcBuffer, unsigned long ulBufferSize )\r
-       {\r
-    portBASE_TYPE xRunningPrivileged = prvRaisePrivilege();\r
-\r
-               vTaskStartTrace( pcBuffer, ulBufferSize );\r
-        portRESET_PRIVILEGE( xRunningPrivileged );\r
-       }\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-       unsigned long MPU_ulTaskEndTrace( void )\r
-       {\r
-       unsigned long ulReturn;\r
-    portBASE_TYPE xRunningPrivileged = prvRaisePrivilege();\r
-\r
-               ulReturn = ulTaskEndTrace();\r
-        portRESET_PRIVILEGE( xRunningPrivileged );\r
-               return ulReturn;\r
-       }\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
 #if ( configUSE_APPLICATION_TASK_TAG == 1 )\r
        void MPU_vTaskSetApplicationTaskTag( xTaskHandle xTask, pdTASK_HOOK_CODE pxTagValue )\r
        {\r
@@ -1077,7 +1047,7 @@ void MPU_vQueueDelete( xQueueHandle xQueue )
 portBASE_TYPE xRunningPrivileged = prvRaisePrivilege();\r
 \r
        vQueueDelete( xQueue );\r
-       \r
+\r
        portRESET_PRIVILEGE( xRunningPrivileged );\r
 }\r
 /*-----------------------------------------------------------*/\r
index b9fd31c308530e33e95463f91e6125542768e047..2b44ce01233057ff07d7f1e92b91bfd476d7df6e 100644 (file)
        #error This port can only be used when the project options are configured to enable hardware floating point support.\r
 #endif\r
 \r
-#if configMAX_SYSCALL_INTERRUPT_PRIORITY == 0\r
-       #error configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html\r
-#endif\r
-\r
 /* Constants required to manipulate the NVIC. */\r
 #define portNVIC_SYSTICK_CTRL          ( ( volatile unsigned long * ) 0xe000e010 )\r
 #define portNVIC_SYSTICK_LOAD          ( ( volatile unsigned long * ) 0xe000e014 )\r
@@ -203,6 +199,10 @@ static void vPortStartFirstTask( void )
  */\r
 portBASE_TYPE xPortStartScheduler( void )\r
 {\r
+       /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  \r
+       See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+       configASSERT( configMAX_SYSCALL_INTERRUPT_PRIORITY );\r
+\r
        /* Make PendSV and SysTick the lowest priority interrupts. */\r
        *(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;\r
        *(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;\r
index 84adb785244180604b2c9d6bcfc331b0cf485902..41ab224da8be7f354021c5b0d48eddc02171967b 100644 (file)
@@ -98,10 +98,10 @@ void vPortSysTickHandler( void * context, alt_u32 id );
 \r
 /*-----------------------------------------------------------*/\r
 \r
-void prvReadGp( unsigned long *ulValue )\r
-{ \r
-       asm( "stw gp, (r4) " );\r
-};\r
+static void prvReadGp( unsigned long *ulValue )\r
+{\r
+       asm( "stw gp, (%0)" :: "r"(ulValue) );\r
+}\r
 /*-----------------------------------------------------------*/\r
 \r
 /* \r
index e9c1d451edf84f81d71176984b5faaa19faadd6f..8ecf296633f1eed5a3c71e057659c31932c53ea0 100644 (file)
@@ -280,7 +280,6 @@ portBASE_TYPE xPortStartScheduler( void )
        compiler does not fully support inline assembler we have to make a call.*/\r
        vPortStart();\r
 \r
-\r
        /* Should not get here! */\r
        return pdTRUE;\r
 }\r
index 6bb963439a8d539ac6405bef6e5ce52c803de2af..60c9899198f3700538b787c3d9feb5aa763428e1 100644 (file)
@@ -146,6 +146,9 @@ void vPortFree( void *pv )
        heap_4.c for alternative implementations, and the memory management pages of \r
        http://www.FreeRTOS.org for more information. */\r
        ( void ) pv;\r
+       \r
+       /* Force an assert as it is invalid to call this function. */\r
+       configASSERT( pv == NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index aa3ed04f7056c300a304b1b26d2e71e8283902c2..de09c2a680451f9591b8c37cc0edfeab7c573d82 100644 (file)
 #include "FreeRTOS.h"\r
 #include "task.h"\r
 \r
-#if configMAX_SYSCALL_INTERRUPT_PRIORITY == 0\r
-       #error configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.  See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html\r
-#endif\r
-\r
 /* Constants required to manipulate the NVIC. */\r
 #define portNVIC_SYSTICK_CTRL          ( ( volatile unsigned long * ) 0xe000e010 )\r
 #define portNVIC_SYSTICK_LOAD          ( ( volatile unsigned long * ) 0xe000e014 )\r
@@ -164,6 +160,10 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
  */\r
 portBASE_TYPE xPortStartScheduler( void )\r
 {\r
+       /* configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0.\r
+       See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html */\r
+       configASSERT( ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) );\r
+\r
        /* Make PendSV and SysTick the lowest priority interrupts. */\r
        *(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;\r
        *(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;\r
index 85e41a05f614bb735dd6ac96f53c89f8d795b15b..f13c70e0121c5c7ee25fc4850ab6720466acbdba 100644 (file)
@@ -399,7 +399,7 @@ signed portBASE_TYPE xReturn;
 tskTCB * pxNewTCB;\r
 \r
        configASSERT( pxTaskCode );\r
-       configASSERT( ( uxPriority < configMAX_PRIORITIES ) );\r
+       configASSERT( ( ( uxPriority & ( ~portPRIVILEGE_BIT ) ) < configMAX_PRIORITIES ) );\r
 \r
        /* Allocate the memory required by the TCB and stack for the new task,\r
        checking that the allocation was successful. */\r