]> git.sur5r.net Git - freertos/blobdiff - Demo/AVR32_UC3/main.c
Add printf-stdarg.c to the new MicroBlaze demo.
[freertos] / Demo / AVR32_UC3 / main.c
index 4971b3f445f0d9ddcb10a9b7060d8ebd3561869c..77f12c5bb72d250200b4d266200eb407c014b6a8 100644 (file)
@@ -1,5 +1,3 @@
-/* This source file is part of the ATMEL FREERTOS-0.9.0 Release */\r
-\r
 /*This file has been prepared for Doxygen automatic documentation generation.*/\r
 /*! \file *********************************************************************\r
  *\r
  * - AppNote:\r
  *\r
  * \author               Atmel Corporation: http://www.atmel.com \n\r
- *                       Support email: avr32@atmel.com\r
+ *                       Support and FAQ: http://support.atmel.no/\r
  *\r
  *****************************************************************************/\r
 \r
 /*\r
-       FreeRTOS.org V4.2.0 - Copyright (C) 2003-2007 Richard Barry.\r
-\r
-       This file is part of the FreeRTOS.org distribution.\r
-\r
-       FreeRTOS.org is free software; you can redistribute it and/or modify\r
-       it under the terms of the GNU General Public License as published by\r
-       the Free Software Foundation; either version 2 of the License, or\r
-       (at your option) any later version.\r
-\r
-       FreeRTOS.org is distributed in the hope that it will be useful,\r
-       but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-       GNU General Public License for more details.\r
-\r
-       You should have received a copy of the GNU General Public License\r
-       along with FreeRTOS.org; if not, write to the Free Software\r
-       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-\r
-       A special exception to the GPL can be applied should you wish to distribute\r
-       a combined work that includes FreeRTOS.org, without being obliged to provide\r
-       the source code for any proprietary components.  See the licensing section\r
-       of http://www.FreeRTOS.org for full details of how and when the exception\r
-       can be applied.\r
-\r
-       ***************************************************************************\r
-       See http://www.FreeRTOS.org for documentation, latest information, license\r
-       and contact details.  Please ensure to read the configuration and relevant\r
-       port sections of the online documentation.\r
-       ***************************************************************************\r
+    FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd.\r
+       \r
+\r
+    ***************************************************************************\r
+     *                                                                       *\r
+     *    FreeRTOS tutorial books are available in pdf and paperback.        *\r
+     *    Complete, revised, and edited pdf reference manuals are also       *\r
+     *    available.                                                         *\r
+     *                                                                       *\r
+     *    Purchasing FreeRTOS documentation will not only help you, by       *\r
+     *    ensuring you get running as quickly as possible and with an        *\r
+     *    in-depth knowledge of how to use FreeRTOS, it will also help       *\r
+     *    the FreeRTOS project to continue with its mission of providing     *\r
+     *    professional grade, cross platform, de facto standard solutions    *\r
+     *    for microcontrollers - completely free of charge!                  *\r
+     *                                                                       *\r
+     *    >>> See http://www.FreeRTOS.org/Documentation for details. <<<     *\r
+     *                                                                       *\r
+     *    Thank you for using FreeRTOS, and thank you for your support!      *\r
+     *                                                                       *\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 modification to the GPL is included to allow you to\r
+    distribute a combined work that includes FreeRTOS without being obliged to\r
+    provide the source code for proprietary components outside of the FreeRTOS\r
+    kernel.  FreeRTOS is distributed in the hope that it will be useful, but\r
+    WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+    or 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
 //! @{\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
+#define mainMEM_CHECK_SIZE_3      ( ( size_t ) 15 )\r
 //! @}\r
 \r
 \r
@@ -159,6 +178,12 @@ static portBASE_TYPE prvCheckOtherTasksAreStillRunning( void );
  */\r
 static void vMemCheckTask( void *pvParameters );\r
 \r
+/*\r
+ * Called by the check task following the detection of an error to set the\r
+ * LEDs into a state that shows an error has beeen found.\r
+ */\r
+static void prvIndicateError( void );\r
+\r
 /*-----------------------------------------------------------*/\r
 \r
 int main( void )\r
@@ -259,11 +284,7 @@ portBASE_TYPE bSuicidalTask = 0;
                        /* Could not create the task - we have probably run out of heap.\r
                        Don't go any further and flash the LED faster to provide visual\r
                        feedback of the error. */\r
-                       for(;;)\r
-                       {\r
-                               vParTestToggleLED( mainCHECK_TASK_LED );\r
-                               vTaskDelay( mainERROR_FLASH_RATE );\r
-                       }\r
+                       prvIndicateError();\r
                }\r
 \r
                /* Delay until it is time to execute again. */\r
@@ -288,12 +309,7 @@ portBASE_TYPE bSuicidalTask = 0;
                        /* An error has occurred in one of the tasks.\r
                        Don't go any further and flash the LED faster to give visual\r
                        feedback of the error. */\r
-                       vParTestSetLED(mainERROR_LED,pdTRUE);\r
-                       for(;;)\r
-                       {\r
-                               vParTestToggleLED( mainCHECK_TASK_LED );\r
-                               vTaskDelay( mainERROR_FLASH_RATE );\r
-                       }\r
+                       prvIndicateError();\r
                }\r
                else\r
                {\r
@@ -451,3 +467,26 @@ static portLONG lErrorOccurred = pdFALSE;
                xTaskResumeAll();\r
        }\r
 }\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvIndicateError( void )\r
+{\r
+       /* The check task has found an error in one of the other tasks.\r
+       Set the LEDs to a state that indicates this. */\r
+       vParTestSetLED(mainERROR_LED,pdTRUE);\r
+\r
+       for(;;)\r
+       {\r
+               #if( BOARD==EVK1100 )\r
+                       vParTestToggleLED( mainCHECK_TASK_LED );\r
+                       vTaskDelay( mainERROR_FLASH_RATE );\r
+               #endif\r
+               #if ( BOARD==EVK1101 )\r
+                       vParTestSetLED( 0, pdTRUE );\r
+                       vParTestSetLED( 1, pdTRUE );\r
+                       vParTestSetLED( 2, pdTRUE );\r
+                       vParTestSetLED( 3, pdTRUE );\r
+               #endif\r
+       }\r
+}\r
+\r