/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
#/*\r
-# FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+# FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
#\r
# ***************************************************************************\r
# * *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
-/*
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
-
- ***************************************************************************
- * *
- * If you are: *
- * *
- * + New to FreeRTOS, *
- * + Wanting to learn FreeRTOS or multitasking in general quickly *
- * + Looking for basic training, *
- * + Wanting to improve your FreeRTOS skills and productivity *
- * *
- * then take a look at the FreeRTOS eBook *
- * *
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
- * http://www.FreeRTOS.org/Documentation *
- * *
- * A pdf reference manual is also available. Both are usually delivered *
- * to your inbox within 20 minutes to two hours when purchased between 8am *
- * and 8pm GMT (although please allow up to 24 hours in case of *
- * exceptional circumstances). 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 exception 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 FREERTOS_CONFIG_H
-#define FREERTOS_CONFIG_H
-
-#include <machine/sfradr.h>
-
-/*-----------------------------------------------------------
- * Application specific definitions.
- *
- * These definitions should be adjusted for your particular hardware and
- * application requirements.
- *
- * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
- *
- * See http://www.freertos.org/a00110.html.
- */
-
-/*----------------------------------------------------------*/
-
-#define configUSE_PREEMPTION 1
-#define configUSE_IDLE_HOOK 0
-#define configUSE_TICK_HOOK 0
-#define configCPU_CLOCK_HZ ( ( unsigned long ) CLOCK_FREQUENCY )
-#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
-#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
-#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
-#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 32 * 1024 ) )
-#define configMAX_TASK_NAME_LEN ( 16 )
-#define configUSE_TRACE_FACILITY 0
-#define configUSE_16_BIT_TICKS 0
-#define configIDLE_SHOULD_YIELD 0
-#define configUSE_MALLOC_FAILED_HOOK 1
-#define configCHECK_FOR_STACK_OVERFLOW 1
-
-/* Co-routine definitions. */
-#define configUSE_CO_ROUTINES 0
-#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
-
-/* Set the following definitions to 1 to include the API function, or zero
-to exclude the API function.
-We use --gc-sections when linking, so there is no harm is setting all of these to 1 */
-
-#define INCLUDE_vTaskPrioritySet 1
-#define INCLUDE_uxTaskPriorityGet 1
-#define INCLUDE_vTaskDelete 1
-#define INCLUDE_vTaskCleanUpResources 1
-#define INCLUDE_vTaskSuspend 1
-#define INCLUDE_vTaskDelayUntil 1
-#define INCLUDE_vTaskDelay 1
-
-#define BLOCKQ_1 1
-
-
-
-
-/* A task is created to test the behaviour of the interrupt controller during
-context switches. This macro is just used to set a variable to true each time
-the test task is switched out - the task itself needs to know when this happens
-in order to complete its tests. This macro will slow down the context switch
-and can normally be removed (just delete the whole macro, although doing so will
-cause the test task to indicate an error). */
-extern void *xICTestTask;
-extern volatile unsigned long ulTaskSwitchedOut;
-#define traceTASK_SWITCHED_OUT() if( pxCurrentTCB == xICTestTask ) ulTaskSwitchedOut = pdTRUE
-
-
-
-#endif /* FREERTOS_CONFIG_H */
-
-
+/*\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * If you are: *\r
+ * *\r
+ * + New to FreeRTOS, *\r
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
+ * + Looking for basic training, *\r
+ * + Wanting to improve your FreeRTOS skills and productivity *\r
+ * *\r
+ * then take a look at the FreeRTOS eBook *\r
+ * *\r
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * A pdf reference manual is also available. Both are usually delivered *\r
+ * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+ * and 8pm GMT (although please allow up to 24 hours in case of *\r
+ * exceptional circumstances). Thank you for your support! *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+ ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+ a combined work that includes FreeRTOS without being obliged to provide the\r
+ source code for proprietary components outside of the FreeRTOS kernel.\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ more details. You should have received a copy of the GNU General Public\r
+ License and the FreeRTOS license exception along with FreeRTOS; if not it\r
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ http://www.FreeRTOS.org - Documentation, latest information, license and\r
+ contact details.\r
+\r
+ http://www.SafeRTOS.com - A version that is certified for use in safety\r
+ critical systems.\r
+\r
+ http://www.OpenRTOS.com - Commercial support, development, porting,\r
+ licensing and training services.\r
+*/\r
+\r
+#ifndef FREERTOS_CONFIG_H\r
+#define FREERTOS_CONFIG_H\r
+\r
+#include <machine/sfradr.h>\r
+\r
+/*-----------------------------------------------------------\r
+ * Application specific definitions.\r
+ *\r
+ * These definitions should be adjusted for your particular hardware and\r
+ * application requirements.\r
+ *\r
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE\r
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.\r
+ *\r
+ * See http://www.freertos.org/a00110.html.\r
+ */\r
+\r
+/*----------------------------------------------------------*/\r
+\r
+#define configUSE_PREEMPTION 1\r
+#define configUSE_IDLE_HOOK 0\r
+#define configUSE_TICK_HOOK 0\r
+#define configCPU_CLOCK_HZ ( ( unsigned long ) CLOCK_FREQUENCY )\r
+#define configTICK_RATE_HZ ( ( portTickType ) 1000 )\r
+#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )\r
+#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )\r
+#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 32 * 1024 ) )\r
+#define configMAX_TASK_NAME_LEN ( 16 )\r
+#define configUSE_TRACE_FACILITY 0\r
+#define configUSE_16_BIT_TICKS 0\r
+#define configIDLE_SHOULD_YIELD 0\r
+#define configUSE_MALLOC_FAILED_HOOK 1\r
+#define configCHECK_FOR_STACK_OVERFLOW 1\r
+\r
+/* Co-routine definitions. */\r
+#define configUSE_CO_ROUTINES 0\r
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\r
+\r
+/* Set the following definitions to 1 to include the API function, or zero\r
+to exclude the API function.\r
+We use --gc-sections when linking, so there is no harm is setting all of these to 1 */\r
+\r
+#define INCLUDE_vTaskPrioritySet 1\r
+#define INCLUDE_uxTaskPriorityGet 1\r
+#define INCLUDE_vTaskDelete 1\r
+#define INCLUDE_vTaskCleanUpResources 1\r
+#define INCLUDE_vTaskSuspend 1\r
+#define INCLUDE_vTaskDelayUntil 1\r
+#define INCLUDE_vTaskDelay 1\r
+\r
+#define BLOCKQ_1 1\r
+\r
+\r
+\r
+\r
+/* A task is created to test the behaviour of the interrupt controller during\r
+context switches. This macro is just used to set a variable to true each time\r
+the test task is switched out - the task itself needs to know when this happens\r
+in order to complete its tests. This macro will slow down the context switch\r
+and can normally be removed (just delete the whole macro, although doing so will\r
+cause the test task to indicate an error). */\r
+extern void *xICTestTask;\r
+extern volatile unsigned long ulTaskSwitchedOut;\r
+#define traceTASK_SWITCHED_OUT() if( pxCurrentTCB == xICTestTask ) ulTaskSwitchedOut = pdTRUE\r
+\r
+\r
+\r
+#endif /* FREERTOS_CONFIG_H */\r
+\r
+\r
-/*
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
-
- ***************************************************************************
- * *
- * If you are: *
- * *
- * + New to FreeRTOS, *
- * + Wanting to learn FreeRTOS or multitasking in general quickly *
- * + Looking for basic training, *
- * + Wanting to improve your FreeRTOS skills and productivity *
- * *
- * then take a look at the FreeRTOS eBook *
- * *
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
- * http://www.FreeRTOS.org/Documentation *
- * *
- * A pdf reference manual is also available. Both are usually delivered *
- * to your inbox within 20 minutes to two hours when purchased between 8am *
- * and 8pm GMT (although please allow up to 24 hours in case of *
- * exceptional circumstances). 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 exception 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.
-*/
-
-/* Scheduler includes. */
-#include "FreeRTOS.h"
-#include "portable.h"
-
-/* Demo app includes. */
-#include "partest.h"
-#include "demoGpio.h"
-
-#define partstNUM_LEDS ( 8 )
-#define partstALL_OUTPUTS_OFF ( ( unsigned long ) ~(0xFFFFFFFF << partstNUM_LEDS) )
-
-static unsigned long ulLEDReg;
-
-/*-----------------------------------------------------------
- * Simple parallel port IO routines.
- *-----------------------------------------------------------*/
-
-static void SetLeds (unsigned int leds)
-{
- gpio->out.leds = leds;
-}
-
-/*-----------------------------------------------------------*/
-
-void vParTestInitialise( void )
-{
- gpio->dir.leds = 0xff;
-}
-
-/*-----------------------------------------------------------*/
-
-void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )
-{
- /* Switch an LED on or off as requested. */
- if (uxLED < partstNUM_LEDS)
- {
- if( xValue )
- {
- ulLEDReg &= ~( 1 << uxLED );
- }
- else
- {
- ulLEDReg |= ( 1 << uxLED );
- }
-
- SetLeds( ulLEDReg );
- }
-}
-/*-----------------------------------------------------------*/
-
-void vParTestToggleLED( unsigned portBASE_TYPE uxLED )
-{
- /* Toggle the state of the requested LED. */
- if (uxLED < partstNUM_LEDS)
- {
- ulLEDReg ^= ( 1 << uxLED );
- SetLeds( ulLEDReg );
- }
-}
-
+/*\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * If you are: *\r
+ * *\r
+ * + New to FreeRTOS, *\r
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
+ * + Looking for basic training, *\r
+ * + Wanting to improve your FreeRTOS skills and productivity *\r
+ * *\r
+ * then take a look at the FreeRTOS eBook *\r
+ * *\r
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * A pdf reference manual is also available. Both are usually delivered *\r
+ * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+ * and 8pm GMT (although please allow up to 24 hours in case of *\r
+ * exceptional circumstances). Thank you for your support! *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+ ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+ a combined work that includes FreeRTOS without being obliged to provide the\r
+ source code for proprietary components outside of the FreeRTOS kernel.\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ more details. You should have received a copy of the GNU General Public\r
+ License and the FreeRTOS license exception along with FreeRTOS; if not it\r
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ http://www.FreeRTOS.org - Documentation, latest information, license and\r
+ contact details.\r
+\r
+ http://www.SafeRTOS.com - A version that is certified for use in safety\r
+ critical systems.\r
+\r
+ http://www.OpenRTOS.com - Commercial support, development, porting,\r
+ licensing and training services.\r
+*/\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "portable.h"\r
+\r
+/* Demo app includes. */\r
+#include "partest.h"\r
+#include "demoGpio.h"\r
+\r
+#define partstNUM_LEDS ( 8 )\r
+#define partstALL_OUTPUTS_OFF ( ( unsigned long ) ~(0xFFFFFFFF << partstNUM_LEDS) )\r
+\r
+static unsigned long ulLEDReg;\r
+\r
+/*-----------------------------------------------------------\r
+ * Simple parallel port IO routines.\r
+ *-----------------------------------------------------------*/\r
+\r
+static void SetLeds (unsigned int leds)\r
+{\r
+ gpio->out.leds = leds;\r
+}\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestInitialise( void )\r
+{\r
+ gpio->dir.leds = 0xff;\r
+}\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+{\r
+ /* Switch an LED on or off as requested. */\r
+ if (uxLED < partstNUM_LEDS)\r
+ {\r
+ if( xValue )\r
+ {\r
+ ulLEDReg &= ~( 1 << uxLED );\r
+ }\r
+ else\r
+ {\r
+ ulLEDReg |= ( 1 << uxLED );\r
+ }\r
+\r
+ SetLeds( ulLEDReg );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
+{\r
+ /* Toggle the state of the requested LED. */\r
+ if (uxLED < partstNUM_LEDS)\r
+ {\r
+ ulLEDReg ^= ( 1 << uxLED );\r
+ SetLeds( ulLEDReg );\r
+ }\r
+}\r
+\r
-/*
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
-
- ***************************************************************************
- * *
- * If you are: *
- * *
- * + New to FreeRTOS, *
- * + Wanting to learn FreeRTOS or multitasking in general quickly *
- * + Looking for basic training, *
- * + Wanting to improve your FreeRTOS skills and productivity *
- * *
- * then take a look at the FreeRTOS eBook *
- * *
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
- * http://www.FreeRTOS.org/Documentation *
- * *
- * A pdf reference manual is also available. Both are usually delivered *
- * to your inbox within 20 minutes to two hours when purchased between 8am *
- * and 8pm GMT (although please allow up to 24 hours in case of *
- * exceptional circumstances). 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 exception 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.
-*/
-
-#include "FreeRTOS.h"
-#include "task.h"
-
-/*
- * Two test tasks that fill the CPU registers with known values before
- * continuously looping round checking that each register still contains its
- * expected value. Both tasks use a separate set of values, with an incorrect
- * value being found at any time being indicative of an error in the context
- * switch mechanism. One of the tasks uses a yield instruction to increase the
- * test coverage. The nature of these tasks necessitates that they are written
- * in assembly code.
- */
-static void vRegTest1( void *pvParameters );
-static void vRegTest2( void *pvParameters );
-
-/*
- * A task that tests the management of the Interrupt Controller (IC) during a
- * context switch. The state of the IC current mask level must be maintained
- * across context switches. Also, yields must be able to be performed when the
- * interrupt controller mask is not zero. This task tests both these
- * requirements.
- */
-static void prvICCheck1Task( void *pvParameters );
-
-/* Counters used to ensure the tasks are still running. */
-static volatile unsigned long ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL, ulICTestCounter = 0UL;
-
-/* Handle to the task that checks the interrupt controller behaviour. This is
-used by the traceTASK_SWITCHED_OUT() macro, which is defined in
-FreeRTOSConfig.h and can be removed - it is just for the purpose of this test. */
-xTaskHandle xICTestTask = NULL;
-
-/* Variable that gets set to pdTRUE by traceTASK_SWITCHED_OUT each time
-is switched out. */
-volatile unsigned long ulTaskSwitchedOut;
-/*-----------------------------------------------------------*/
-
-void vStartRegTestTasks( void )
-{
- xTaskCreate( vRegTest1, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
- xTaskCreate( vRegTest2, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
- xTaskCreate( prvICCheck1Task, ( signed char * ) "ICCheck", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xICTestTask );
-}
-/*-----------------------------------------------------------*/
-
-static void vRegTest1( void *pvParameters )
-{
- __asm volatile
- (
- " mov r2, #0x02 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
- " mov r3, #0x03 \n"
- " mov r4, #0x04 \n"
- " mov r5, #0x05 \n"
- " mov r6, #0x06 \n"
- " mov r7, #0x07 \n"
- " mov r8, #0x08 \n"
- " mov r9, #0x09 \n"
- " mov r10, #0x0a \n"
- " mov r11, #0x0b \n"
- " mov r12, #0x0c \n"
- " mov r13, #0x0d \n"
- " mov r14, #0x0e \n"
- " mov r15, #0x0f \n"
- " \n"
- "reg_check_loop_1: \n"
- " trap #31 \n"
- " cmp r2, #0x02 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
- " bne.s reg_check_error_1 \n"
- " cmp r3, #0x03 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r4, #0x04 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r5, #0x05 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r6, #0x06 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r7, #0x07 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r8, #0x08 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r9, #0x09 \n"
- " bne.s reg_check_error_1 \n"
- " cmp r10, #0x0a \n"
- " bne.s reg_check_error_1 \n"
- " cmp r11, #0x0b \n"
- " bne.s reg_check_error_1 \n"
- " cmp r12, #0x0c \n"
- " bne.s reg_check_error_1 \n"
- " cmp r13, #0x0d \n"
- " bne.s reg_check_error_1 \n"
- " cmp r14, #0x0e \n"
- " bne.s reg_check_error_1 \n"
- " cmp r15, #0x0f \n"
- " bne.s reg_check_error_1 \n"
- " \n"
- " ld r2, [r0]+short(ulRegTest1Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
- " add r2, #1 \n"
- " st r2, [r0]+short(ulRegTest1Counter) \n"
- " mov r2, #0x02 \n"
- " \n"
- " bra.s reg_check_loop_1 \n" /* Do it all again. */
- " \n"
- "reg_check_error_1: \n"
- "bra.s . \n"
- );
-}
-/*-----------------------------------------------------------*/
-
-static void vRegTest2( void *pvParameters )
-{
- __asm volatile
- (
- " mov r2, #0x12 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */
- " mov r3, #0x13 \n"
- " mov r4, #0x14 \n"
- " mov r5, #0x15 \n"
- " mov r6, #0x16 \n"
- " mov r7, #0x17 \n"
- " mov r8, #0x18 \n"
- " mov r9, #0x19 \n"
- " mov r10, #0x1a \n"
- " mov r11, #0x1b \n"
- " mov r12, #0x1c \n"
- " mov r13, #0x1d \n"
- " mov r14, #0x1e \n"
- " mov r15, #0x1f \n"
- " \n"
- "reg_check_loop_2: \n"
- " cmp r2, #0x12 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */
- " bne.s reg_check_error_2 \n"
- " cmp r3, #0x13 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r4, #0x14 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r5, #0x15 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r6, #0x16 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r7, #0x17 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r8, #0x18 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r9, #0x19 \n"
- " bne.s reg_check_error_2 \n"
- " cmp r10, #0x1a \n"
- " bne.s reg_check_error_2 \n"
- " cmp r11, #0x1b \n"
- " bne.s reg_check_error_2 \n"
- " cmp r12, #0x1c \n"
- " bne.s reg_check_error_2 \n"
- " cmp r13, #0x1d \n"
- " bne.s reg_check_error_2 \n"
- " cmp r14, #0x1e \n"
- " bne.s reg_check_error_2 \n"
- " cmp r15, #0x1f \n"
- " bne.s reg_check_error_2 \n"
- " \n"
- " ld r2, [r0]+short(ulRegTest2Counter) \n" /* Increment the loop counter to show that this task is still running error free. */
- " add r2, #1 \n"
- " st r2, [r0]+short(ulRegTest2Counter) \n"
- " mov r2, #0x12 \n"
- " \n"
- " bra.s reg_check_loop_2 \n" /* Do it all again. */
- " \n"
- "reg_check_error_2: \n"
- "bra.s . \n"
- );
-}
-/*-----------------------------------------------------------*/
-
-static void prvICCheck1Task( void *pvParameters )
-{
-long lICCheckStatus = pdPASS;
-
- for( ;; )
- {
- /* At this point the interrupt mask should be zero. */
- if( ic->cpl != 0 )
- {
- lICCheckStatus = pdFAIL;
- }
-
- /* If we yield here, it should still be 0 when the task next runs.
- ulTaskSwitchedOut is just used to check that a switch does actually
- happen. */
- ulTaskSwitchedOut = pdFALSE;
- taskYIELD();
- if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != 0 ) )
- {
- lICCheckStatus = pdFAIL;
- }
-
- /* Set the interrupt mask to portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1,
- before checking it is as expected. */
- taskENTER_CRITICAL();
- if( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) )
- {
- lICCheckStatus = pdFAIL;
- }
-
- /* If we yield here, it should still be
- portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 10 when the task next runs. */
- ulTaskSwitchedOut = pdFALSE;
- taskYIELD();
- if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) ) )
- {
- lICCheckStatus = pdFAIL;
- }
-
- /* Return the interrupt mask to its default state. */
- taskEXIT_CRITICAL();
-
- /* Just increment a loop counter so the check task knows if this task
- is still running or not. */
- if( lICCheckStatus == pdPASS )
- {
- ulICTestCounter++;
- }
- }
-}
-/*-----------------------------------------------------------*/
-
-portBASE_TYPE xAreRegTestTasksStillRunning( void )
-{
-static unsigned long ulLastCounter1 = 0UL, ulLastCounter2 = 0UL, ulLastICTestCounter = 0UL;
-long lReturn;
-
- /* Check that both loop counters are still incrementing, indicating that
- both reg test tasks are still running error free. */
- if( ulLastCounter1 == ulRegTest1Counter )
- {
- lReturn = pdFAIL;
- }
- else if( ulLastCounter2 == ulRegTest2Counter )
- {
- lReturn = pdFAIL;
- }
- else if( ulLastICTestCounter == ulICTestCounter )
- {
- lReturn = pdFAIL;
- }
- else
- {
- lReturn = pdPASS;
- }
-
- ulLastCounter1 = ulRegTest1Counter;
- ulLastCounter2 = ulRegTest2Counter;
- ulLastICTestCounter = ulICTestCounter;
-
- return lReturn;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+/*\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * If you are: *\r
+ * *\r
+ * + New to FreeRTOS, *\r
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
+ * + Looking for basic training, *\r
+ * + Wanting to improve your FreeRTOS skills and productivity *\r
+ * *\r
+ * then take a look at the FreeRTOS eBook *\r
+ * *\r
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * A pdf reference manual is also available. Both are usually delivered *\r
+ * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+ * and 8pm GMT (although please allow up to 24 hours in case of *\r
+ * exceptional circumstances). Thank you for your support! *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+ ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+ a combined work that includes FreeRTOS without being obliged to provide the\r
+ source code for proprietary components outside of the FreeRTOS kernel.\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ more details. You should have received a copy of the GNU General Public\r
+ License and the FreeRTOS license exception along with FreeRTOS; if not it\r
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ http://www.FreeRTOS.org - Documentation, latest information, license and\r
+ contact details.\r
+\r
+ http://www.SafeRTOS.com - A version that is certified for use in safety\r
+ critical systems.\r
+\r
+ http://www.OpenRTOS.com - Commercial support, development, porting,\r
+ licensing and training services.\r
+*/\r
+\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/*\r
+ * Two test tasks that fill the CPU registers with known values before\r
+ * continuously looping round checking that each register still contains its\r
+ * expected value. Both tasks use a separate set of values, with an incorrect\r
+ * value being found at any time being indicative of an error in the context\r
+ * switch mechanism. One of the tasks uses a yield instruction to increase the\r
+ * test coverage. The nature of these tasks necessitates that they are written\r
+ * in assembly code.\r
+ */\r
+static void vRegTest1( void *pvParameters );\r
+static void vRegTest2( void *pvParameters );\r
+\r
+/*\r
+ * A task that tests the management of the Interrupt Controller (IC) during a\r
+ * context switch. The state of the IC current mask level must be maintained\r
+ * across context switches. Also, yields must be able to be performed when the\r
+ * interrupt controller mask is not zero. This task tests both these\r
+ * requirements.\r
+ */\r
+static void prvICCheck1Task( void *pvParameters );\r
+\r
+/* Counters used to ensure the tasks are still running. */\r
+static volatile unsigned long ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL, ulICTestCounter = 0UL;\r
+\r
+/* Handle to the task that checks the interrupt controller behaviour. This is\r
+used by the traceTASK_SWITCHED_OUT() macro, which is defined in\r
+FreeRTOSConfig.h and can be removed - it is just for the purpose of this test. */\r
+xTaskHandle xICTestTask = NULL;\r
+\r
+/* Variable that gets set to pdTRUE by traceTASK_SWITCHED_OUT each time\r
+is switched out. */\r
+volatile unsigned long ulTaskSwitchedOut;\r
+/*-----------------------------------------------------------*/\r
+\r
+void vStartRegTestTasks( void )\r
+{\r
+ xTaskCreate( vRegTest1, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
+ xTaskCreate( vRegTest2, ( signed char * ) "RTest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
+ xTaskCreate( prvICCheck1Task, ( signed char * ) "ICCheck", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xICTestTask );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vRegTest1( void *pvParameters )\r
+{\r
+ __asm volatile\r
+ (\r
+ " mov r2, #0x02 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */\r
+ " mov r3, #0x03 \n"\r
+ " mov r4, #0x04 \n"\r
+ " mov r5, #0x05 \n"\r
+ " mov r6, #0x06 \n"\r
+ " mov r7, #0x07 \n"\r
+ " mov r8, #0x08 \n"\r
+ " mov r9, #0x09 \n"\r
+ " mov r10, #0x0a \n"\r
+ " mov r11, #0x0b \n"\r
+ " mov r12, #0x0c \n"\r
+ " mov r13, #0x0d \n"\r
+ " mov r14, #0x0e \n"\r
+ " mov r15, #0x0f \n"\r
+ " \n"\r
+ "reg_check_loop_1: \n"\r
+ " trap #31 \n"\r
+ " cmp r2, #0x02 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r3, #0x03 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r4, #0x04 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r5, #0x05 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r6, #0x06 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r7, #0x07 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r8, #0x08 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r9, #0x09 \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r10, #0x0a \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r11, #0x0b \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r12, #0x0c \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r13, #0x0d \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r14, #0x0e \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " cmp r15, #0x0f \n"\r
+ " bne.s reg_check_error_1 \n"\r
+ " \n"\r
+ " ld r2, [r0]+short(ulRegTest1Counter) \n" /* Increment the loop counter to show that this task is still running error free. */\r
+ " add r2, #1 \n"\r
+ " st r2, [r0]+short(ulRegTest1Counter) \n"\r
+ " mov r2, #0x02 \n"\r
+ " \n"\r
+ " bra.s reg_check_loop_1 \n" /* Do it all again. */\r
+ " \n"\r
+ "reg_check_error_1: \n"\r
+ "bra.s . \n"\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vRegTest2( void *pvParameters )\r
+{\r
+ __asm volatile\r
+ (\r
+ " mov r2, #0x12 \n" /* Fill the registers with known values, r0 is always 0 and r1 is the stack pointer. */\r
+ " mov r3, #0x13 \n"\r
+ " mov r4, #0x14 \n"\r
+ " mov r5, #0x15 \n"\r
+ " mov r6, #0x16 \n"\r
+ " mov r7, #0x17 \n"\r
+ " mov r8, #0x18 \n"\r
+ " mov r9, #0x19 \n"\r
+ " mov r10, #0x1a \n"\r
+ " mov r11, #0x1b \n"\r
+ " mov r12, #0x1c \n"\r
+ " mov r13, #0x1d \n"\r
+ " mov r14, #0x1e \n"\r
+ " mov r15, #0x1f \n"\r
+ " \n"\r
+ "reg_check_loop_2: \n"\r
+ " cmp r2, #0x12 \n" /* Check that each register still contains the expected value, jump to an infinite loop if an error is found. */\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r3, #0x13 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r4, #0x14 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r5, #0x15 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r6, #0x16 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r7, #0x17 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r8, #0x18 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r9, #0x19 \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r10, #0x1a \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r11, #0x1b \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r12, #0x1c \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r13, #0x1d \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r14, #0x1e \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " cmp r15, #0x1f \n"\r
+ " bne.s reg_check_error_2 \n"\r
+ " \n"\r
+ " ld r2, [r0]+short(ulRegTest2Counter) \n" /* Increment the loop counter to show that this task is still running error free. */\r
+ " add r2, #1 \n"\r
+ " st r2, [r0]+short(ulRegTest2Counter) \n"\r
+ " mov r2, #0x12 \n"\r
+ " \n"\r
+ " bra.s reg_check_loop_2 \n" /* Do it all again. */\r
+ " \n"\r
+ "reg_check_error_2: \n"\r
+ "bra.s . \n"\r
+ );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvICCheck1Task( void *pvParameters )\r
+{\r
+long lICCheckStatus = pdPASS;\r
+\r
+ for( ;; )\r
+ {\r
+ /* At this point the interrupt mask should be zero. */\r
+ if( ic->cpl != 0 )\r
+ {\r
+ lICCheckStatus = pdFAIL;\r
+ }\r
+\r
+ /* If we yield here, it should still be 0 when the task next runs.\r
+ ulTaskSwitchedOut is just used to check that a switch does actually\r
+ happen. */\r
+ ulTaskSwitchedOut = pdFALSE;\r
+ taskYIELD();\r
+ if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != 0 ) )\r
+ {\r
+ lICCheckStatus = pdFAIL;\r
+ }\r
+\r
+ /* Set the interrupt mask to portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1,\r
+ before checking it is as expected. */\r
+ taskENTER_CRITICAL();\r
+ if( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) )\r
+ {\r
+ lICCheckStatus = pdFAIL;\r
+ }\r
+\r
+ /* If we yield here, it should still be\r
+ portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 10 when the task next runs. */\r
+ ulTaskSwitchedOut = pdFALSE;\r
+ taskYIELD();\r
+ if( ( ulTaskSwitchedOut != pdTRUE ) || ( ic->cpl != ( portSYSTEM_INTERRUPT_PRIORITY_LEVEL + 1 ) ) )\r
+ {\r
+ lICCheckStatus = pdFAIL;\r
+ }\r
+\r
+ /* Return the interrupt mask to its default state. */\r
+ taskEXIT_CRITICAL();\r
+\r
+ /* Just increment a loop counter so the check task knows if this task\r
+ is still running or not. */\r
+ if( lICCheckStatus == pdPASS )\r
+ {\r
+ ulICTestCounter++;\r
+ }\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+portBASE_TYPE xAreRegTestTasksStillRunning( void )\r
+{\r
+static unsigned long ulLastCounter1 = 0UL, ulLastCounter2 = 0UL, ulLastICTestCounter = 0UL;\r
+long lReturn;\r
+\r
+ /* Check that both loop counters are still incrementing, indicating that\r
+ both reg test tasks are still running error free. */\r
+ if( ulLastCounter1 == ulRegTest1Counter )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+ else if( ulLastCounter2 == ulRegTest2Counter )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+ else if( ulLastICTestCounter == ulICTestCounter )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+ else\r
+ {\r
+ lReturn = pdPASS;\r
+ }\r
+\r
+ ulLastCounter1 = ulRegTest1Counter;\r
+ ulLastCounter2 = ulRegTest2Counter;\r
+ ulLastICTestCounter = ulICTestCounter;\r
+\r
+ return lReturn;\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
-/*
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
-
- ***************************************************************************
- * *
- * If you are: *
- * *
- * + New to FreeRTOS, *
- * + Wanting to learn FreeRTOS or multitasking in general quickly *
- * + Looking for basic training, *
- * + Wanting to improve your FreeRTOS skills and productivity *
- * *
- * then take a look at the FreeRTOS eBook *
- * *
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
- * http://www.FreeRTOS.org/Documentation *
- * *
- * A pdf reference manual is also available. Both are usually delivered *
- * to your inbox within 20 minutes to two hours when purchased between 8am *
- * and 8pm GMT (although please allow up to 24 hours in case of *
- * exceptional circumstances). 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 exception 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 REG_TEST_H
-#define REG_TEST_H
-
-void vStartRegTestTasks( void );
-portBASE_TYPE xAreRegTestTasksStillRunning( void );
-
-#endif
-
+/*\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * If you are: *\r
+ * *\r
+ * + New to FreeRTOS, *\r
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
+ * + Looking for basic training, *\r
+ * + Wanting to improve your FreeRTOS skills and productivity *\r
+ * *\r
+ * then take a look at the FreeRTOS eBook *\r
+ * *\r
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * A pdf reference manual is also available. Both are usually delivered *\r
+ * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+ * and 8pm GMT (although please allow up to 24 hours in case of *\r
+ * exceptional circumstances). Thank you for your support! *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+ ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+ a combined work that includes FreeRTOS without being obliged to provide the\r
+ source code for proprietary components outside of the FreeRTOS kernel.\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ more details. You should have received a copy of the GNU General Public\r
+ License and the FreeRTOS license exception along with FreeRTOS; if not it\r
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ http://www.FreeRTOS.org - Documentation, latest information, license and\r
+ contact details.\r
+\r
+ http://www.SafeRTOS.com - A version that is certified for use in safety\r
+ critical systems.\r
+\r
+ http://www.OpenRTOS.com - Commercial support, development, porting,\r
+ licensing and training services.\r
+*/\r
+\r
+#ifndef REG_TEST_H\r
+#define REG_TEST_H\r
+\r
+void vStartRegTestTasks( void );\r
+portBASE_TYPE xAreRegTestTasksStillRunning( void );\r
+\r
+#endif\r
+\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
-/*
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
-
- ***************************************************************************
- * *
- * If you are: *
- * *
- * + New to FreeRTOS, *
- * + Wanting to learn FreeRTOS or multitasking in general quickly *
- * + Looking for basic training, *
- * + Wanting to improve your FreeRTOS skills and productivity *
- * *
- * then take a look at the FreeRTOS eBook *
- * *
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
- * http://www.FreeRTOS.org/Documentation *
- * *
- * A pdf reference manual is also available. Both are usually delivered *
- * to your inbox within 20 minutes to two hours when purchased between 8am *
- * and 8pm GMT (although please allow up to 24 hours in case of *
- * exceptional circumstances). 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 exception 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.
-*/
-
-/*
- * Creates all the demo application tasks, then starts the scheduler.
- *
- * Main.c also creates a task called "Check". This only executes every three
- * seconds but has the highest priority so is guaranteed to get processor time.
- * Its main function is to check that all the other tasks are still operational.
- * Each task (other than the "flash" tasks) maintains a unique count that is
- * incremented each time the task successfully completes its function. Should
- * any error occur within such a task the count is permanently halted. The
- * check task inspects the count of each task to ensure it has changed since
- * the last time the check task executed. If all the count variables have
- * changed all the tasks are still executing error free, and the check task
- * toggles the on board LED. Should any task contain an error at any time
- * the LED toggle rate will change from 3 seconds to 500ms.
- *
- * NOTE: The demo application includes tasks that send and receive characters
- * over the UART. The characters sent by one task are received by another -
- * with an error condition being flagged should any characters be missed or
- * received out of order. A loopback connector is required on the 9way D socket
- * for this mechanism to operation (pins 2 and 3 the socket should be connected
- * together - a paper clip is normally sufficient).
- *
- */
-
-/* Standard includes. */
-#include <stdlib.h>
-#include <string.h>
-
-/* Scheduler includes. */
-#include "FreeRTOS.h"
-#include "task.h"
-
-/* Demo application includes. */
-#include "partest.h"
-#include "flash.h"
-#include "integer.h"
-#include "PollQ.h"
-#include "comtest2.h"
-#include "semtest.h"
-#include "flop.h"
-#include "dynamic.h"
-#include "BlockQ.h"
-#include "serial.h"
-#include "demoGpio.h"
-#include "7seg.h"
-#include "RegTest.h"
-
-/*-----------------------------------------------------------*/
-
-/* Constants for the ComTest tasks. */
-#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 )
-#define mainCOM_TEST_LED ( 5 )
-
-/* Priorities for the demo application tasks. */
-#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )
-#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )
-#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )
-#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )
-#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )
-#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )
-#define main7SEG_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
-
-/* The rate at which the on board LED will toggle when there is/is not an
-error. */
-#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
-#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )
-#define mainON_BOARD_LED_BIT ( ( unsigned long ) 7 )
-
-/* The size of the memory blocks allocated by the vMemCheckTask() task. */
-#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )
-#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )
-#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )
-
-/*-----------------------------------------------------------*/
-
-/*
- * Checks that all the demo application tasks are still executing without error
- * - as described at the top of the file.
- */
-static long prvCheckOtherTasksAreStillRunning( void );
-
-/*
- * The task that executes at the highest priority and calls
- * prvCheckOtherTasksAreStillRunning(). See the description at the top
- * of the file.
- */
-static void vErrorChecks( void *pvParameters );
-
-/*
- * Configure the processor for use with the Olimex demo board. This includes
- * setup for the I/O, system clock, and access timings.
- */
-static void prvSetupHardware( void );
-
-
-/*-----------------------------------------------------------*/
-
-/*
- * Starts all the other tasks, then starts the scheduler.
- */
-int main( void )
-{
- /* Setup the hardware for use with the Xilinx evaluation board. */
- prvSetupHardware();
-
- /* Start the demo/test application tasks. */
- vStartIntegerMathTasks( tskIDLE_PRIORITY );
- vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
- vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
- vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
- vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
- vStartDynamicPriorityTasks();
- vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
- vStart7SegTasks( main7SEG_TASK_PRIORITY );
- vStartRegTestTasks();
-
- /* Start the check task - which is defined in this file. */
- xTaskCreate( vErrorChecks, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
-
- /* Now all the tasks have been started - start the scheduler. */
- vTaskStartScheduler();
-
- /* Should never reach here! */
- for( ;; );
-}
-/*-----------------------------------------------------------*/
-
-static void vErrorChecks( void *pvParameters )
-{
-portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;
-
- /* Just to stop compiler warnings. */
- ( void ) pvParameters;
-
- /* Cycle for ever, delaying then checking all the other tasks are still
- operating without error. If an error is detected then the delay period
- is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so
- the on board LED flash rate will increase. */
-
- for( ;; )
- {
- /* Delay until it is time to execute again. */
- vTaskDelay( xDelayPeriod );
-
- /* Check all the standard demo application tasks are executing without
- error. */
- if( prvCheckOtherTasksAreStillRunning() != pdPASS )
- {
- /* An error has been detected in one of the tasks - flash faster. */
- xDelayPeriod = mainERROR_FLASH_PERIOD;
- }
-
- /* The toggle rate of the LED depends on how long this task delays for.
- An error reduces the delay period and so increases the toggle rate. */
- vParTestToggleLED( mainON_BOARD_LED_BIT );
- }
-}
-/*-----------------------------------------------------------*/
-
-static void prvSetupHardware( void )
-{
- /* Initialise LED outputs. */
- vParTestInitialise();
-}
-/*-----------------------------------------------------------*/
-
-static long prvCheckOtherTasksAreStillRunning( void )
-{
-long lReturn = pdPASS;
-
- /* Check all the demo tasks (other than the flash tasks) to ensure
- that they are all still running, and that none of them have detected
- an error. */
-
- if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- if( xAreComTestTasksStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- if( xArePollingQueuesStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- if( xAreSemaphoreTasksStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- if( xAreBlockingQueuesStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- if( xAreRegTestTasksStillRunning() != pdTRUE )
- {
- lReturn = pdFAIL;
- }
-
- return lReturn;
-}
-/*-----------------------------------------------------------*/
-
-void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )
-{
- /* This function will be called if a task overflows its stack. Inspect
- pxCurrentTCB to find the offending task if the overflow was sever enough
- to corrupt the pcTaskName parameter. */
- vParTestSetLED( 4, 1 );
- for( ;; );
-}
-/*-----------------------------------------------------------*/
-
-void vApplicationMallocFailedHook( void )
-{
- /* This function will be called if a call to pvPortMalloc() fails to return
- the requested memory. pvPortMalloc() is called internally by the scheduler
- whenever a task, queue or semaphore is created. */
- vParTestSetLED( 4, 1 );
- for( ;; );
-}
-/*-----------------------------------------------------------*/
-
-/* Provide an exit function to prevent a whole load of standard library functions
-being brought into the build. */
-void exit( int status )
-{
- for( ;; );
-}
-
-
+/*\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * If you are: *\r
+ * *\r
+ * + New to FreeRTOS, *\r
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
+ * + Looking for basic training, *\r
+ * + Wanting to improve your FreeRTOS skills and productivity *\r
+ * *\r
+ * then take a look at the FreeRTOS eBook *\r
+ * *\r
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * A pdf reference manual is also available. Both are usually delivered *\r
+ * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+ * and 8pm GMT (although please allow up to 24 hours in case of *\r
+ * exceptional circumstances). Thank you for your support! *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+ ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+ a combined work that includes FreeRTOS without being obliged to provide the\r
+ source code for proprietary components outside of the FreeRTOS kernel.\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ more details. You should have received a copy of the GNU General Public\r
+ License and the FreeRTOS license exception along with FreeRTOS; if not it\r
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ http://www.FreeRTOS.org - Documentation, latest information, license and\r
+ contact details.\r
+\r
+ http://www.SafeRTOS.com - A version that is certified for use in safety\r
+ critical systems.\r
+\r
+ http://www.OpenRTOS.com - Commercial support, development, porting,\r
+ licensing and training services.\r
+*/\r
+\r
+/*\r
+ * Creates all the demo application tasks, then starts the scheduler.\r
+ *\r
+ * Main.c also creates a task called "Check". This only executes every three\r
+ * seconds but has the highest priority so is guaranteed to get processor time.\r
+ * Its main function is to check that all the other tasks are still operational.\r
+ * Each task (other than the "flash" tasks) maintains a unique count that is\r
+ * incremented each time the task successfully completes its function. Should\r
+ * any error occur within such a task the count is permanently halted. The\r
+ * check task inspects the count of each task to ensure it has changed since\r
+ * the last time the check task executed. If all the count variables have\r
+ * changed all the tasks are still executing error free, and the check task\r
+ * toggles the on board LED. Should any task contain an error at any time\r
+ * the LED toggle rate will change from 3 seconds to 500ms.\r
+ *\r
+ * NOTE: The demo application includes tasks that send and receive characters\r
+ * over the UART. The characters sent by one task are received by another -\r
+ * with an error condition being flagged should any characters be missed or\r
+ * received out of order. A loopback connector is required on the 9way D socket\r
+ * for this mechanism to operation (pins 2 and 3 the socket should be connected\r
+ * together - a paper clip is normally sufficient).\r
+ *\r
+ */\r
+\r
+/* Standard includes. */\r
+#include <stdlib.h>\r
+#include <string.h>\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Demo application includes. */\r
+#include "partest.h"\r
+#include "flash.h"\r
+#include "integer.h"\r
+#include "PollQ.h"\r
+#include "comtest2.h"\r
+#include "semtest.h"\r
+#include "flop.h"\r
+#include "dynamic.h"\r
+#include "BlockQ.h"\r
+#include "serial.h"\r
+#include "demoGpio.h"\r
+#include "7seg.h"\r
+#include "RegTest.h"\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Constants for the ComTest tasks. */\r
+#define mainCOM_TEST_BAUD_RATE ( ( unsigned long ) 115200 )\r
+#define mainCOM_TEST_LED ( 5 )\r
+\r
+/* Priorities for the demo application tasks. */\r
+#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )\r
+#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainQUEUE_POLL_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define mainCHECK_TASK_PRIORITY ( tskIDLE_PRIORITY + 4 )\r
+#define mainSEM_TEST_PRIORITY ( tskIDLE_PRIORITY + 1 )\r
+#define mainBLOCK_Q_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+#define main7SEG_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )\r
+\r
+/* The rate at which the on board LED will toggle when there is/is not an\r
+error. */\r
+#define mainNO_ERROR_FLASH_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )\r
+#define mainERROR_FLASH_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )\r
+#define mainON_BOARD_LED_BIT ( ( unsigned long ) 7 )\r
+\r
+/* The size of the memory blocks allocated by the vMemCheckTask() task. */\r
+#define mainMEM_CHECK_SIZE_1 ( ( size_t ) 51 )\r
+#define mainMEM_CHECK_SIZE_2 ( ( size_t ) 52 )\r
+#define mainMEM_CHECK_SIZE_3 ( ( size_t ) 151 )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Checks that all the demo application tasks are still executing without error\r
+ * - as described at the top of the file.\r
+ */\r
+static long prvCheckOtherTasksAreStillRunning( void );\r
+\r
+/*\r
+ * The task that executes at the highest priority and calls\r
+ * prvCheckOtherTasksAreStillRunning(). See the description at the top\r
+ * of the file.\r
+ */\r
+static void vErrorChecks( void *pvParameters );\r
+\r
+/*\r
+ * Configure the processor for use with the Olimex demo board. This includes\r
+ * setup for the I/O, system clock, and access timings.\r
+ */\r
+static void prvSetupHardware( void );\r
+\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * Starts all the other tasks, then starts the scheduler.\r
+ */\r
+int main( void )\r
+{\r
+ /* Setup the hardware for use with the Xilinx evaluation board. */\r
+ prvSetupHardware();\r
+\r
+ /* Start the demo/test application tasks. */\r
+ vStartIntegerMathTasks( tskIDLE_PRIORITY );\r
+ vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );\r
+ vStartLEDFlashTasks( mainLED_TASK_PRIORITY );\r
+ vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );\r
+ vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
+ vStartDynamicPriorityTasks();\r
+ vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );\r
+ vStart7SegTasks( main7SEG_TASK_PRIORITY );\r
+ vStartRegTestTasks();\r
+\r
+ /* Start the check task - which is defined in this file. */\r
+ xTaskCreate( vErrorChecks, ( signed char * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
+\r
+ /* Now all the tasks have been started - start the scheduler. */\r
+ vTaskStartScheduler();\r
+\r
+ /* Should never reach here! */\r
+ for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vErrorChecks( void *pvParameters )\r
+{\r
+portTickType xDelayPeriod = mainNO_ERROR_FLASH_PERIOD;\r
+\r
+ /* Just to stop compiler warnings. */\r
+ ( void ) pvParameters;\r
+\r
+ /* Cycle for ever, delaying then checking all the other tasks are still\r
+ operating without error. If an error is detected then the delay period\r
+ is decreased from mainNO_ERROR_FLASH_PERIOD to mainERROR_FLASH_PERIOD so\r
+ the on board LED flash rate will increase. */\r
+\r
+ for( ;; )\r
+ {\r
+ /* Delay until it is time to execute again. */\r
+ vTaskDelay( xDelayPeriod );\r
+\r
+ /* Check all the standard demo application tasks are executing without\r
+ error. */\r
+ if( prvCheckOtherTasksAreStillRunning() != pdPASS )\r
+ {\r
+ /* An error has been detected in one of the tasks - flash faster. */\r
+ xDelayPeriod = mainERROR_FLASH_PERIOD;\r
+ }\r
+\r
+ /* The toggle rate of the LED depends on how long this task delays for.\r
+ An error reduces the delay period and so increases the toggle rate. */\r
+ vParTestToggleLED( mainON_BOARD_LED_BIT );\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupHardware( void )\r
+{\r
+ /* Initialise LED outputs. */\r
+ vParTestInitialise();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static long prvCheckOtherTasksAreStillRunning( void )\r
+{\r
+long lReturn = pdPASS;\r
+\r
+ /* Check all the demo tasks (other than the flash tasks) to ensure\r
+ that they are all still running, and that none of them have detected\r
+ an error. */\r
+\r
+ if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ if( xAreComTestTasksStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ if( xArePollingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ if( xAreRegTestTasksStillRunning() != pdTRUE )\r
+ {\r
+ lReturn = pdFAIL;\r
+ }\r
+\r
+ return lReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed char *pcTaskName )\r
+{\r
+ /* This function will be called if a task overflows its stack. Inspect\r
+ pxCurrentTCB to find the offending task if the overflow was sever enough\r
+ to corrupt the pcTaskName parameter. */\r
+ vParTestSetLED( 4, 1 );\r
+ for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vApplicationMallocFailedHook( void )\r
+{\r
+ /* This function will be called if a call to pvPortMalloc() fails to return\r
+ the requested memory. pvPortMalloc() is called internally by the scheduler\r
+ whenever a task, queue or semaphore is created. */\r
+ vParTestSetLED( 4, 1 );\r
+ for( ;; );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Provide an exit function to prevent a whole load of standard library functions\r
+being brought into the build. */\r
+void exit( int status )\r
+{\r
+ for( ;; );\r
+}\r
+\r
+\r
-/*
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.
-
- ***************************************************************************
- * *
- * If you are: *
- * *
- * + New to FreeRTOS, *
- * + Wanting to learn FreeRTOS or multitasking in general quickly *
- * + Looking for basic training, *
- * + Wanting to improve your FreeRTOS skills and productivity *
- * *
- * then take a look at the FreeRTOS eBook *
- * *
- * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
- * http://www.FreeRTOS.org/Documentation *
- * *
- * A pdf reference manual is also available. Both are usually delivered *
- * to your inbox within 20 minutes to two hours when purchased between 8am *
- * and 8pm GMT (although please allow up to 24 hours in case of *
- * exceptional circumstances). 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 exception 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.
-*/
-
-/* Basic interrupt driven serial port driver for uart1.
-*/
-
-/* Standard includes. */
-#include <stdlib.h>
-
-/* Kernel includes. */
-#include "FreeRTOS.h"
-#include "queue.h"
-#include "task.h"
-
-/* Demo application includes. */
-#include <machine/uart.h>
-#include <machine/ic.h>
-#include "serial.h"
-/*-----------------------------------------------------------*/
-
-#define comBLOCK_RETRY_TIME 10
-/*-----------------------------------------------------------*/
-
-/* The interrupt handlers are naked functions that call C handlers. The C
-handlers are marked as noinline to ensure they work correctly when the
-optimiser is on. */
-void interrupt5_handler( void ) __attribute__((naked));
-static void prvTxHandler( void ) __attribute__((noinline));
-void interrupt6_handler( void ) __attribute__((naked));
-static void prvRxHandler( void ) __attribute__((noinline));
-
-/*-----------------------------------------------------------*/
-
-/* Queues used to hold received characters, and characters waiting to be
-transmitted. */
-static xQueueHandle xRxedChars;
-static xQueueHandle xCharsForTx;
-extern unsigned portBASE_TYPE *pxVectorTable;
-/*-----------------------------------------------------------*/
-
-xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
-{
- /* Create the queues used to hold Rx and Tx characters. */
- xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
- xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed char ) );
-
- if( ( xRxedChars ) && ( xCharsForTx ) )
- {
- /* Set up interrupts */
- /* tx interrupt will be enabled when we need to send something */
- uart1->tx_mask = 0;
- uart1->rx_mask = 1;
- irq[IRQ_UART1_TX].ien = 1;
- irq[IRQ_UART1_TX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
- irq[IRQ_UART1_RX].ien = 1;
- irq[IRQ_UART1_RX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;
- }
-
- return ( xComPortHandle ) 0;
-}
-/*-----------------------------------------------------------*/
-
-signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )
-{
- /* The port handle is not required as this driver only supports uart1. */
- (void) pxPort;
-
- /* Get the next character from the buffer. Return false if no characters
- are available, or arrive before xBlockTime expires. */
- if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
- {
- return pdTRUE;
- }
- else
- {
- return pdFALSE;
- }
-}
-/*-----------------------------------------------------------*/
-
-void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )
-{
- int i;
- signed char *pChNext;
-
- /* Send each character in the string, one at a time. */
- pChNext = ( signed char * )pcString;
- for( i = 0; i < usStringLength; i++ )
- {
- /* Block until character has been transmitted. */
- while( xSerialPutChar( pxPort, *pChNext, comBLOCK_RETRY_TIME ) != pdTRUE ); pChNext++;
- }
-}
-/*-----------------------------------------------------------*/
-
-signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )
-{
- ( void ) pxPort;
-
- /* Place the character in the queue of characters to be transmitted. */
- if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
- {
- return pdFAIL;
- }
-
- /* Turn on the Tx interrupt so the ISR will remove the character from the
- queue and send it. This does not need to be in a critical section as
- if the interrupt has already removed the character the next interrupt
- will simply turn off the Tx interrupt again. */
- uart1->tx_mask = 1;
-
- return pdPASS;
-}
-/*-----------------------------------------------------------*/
-
-void vSerialClose( xComPortHandle xPort )
-{
- /* Not supported as not required by the demo application. */
- ( void ) xPort;
-}
-/*-----------------------------------------------------------*/
-
-/* UART Tx interrupt handler. */
-void interrupt5_handler( void )
-{
- /* This is a naked function. */
- portSAVE_CONTEXT();
- prvTxHandler();
- portRESTORE_CONTEXT();
-}
-/*-----------------------------------------------------------*/
-
-static void prvTxHandler( void )
-{
-signed char cChar;
-portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
- /* The interrupt was caused by the transmit fifo having space for at least one
- character. Are there any more characters to transmit? */
- if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
- {
- /* A character was retrieved from the queue so can be sent to the uart now. */
- uart1->tx_data = cChar;
- }
- else
- {
- /* Queue empty, nothing to send so turn off the Tx interrupt. */
- uart1->tx_mask = 0;
- }
-
- /* If an event caused a task to unblock then we call "Yield from ISR" to
- ensure that the unblocked task is the task that executes when the interrupt
- completes if the unblocked task has a priority higher than the interrupted
- task. */
- portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
-}
-/*-----------------------------------------------------------*/
-
-/* UART Rx interrupt. */
-void interrupt6_handler( void )
-{
- portSAVE_CONTEXT();
- prvRxHandler();
- portRESTORE_CONTEXT();
-}
-/*-----------------------------------------------------------*/
-
-static void prvRxHandler( void )
-{
-signed char cChar;
-portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
-
- /* The interrupt was caused by the receiver getting data. */
- cChar = uart1->rx_data;
-
- xQueueSendFromISR(xRxedChars, &cChar, &xHigherPriorityTaskWoken );
-
- /* If an event caused a task to unblock then we call "Yield from ISR" to
- ensure that the unblocked task is the task that executes when the interrupt
- completes if the unblocked task has a priority higher than the interrupted
- task. */
- portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
-}
-/*-----------------------------------------------------------*/
-
-
+/*\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+\r
+ ***************************************************************************\r
+ * *\r
+ * If you are: *\r
+ * *\r
+ * + New to FreeRTOS, *\r
+ * + Wanting to learn FreeRTOS or multitasking in general quickly *\r
+ * + Looking for basic training, *\r
+ * + Wanting to improve your FreeRTOS skills and productivity *\r
+ * *\r
+ * then take a look at the FreeRTOS eBook *\r
+ * *\r
+ * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *\r
+ * http://www.FreeRTOS.org/Documentation *\r
+ * *\r
+ * A pdf reference manual is also available. Both are usually delivered *\r
+ * to your inbox within 20 minutes to two hours when purchased between 8am *\r
+ * and 8pm GMT (although please allow up to 24 hours in case of *\r
+ * exceptional circumstances). Thank you for your support! *\r
+ * *\r
+ ***************************************************************************\r
+\r
+ This file is part of the FreeRTOS distribution.\r
+\r
+ FreeRTOS is free software; you can redistribute it and/or modify it under\r
+ the terms of the GNU General Public License (version 2) as published by the\r
+ Free Software Foundation AND MODIFIED BY the FreeRTOS exception.\r
+ ***NOTE*** The exception to the GPL is included to allow you to distribute\r
+ a combined work that includes FreeRTOS without being obliged to provide the\r
+ source code for proprietary components outside of the FreeRTOS kernel.\r
+ FreeRTOS is distributed in the hope that it will be useful, but WITHOUT\r
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ more details. You should have received a copy of the GNU General Public\r
+ License and the FreeRTOS license exception along with FreeRTOS; if not it\r
+ can be viewed here: http://www.freertos.org/a00114.html and also obtained\r
+ by writing to Richard Barry, contact details for whom are available on the\r
+ FreeRTOS WEB site.\r
+\r
+ 1 tab == 4 spaces!\r
+\r
+ http://www.FreeRTOS.org - Documentation, latest information, license and\r
+ contact details.\r
+\r
+ http://www.SafeRTOS.com - A version that is certified for use in safety\r
+ critical systems.\r
+\r
+ http://www.OpenRTOS.com - Commercial support, development, porting,\r
+ licensing and training services.\r
+*/\r
+\r
+/* Basic interrupt driven serial port driver for uart1.\r
+*/\r
+\r
+/* Standard includes. */\r
+#include <stdlib.h>\r
+\r
+/* Kernel includes. */\r
+#include "FreeRTOS.h"\r
+#include "queue.h"\r
+#include "task.h"\r
+\r
+/* Demo application includes. */\r
+#include <machine/uart.h>\r
+#include <machine/ic.h>\r
+#include "serial.h"\r
+/*-----------------------------------------------------------*/\r
+\r
+#define comBLOCK_RETRY_TIME 10\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The interrupt handlers are naked functions that call C handlers. The C\r
+handlers are marked as noinline to ensure they work correctly when the\r
+optimiser is on. */\r
+void interrupt5_handler( void ) __attribute__((naked));\r
+static void prvTxHandler( void ) __attribute__((noinline));\r
+void interrupt6_handler( void ) __attribute__((naked));\r
+static void prvRxHandler( void ) __attribute__((noinline));\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Queues used to hold received characters, and characters waiting to be\r
+transmitted. */\r
+static xQueueHandle xRxedChars;\r
+static xQueueHandle xCharsForTx;\r
+extern unsigned portBASE_TYPE *pxVectorTable;\r
+/*-----------------------------------------------------------*/\r
+\r
+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )\r
+{\r
+ /* Create the queues used to hold Rx and Tx characters. */\r
+ xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed char ) );\r
+ xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed char ) );\r
+\r
+ if( ( xRxedChars ) && ( xCharsForTx ) )\r
+ {\r
+ /* Set up interrupts */\r
+ /* tx interrupt will be enabled when we need to send something */\r
+ uart1->tx_mask = 0;\r
+ uart1->rx_mask = 1;\r
+ irq[IRQ_UART1_TX].ien = 1;\r
+ irq[IRQ_UART1_TX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;\r
+ irq[IRQ_UART1_RX].ien = 1;\r
+ irq[IRQ_UART1_RX].ipl = portSYSTEM_INTERRUPT_PRIORITY_LEVEL;\r
+ }\r
+\r
+ return ( xComPortHandle ) 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )\r
+{\r
+ /* The port handle is not required as this driver only supports uart1. */\r
+ (void) pxPort;\r
+\r
+ /* Get the next character from the buffer. Return false if no characters\r
+ are available, or arrive before xBlockTime expires. */\r
+ if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )\r
+ {\r
+ return pdTRUE;\r
+ }\r
+ else\r
+ {\r
+ return pdFALSE;\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )\r
+{\r
+ int i;\r
+ signed char *pChNext;\r
+\r
+ /* Send each character in the string, one at a time. */\r
+ pChNext = ( signed char * )pcString;\r
+ for( i = 0; i < usStringLength; i++ )\r
+ {\r
+ /* Block until character has been transmitted. */\r
+ while( xSerialPutChar( pxPort, *pChNext, comBLOCK_RETRY_TIME ) != pdTRUE ); pChNext++;\r
+ }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )\r
+{\r
+ ( void ) pxPort;\r
+\r
+ /* Place the character in the queue of characters to be transmitted. */\r
+ if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )\r
+ {\r
+ return pdFAIL;\r
+ }\r
+\r
+ /* Turn on the Tx interrupt so the ISR will remove the character from the\r
+ queue and send it. This does not need to be in a critical section as\r
+ if the interrupt has already removed the character the next interrupt\r
+ will simply turn off the Tx interrupt again. */\r
+ uart1->tx_mask = 1;\r
+\r
+ return pdPASS;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vSerialClose( xComPortHandle xPort )\r
+{\r
+ /* Not supported as not required by the demo application. */\r
+ ( void ) xPort;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* UART Tx interrupt handler. */\r
+void interrupt5_handler( void )\r
+{\r
+ /* This is a naked function. */\r
+ portSAVE_CONTEXT();\r
+ prvTxHandler();\r
+ portRESTORE_CONTEXT();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvTxHandler( void )\r
+{\r
+signed char cChar;\r
+portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+ /* The interrupt was caused by the transmit fifo having space for at least one\r
+ character. Are there any more characters to transmit? */\r
+ if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )\r
+ {\r
+ /* A character was retrieved from the queue so can be sent to the uart now. */\r
+ uart1->tx_data = cChar;\r
+ }\r
+ else\r
+ {\r
+ /* Queue empty, nothing to send so turn off the Tx interrupt. */\r
+ uart1->tx_mask = 0;\r
+ }\r
+\r
+ /* If an event caused a task to unblock then we call "Yield from ISR" to\r
+ ensure that the unblocked task is the task that executes when the interrupt\r
+ completes if the unblocked task has a priority higher than the interrupted\r
+ task. */\r
+ portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* UART Rx interrupt. */\r
+void interrupt6_handler( void )\r
+{\r
+ portSAVE_CONTEXT();\r
+ prvRxHandler();\r
+ portRESTORE_CONTEXT();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvRxHandler( void )\r
+{\r
+signed char cChar;\r
+portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;\r
+\r
+ /* The interrupt was caused by the receiver getting data. */\r
+ cChar = uart1->rx_data;\r
+\r
+ xQueueSendFromISR(xRxedChars, &cChar, &xHigherPriorityTaskWoken );\r
+\r
+ /* If an event caused a task to unblock then we call "Yield from ISR" to\r
+ ensure that the unblocked task is the task that executes when the interrupt\r
+ completes if the unblocked task has a priority higher than the interrupted\r
+ task. */\r
+ portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
#/*\r
-# FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+# FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
#\r
# ***************************************************************************\r
# * *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
/*\r
- FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+ FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
\r
***************************************************************************\r
* *\r
#/*\r
-# FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.\r
+# FreeRTOS V6.0.5 - Copyright (C) 2010 Real Time Engineers Ltd.\r
#\r
# ***************************************************************************\r
# * *\r