]> git.sur5r.net Git - freertos/commitdiff
Add the comtest_strings.c and serial.c files - Tx is workings, but both files are...
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 19 Jun 2011 13:15:47 +0000 (13:15 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sun, 19 Jun 2011 13:15:47 +0000 (13:15 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1467 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/.cproject
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/CreateProjectDirectoryStructure.bat
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/comtest_strings.c [new file with mode: 0644]
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/comtest.h [new file with mode: 0644]
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/comtest_strings.h [new file with mode: 0644]
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/serial.h [new file with mode: 0644]
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-blinky.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-full.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/serial.c [new file with mode: 0644]

index 31558f61d1ad55483d130c44c4f19e0dc301070f..ef8563efbd7e82058074f7139d18f9f6c9851039 100644 (file)
                                                </toolChain>\r
                                        </folderInfo>\r
                                        <sourceEntries>\r
-                                               <entry excluding="src/testperiph.c|ParTest.c|src/xuartlite_selftest_example.c|src/xtmrctr_selftest_example.c|src/xtmrctr_intr_example.c|src/xintc_tapp_example.c|src/xgpio_tapp_example.c|src/xgpio_intr_tapp_example.c|src/xemaclite_polled_example.c|src/xemaclite_intr_example.c|Demo_Source|RegisterTests.c|main-full.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
+                                               <entry excluding="serial.c|src/testperiph.c|ParTest.c|src/xuartlite_selftest_example.c|src/xtmrctr_selftest_example.c|src/xtmrctr_intr_example.c|src/xintc_tapp_example.c|src/xgpio_tapp_example.c|src/xgpio_intr_tapp_example.c|src/xemaclite_polled_example.c|src/xemaclite_intr_example.c|Demo_Source|RegisterTests.c|main-full.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>\r
                                        </sourceEntries>\r
                                </configuration>\r
                        </storageModule>\r
index f4399ac77a437cbea32963f3e6de438a5120b65b..c68237c072c34d397015bf17bed6e0d16a84efbe 100644 (file)
@@ -36,30 +36,34 @@ IF EXIST FreeRTOS_Source Goto END
        copy ..\..\..\..\Source\portable\MemMang\heap_2.c FreeRTOS_Source\portable\MemMang\r
 \r
        REM Copy the files that define the common demo tasks.\r
-    copy ..\..\..\Common\minimal\dynamic.c      Demo_Source\r
-    copy ..\..\..\Common\minimal\BlockQ.c       Demo_Source\r
-    copy ..\..\..\Common\minimal\death.c        Demo_Source\r
-    copy ..\..\..\Common\minimal\blocktim.c     Demo_Source\r
-    copy ..\..\..\Common\minimal\semtest.c      Demo_Source\r
-    copy ..\..\..\Common\minimal\PollQ.c        Demo_Source\r
-    copy ..\..\..\Common\minimal\GenQTest.c     Demo_Source\r
-    copy ..\..\..\Common\minimal\QPeek.c        Demo_Source\r
-    copy ..\..\..\Common\minimal\recmutex.c     Demo_Source\r
-    copy ..\..\..\Common\minimal\sp_flop.c      Demo_Source\r
-    copy ..\..\..\Common\minimal\flash.c        Demo_Source\r
+    copy ..\..\..\Common\minimal\dynamic.c         Demo_Source\r
+    copy ..\..\..\Common\minimal\BlockQ.c          Demo_Source\r
+    copy ..\..\..\Common\minimal\death.c           Demo_Source\r
+    copy ..\..\..\Common\minimal\blocktim.c        Demo_Source\r
+    copy ..\..\..\Common\minimal\semtest.c         Demo_Source\r
+    copy ..\..\..\Common\minimal\PollQ.c           Demo_Source\r
+    copy ..\..\..\Common\minimal\GenQTest.c        Demo_Source\r
+    copy ..\..\..\Common\minimal\QPeek.c           Demo_Source\r
+    copy ..\..\..\Common\minimal\recmutex.c        Demo_Source\r
+    copy ..\..\..\Common\minimal\sp_flop.c         Demo_Source\r
+    copy ..\..\..\Common\minimal\flash.c           Demo_Source\r
+    copy ..\..\..\Common\minimal\comtest_strings.c Demo_Source\r
        \r
        REM Copy the common demo file headers.\r
-    copy ..\..\..\Common\include\dynamic.h      Demo_Source\include\r
-    copy ..\..\..\Common\include\partest.h      Demo_Source\include\r
-    copy ..\..\..\Common\include\BlockQ.h       Demo_Source\include\r
-    copy ..\..\..\Common\include\death.h        Demo_Source\include\r
-    copy ..\..\..\Common\include\blocktim.h     Demo_Source\include\r
-    copy ..\..\..\Common\include\semtest.h      Demo_Source\include\r
-    copy ..\..\..\Common\include\PollQ.h        Demo_Source\include\r
-    copy ..\..\..\Common\include\GenQTest.h     Demo_Source\include\r
-    copy ..\..\..\Common\include\QPeek.h        Demo_Source\include\r
-    copy ..\..\..\Common\include\recmutex.h     Demo_Source\include\r
-    copy ..\..\..\Common\include\flop.h         Demo_Source\include\r
-    copy ..\..\..\Common\include\flash.h        Demo_Source\include\r
+    copy ..\..\..\Common\include\dynamic.h         Demo_Source\include\r
+    copy ..\..\..\Common\include\partest.h         Demo_Source\include\r
+    copy ..\..\..\Common\include\BlockQ.h          Demo_Source\include\r
+    copy ..\..\..\Common\include\death.h           Demo_Source\include\r
+    copy ..\..\..\Common\include\blocktim.h        Demo_Source\include\r
+    copy ..\..\..\Common\include\semtest.h         Demo_Source\include\r
+    copy ..\..\..\Common\include\PollQ.h           Demo_Source\include\r
+    copy ..\..\..\Common\include\GenQTest.h        Demo_Source\include\r
+    copy ..\..\..\Common\include\QPeek.h           Demo_Source\include\r
+    copy ..\..\..\Common\include\recmutex.h        Demo_Source\include\r
+    copy ..\..\..\Common\include\flop.h            Demo_Source\include\r
+    copy ..\..\..\Common\include\flash.h           Demo_Source\include\r
+    copy ..\..\..\Common\include\comtest_strings.h Demo_Source\include\r
+    copy ..\..\..\Common\include\serial.h          Demo_Source\include\r
+    copy ..\..\..\Common\include\comtest.h         Demo_Source\include\r
     \r
 : END\r
diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/comtest_strings.c b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/comtest_strings.c
new file mode 100644 (file)
index 0000000..7a84768
--- /dev/null
@@ -0,0 +1,297 @@
+/*\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
+ * This version of comtest. c is for use on systems that have limited stack\r
+ * space and no display facilities.  The complete version can be found in\r
+ * the Demo/Common/Full directory.\r
+ *\r
+ * Creates two tasks that operate on an interrupt driven serial port.  A\r
+ * loopback connector should be used so that everything that is transmitted is\r
+ * also received.  The serial port does not use any flow control.  On a\r
+ * standard 9way 'D' connector pins two and three should be connected together.\r
+ *\r
+ * The first task posts a sequence of characters to the Tx queue, toggling an\r
+ * LED on each successful post.  At the end of the sequence it sleeps for a\r
+ * pseudo-random period before resending the same sequence.\r
+ *\r
+ * The UART Tx end interrupt is enabled whenever data is available in the Tx\r
+ * queue.  The Tx end ISR removes a single character from the Tx queue and\r
+ * passes it to the UART for transmission.\r
+ *\r
+ * The second task blocks on the Rx queue waiting for a character to become\r
+ * available.  When the UART Rx end interrupt receives a character it places\r
+ * it in the Rx queue, waking the second task.  The second task checks that the\r
+ * characters removed from the Rx queue form the same sequence as those posted\r
+ * to the Tx queue, and toggles an LED for each correct character.\r
+ *\r
+ * The receiving task is spawned with a higher priority than the transmitting\r
+ * task.  The receiver will therefore wake every time a character is\r
+ * transmitted so neither the Tx or Rx queue should ever hold more than a few\r
+ * characters.\r
+ *\r
+ */\r
+\r
+/* Scheduler include files. */\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Demo program include files. */\r
+#include "serial.h"\r
+#include "comtest_strings.h"\r
+#include "partest.h"\r
+\r
+#define comSTACK_SIZE                          configMINIMAL_STACK_SIZE\r
+#define comTX_LED_OFFSET                       ( 0 )\r
+#define comRX_LED_OFFSET                       ( 1 )\r
+#define comTOTAL_PERMISSIBLE_ERRORS ( 2 )\r
+\r
+/* The Tx task will transmit the sequence of characters at a pseudo random\r
+interval.  This is the maximum and minimum block time between sends. */\r
+#define comTX_MAX_BLOCK_TIME           ( ( portTickType ) 0x96 )\r
+#define comTX_MIN_BLOCK_TIME           ( ( portTickType ) 0x32 )\r
+#define comOFFSET_TIME                         ( ( portTickType ) 3 )\r
+\r
+/* We should find that each character can be queued for Tx immediately and we\r
+don't have to block to send. */\r
+#define comNO_BLOCK                                    ( ( portTickType ) 0 )\r
+\r
+/* The Rx task will block on the Rx queue for a long period. */\r
+#define comRX_BLOCK_TIME                       ( ( portTickType ) 0xffff )\r
+\r
+/* The string that is transmitted and received. */\r
+#define comTRANSACTED_STRING           "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"\r
+\r
+#define comBUFFER_LEN                          ( ( unsigned portBASE_TYPE ) ( comLAST_BYTE - comFIRST_BYTE ) + ( unsigned portBASE_TYPE ) 1 )\r
+#define comINITIAL_RX_COUNT_VALUE      ( 0 )\r
+\r
+/* Handle to the com port used by both tasks. */\r
+static xComPortHandle xPort = NULL;\r
+\r
+/* The transmit task as described at the top of the file. */\r
+static void vComTxTask( void *pvParameters );\r
+\r
+/* The receive task as described at the top of the file. */\r
+static portTASK_FUNCTION_PROTO( vComRxTask, pvParameters );\r
+\r
+/* The LED that should be toggled by the Rx and Tx tasks.  The Rx task will\r
+toggle LED ( uxBaseLED + comRX_LED_OFFSET).  The Tx task will toggle LED\r
+( uxBaseLED + comTX_LED_OFFSET ). */\r
+static unsigned portBASE_TYPE uxBaseLED = 0;\r
+\r
+/* Check variable used to ensure no error have occurred.  The Rx task will\r
+increment this variable after every successfully received sequence.  If at any\r
+time the sequence is incorrect the the variable will stop being incremented. */\r
+static volatile unsigned portBASE_TYPE uxRxLoops = comINITIAL_RX_COUNT_VALUE;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vStartComTestStringsTasks( unsigned portBASE_TYPE uxPriority, unsigned long ulBaudRate, unsigned portBASE_TYPE uxLED )\r
+{\r
+       /* Initialise the com port then spawn the Rx and Tx tasks. */\r
+       uxBaseLED = uxLED;\r
+       xSerialPortInitMinimal( ulBaudRate, strlen( comTRANSACTED_STRING ) );\r
+\r
+       /* The Tx task is spawned with a lower priority than the Rx task. */\r
+       xTaskCreate( vComTxTask, ( signed char * ) "COMTx", comSTACK_SIZE, NULL, uxPriority - 1, ( xTaskHandle * ) NULL );\r
+       xTaskCreate( vComRxTask, ( signed char * ) "COMRx", comSTACK_SIZE, NULL, uxPriority, ( xTaskHandle * ) NULL );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vComTxTask( void * pvParameters )\r
+{\r
+portTickType xTimeToWait;\r
+size_t xStringLength;\r
+\r
+       /* Just to stop compiler warnings. */\r
+       ( void ) pvParameters;\r
+\r
+       xStringLength = strlen( comTRANSACTED_STRING );\r
+\r
+       for( ;; )\r
+       {\r
+               /* Send the string.  Setting the last parameter to pdTRUE ensures\r
+               that vSerialPutString() will not return until the entire string has\r
+               been sent to the UART.  The UART interrupt is used to send more data\r
+               to the UART as the UART FIFO empties, until the entire string has been\r
+               sent.  No CPU time is consumed by this task while it waits for the\r
+               string to be sent to the UART. */\r
+               vSerialPutString( xPort, ( const signed char * const ) comTRANSACTED_STRING, xStringLength );\r
+\r
+               /* Toggle an LED to give a visible indication that another transmission\r
+               has been performed. */
+               vParTestToggleLED( uxBaseLED + comTX_LED_OFFSET );\r
+\r
+               /* Wait a pseudo random time before sending the string again. */\r
+               xTimeToWait = xTaskGetTickCount() + comOFFSET_TIME;\r
+\r
+               /* Ensure the time to wait does not greater than comTX_MAX_BLOCK_TIME. */\r
+               xTimeToWait %= comTX_MAX_BLOCK_TIME;\r
+\r
+               /* Ensure the time to wait is not less than comTX_MIN_BLOCK_TIME. */\r
+               if( xTimeToWait < comTX_MIN_BLOCK_TIME )\r
+               {\r
+                       xTimeToWait = comTX_MIN_BLOCK_TIME;\r
+               }\r
+\r
+               vTaskDelay( xTimeToWait );\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vComRxTask( void *pvParameters )\r
+{\r
+#if 0\r
+signed char cExpectedByte, cByteRxed;\r
+portBASE_TYPE xResyncRequired = pdFALSE, xErrorOccurred = pdFALSE;\r
+\r
+       /* Just to stop compiler warnings. */\r
+       ( void ) pvParameters;\r
+\r
+       for( ;; )\r
+       {\r
+               /* We expect to receive the characters from comFIRST_BYTE to\r
+               comLAST_BYTE in an incrementing order.  Loop to receive each byte. */\r
+               for( cExpectedByte = comFIRST_BYTE; cExpectedByte <= comLAST_BYTE; cExpectedByte++ )\r
+               {\r
+                       /* Block on the queue that contains received bytes until a byte is\r
+                       available. */\r
+                       if( xSerialGetChar( xPort, &cByteRxed, comRX_BLOCK_TIME ) )\r
+                       {\r
+                               /* Was this the byte we were expecting?  If so, toggle the LED,\r
+                               otherwise we are out on sync and should break out of the loop\r
+                               until the expected character sequence is about to restart. */\r
+                               if( cByteRxed == cExpectedByte )\r
+                               {\r
+                                       vParTestToggleLED( uxBaseLED + comRX_LED_OFFSET );\r
+                               }\r
+                               else\r
+                               {\r
+                                       xResyncRequired = pdTRUE;\r
+                                       break; /*lint !e960 Non-switch break allowed. */\r
+                               }\r
+                       }\r
+               }\r
+\r
+               /* Turn the LED off while we are not doing anything. */\r
+               vParTestSetLED( uxBaseLED + comRX_LED_OFFSET, pdFALSE );\r
+\r
+               /* Did we break out of the loop because the characters were received in\r
+               an unexpected order?  If so wait here until the character sequence is\r
+               about to restart. */\r
+               if( xResyncRequired == pdTRUE )\r
+               {\r
+                       while( cByteRxed != comLAST_BYTE )\r
+                       {\r
+                               /* Block until the next char is available. */\r
+                               xSerialGetChar( xPort, &cByteRxed, comRX_BLOCK_TIME );\r
+                       }\r
+\r
+                       /* Note that an error occurred which caused us to have to resync.\r
+                       We use this to stop incrementing the loop counter so\r
+                       sAreComTestTasksStillRunning() will return false - indicating an\r
+                       error. */\r
+                       xErrorOccurred++;\r
+\r
+                       /* We have now resynced with the Tx task and can continue. */\r
+                       xResyncRequired = pdFALSE;\r
+               }\r
+               else\r
+               {\r
+                       if( xErrorOccurred < comTOTAL_PERMISSIBLE_ERRORS )\r
+                       {\r
+                               /* Increment the count of successful loops.  As error\r
+                               occurring (i.e. an unexpected character being received) will\r
+                               prevent this counter being incremented for the rest of the\r
+                               execution.   Don't worry about mutual exclusion on this\r
+                               variable - it doesn't really matter as we just want it\r
+                               to change. */\r
+                               uxRxLoops++;\r
+                       }\r
+               }\r
+       }\r
+#else\r
+       for( ;; )\r
+       {\r
+               vTaskDelay( 10000 );\r
+       }\r
+#endif\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+portBASE_TYPE xAreComTestTasksStillRunning( void )\r
+{\r
+portBASE_TYPE xReturn;\r
+\r
+       /* If the count of successful reception loops has not changed than at\r
+       some time an error occurred (i.e. a character was received out of sequence)\r
+       and we will return false. */\r
+       if( uxRxLoops == comINITIAL_RX_COUNT_VALUE )\r
+       {\r
+               xReturn = pdFALSE;\r
+       }\r
+       else\r
+       {\r
+               xReturn = pdTRUE;\r
+       }\r
+\r
+       /* Reset the count of successful Rx loops.  When this function is called\r
+       again we expect this to have been incremented. */\r
+       uxRxLoops = comINITIAL_RX_COUNT_VALUE;\r
+\r
+       return xReturn;\r
+}\r
+\r
diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/comtest.h b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/comtest.h
new file mode 100644 (file)
index 0000000..6d4f577
--- /dev/null
@@ -0,0 +1,63 @@
+/*\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
+#ifndef COMTEST_H\r
+#define COMTEST_H\r
+\r
+void vAltStartComTestTasks( unsigned portBASE_TYPE uxPriority, unsigned long ulBaudRate, unsigned portBASE_TYPE uxLED );\r
+void vStartComTestTasks( unsigned portBASE_TYPE uxPriority, eCOMPort ePort, eBaud eBaudRate );\r
+portBASE_TYPE xAreComTestTasksStillRunning( void );\r
+void vComTestUnsuspendTask( void );\r
+\r
+#endif\r
+\r
diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/comtest_strings.h b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/comtest_strings.h
new file mode 100644 (file)
index 0000000..d21d06f
--- /dev/null
@@ -0,0 +1,61 @@
+/*\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
+#ifndef COMTEST_H\r
+#define COMTEST_H\r
+\r
+void vStartComTestStringsTasks( unsigned portBASE_TYPE uxPriority, unsigned long ulBaudRate, unsigned portBASE_TYPE uxLED );\r
+portBASE_TYPE xAreComTestTasksStillRunning( void );\r
+\r
+#endif\r
+\r
diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/serial.h b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/Demo_Source/include/serial.h
new file mode 100644 (file)
index 0000000..b7d27f9
--- /dev/null
@@ -0,0 +1,124 @@
+/*\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
+#ifndef SERIAL_COMMS_H\r
+#define SERIAL_COMMS_H\r
+\r
+typedef void * xComPortHandle;\r
+\r
+typedef enum\r
+{ \r
+       serCOM1, \r
+       serCOM2, \r
+       serCOM3, \r
+       serCOM4, \r
+       serCOM5, \r
+       serCOM6, \r
+       serCOM7, \r
+       serCOM8 \r
+} eCOMPort;\r
+\r
+typedef enum \r
+{ \r
+       serNO_PARITY, \r
+       serODD_PARITY, \r
+       serEVEN_PARITY, \r
+       serMARK_PARITY, \r
+       serSPACE_PARITY \r
+} eParity;\r
+\r
+typedef enum \r
+{ \r
+       serSTOP_1, \r
+       serSTOP_2 \r
+} eStopBits;\r
+\r
+typedef enum \r
+{ \r
+       serBITS_5, \r
+       serBITS_6, \r
+       serBITS_7, \r
+       serBITS_8 \r
+} eDataBits;\r
+\r
+typedef enum \r
+{ \r
+       ser50,          \r
+       ser75,          \r
+       ser110,         \r
+       ser134,         \r
+       ser150,    \r
+       ser200,\r
+       ser300,         \r
+       ser600,         \r
+       ser1200,        \r
+       ser1800,        \r
+       ser2400,   \r
+       ser4800,\r
+       ser9600,                \r
+       ser19200,       \r
+       ser38400,       \r
+       ser57600,       \r
+       ser115200\r
+} eBaud;\r
+\r
+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength );\r
+xComPortHandle xSerialPortInit( eCOMPort ePort, eBaud eWantedBaud, eParity eWantedParity, eDataBits eWantedDataBits, eStopBits eWantedStopBits, unsigned portBASE_TYPE uxBufferLength );\r
+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength );\r
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime );\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime );\r
+portBASE_TYPE xSerialWaitForSemaphore( xComPortHandle xPort );\r
+void vSerialClose( xComPortHandle xPort );\r
+\r
+#endif\r
+\r
index 234b730c2cbb36b1d202838dce2065b45c1fc4ab..2f1920feea0fbc1f5492c48f3a32cb88775b1094 100644 (file)
@@ -438,12 +438,12 @@ extern void vTickISR( void *pvUnused );
        if( xStatus == XST_SUCCESS )\r
        {\r
                /* Install the tick interrupt handler as the timer ISR. */\r
-               xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_AXI_TIMER_0_INTERRUPT_INTR, vTickISR, NULL );\r
+               xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_TMRCTR_0_VEC_ID, vTickISR, NULL );\r
        }\r
 \r
        if( xStatus == pdPASS )\r
        {\r
-               vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_AXI_TIMER_0_INTERRUPT_INTR );\r
+               vPortEnableInterrupt( XPAR_INTC_0_TMRCTR_0_VEC_ID );\r
 \r
                /* Configure the timer interrupt handler. */\r
                XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vTickISR, NULL );\r
index 56d94a9e5ecd9279f36ee7e7a4d2f90dfbf13c72..9833ea7db9e9c8a77d9c8e3164def4f9c694faca 100644 (file)
 #include "recmutex.h"\r
 #include "flop.h"\r
 #include "dynamic.h"\r
+#include "comtest_strings.h"\r
 \r
 #define xPrintf( x )\r
 \r
 /* Priorities at which the tasks are created. */\r
-#define mainCHECK_TASK_PRIORITY                ( configMAX_PRIORITIES - 1 )\r
 #define mainQUEUE_POLL_PRIORITY                ( tskIDLE_PRIORITY + 1 )\r
 #define mainSEM_TEST_PRIORITY          ( tskIDLE_PRIORITY + 1 )\r
 #define mainBLOCK_Q_PRIORITY           ( tskIDLE_PRIORITY + 2 )\r
 #define mainCREATOR_TASK_PRIORITY   ( tskIDLE_PRIORITY + 3 )\r
 #define mainFLASH_TASK_PRIORITY                ( tskIDLE_PRIORITY + 1 )\r
 #define mainuIP_TASK_PRIORITY          ( tskIDLE_PRIORITY + 2 )\r
+#define mainCOM_TEST_PRIORITY          ( tskIDLE_PRIORITY + 2 )\r
 #define mainINTEGER_TASK_PRIORITY   ( tskIDLE_PRIORITY )\r
 #define mainGEN_QUEUE_TASK_PRIORITY    ( tskIDLE_PRIORITY )\r
 #define mainFLOP_TASK_PRIORITY         ( tskIDLE_PRIORITY )\r
@@ -184,6 +185,16 @@ this file. */
 /* A block time of zero means "don't block". */
 #define mainDONT_BLOCK                                         ( ( portTickType ) 0 )\r
 \r
+/* The LED used by the comtest tasks. See the comtest.c file for more\r
+information.  In this case an invalid LED number is provided as all four\r
+available LEDs are already in use. */\r
+#define mainCOM_TEST_LED                       ( 4 )\r
+\r
+/* Baud rate used by the comtest tasks.  This is actually fixed in the hardware\r
+when the hardware was built, but the standard serial init function required a\r
+baud rate parameter. */\r
+#define mainCOM_TEST_BAUD_RATE                         ( XPAR_RS232_UART_1_BAUDRATE )\r
+\r
 /*\r
  * vApplicationMallocFailedHook() will only be called if\r
  * configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h.  It is a hook\r
@@ -271,6 +282,7 @@ int main( void )
        vStartLEDFlashTasks( mainFLASH_TASK_PRIORITY );\r
        vStartQueuePeekTasks();\r
        vStartRecursiveMutexTasks();\r
+       vStartComTestStringsTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );\r
 \r
        /* Note - the set of standard demo tasks contains two versions of\r
        vStartMathTasks.c.  One is defined in flop.c, and uses double precision\r
@@ -428,12 +440,12 @@ extern void vTickISR( void *pvUnused );
        if( xStatus == XST_SUCCESS )\r
        {\r
                /* Install the tick interrupt handler as the timer ISR. */\r
-               xStatus = xPortInstallInterruptHandler( XPAR_MICROBLAZE_0_INTC_AXI_TIMER_0_INTERRUPT_INTR, vTickISR, NULL );\r
+               xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_TMRCTR_0_VEC_ID, vTickISR, NULL );\r
        }\r
 \r
        if( xStatus == pdPASS )\r
        {\r
-               vPortEnableInterrupt( XPAR_MICROBLAZE_0_INTC_AXI_TIMER_0_INTERRUPT_INTR );\r
+               vPortEnableInterrupt( XPAR_INTC_0_TMRCTR_0_VEC_ID );\r
 \r
                /* Configure the timer interrupt handler. */\r
                XTmrCtr_SetHandler( &xTimer0Instance, ( void * ) vTickISR, NULL );\r
diff --git a/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/serial.c b/Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/serial.c
new file mode 100644 (file)
index 0000000..bf3d36d
--- /dev/null
@@ -0,0 +1,241 @@
+/*\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
+       BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.\r
+       \r
+       ***Note*** This example uses queues to send each character into an interrupt\r
+       service routine and out of an interrupt service routine individually.  This\r
+       is done to demonstrate queues being used in an interrupt, and to deliberately\r
+       load the system to test the FreeRTOS port.  It is *NOT* meant to be an\r
+       example of an efficient implementation.  An efficient implementation should\r
+       use FIFOs or DMA if available, and only use FreeRTOS API functions when\r
+       enough has been received to warrant a task being unblocked to process the\r
+       data.\r
+*/\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "queue.h"\r
+#include "semphr.h"\r
+#include "task.h" /*_RB_ remove this when the file is working. */\r
+#include "comtest_strings.h"\r
+\r
+/* Library includes. */\r
+#include "xuartlite.h"\r
+#include "xuartlite_l.h"\r
+\r
+/* Demo application includes. */\r
+#include "serial.h"\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Misc defines. */\r
+#define serINVALID_QUEUE                               ( ( xQueueHandle ) 0 )\r
+#define serNO_BLOCK                                            ( ( portTickType ) 0 )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The queue used to hold received characters. */\r
+static xQueueHandle xRxedChars;\r
+static xQueueHandle xCharsForTx;\r
+\r
+static XUartLite xUartLiteInstance;\r
+\r
+static void prvRxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount );\r
+static void prvTxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/*\r
+ * See the serial2.h header file.\r
+ */\r
+xComPortHandle xSerialPortInitMinimal( unsigned long ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )\r
+{\r
+portBASE_TYPE xStatus;\r
+\r
+       /* Create the queues used to hold Rx/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 the queues were created correctly then setup the serial port\r
+       hardware. */\r
+       if( ( xRxedChars != serINVALID_QUEUE ) && ( xCharsForTx != serINVALID_QUEUE ) )\r
+       {\r
+               xStatus = XUartLite_Initialize( &xUartLiteInstance, XPAR_UARTLITE_1_DEVICE_ID );\r
+\r
+               if( xStatus == XST_SUCCESS )\r
+               {\r
+                       XUartLite_ResetFifos( &xUartLiteInstance );\r
+                       XUartLite_SetRecvHandler( &xUartLiteInstance, ( XUartLite_Handler ) prvRxHandler, NULL );\r
+                       XUartLite_SetSendHandler( &xUartLiteInstance, ( XUartLite_Handler ) prvTxHandler, NULL );\r
+                       xStatus = xPortInstallInterruptHandler( XPAR_INTC_0_UARTLITE_1_VEC_ID, ( XInterruptHandler ) XUartLite_InterruptHandler, &xUartLiteInstance );\r
+                       XUartLite_EnableIntr( xUartLiteInstance.RegBaseAddress );\r
+                       vPortEnableInterrupt( XPAR_INTC_0_UARTLITE_1_VEC_ID );\r
+               }\r
+\r
+               configASSERT( xStatus == pdPASS );\r
+       }\r
+\r
+       /* This demo file only supports a single port but something must be\r
+       returned to comply with the standard demo header file. */\r
+       return ( xComPortHandle ) 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed char *pcRxedChar, portTickType xBlockTime )\r
+{\r
+extern u8 XUartLite_RecvByte(u32 BaseAddress);\r
+\r
+//     *pcRxedChar = XUartLite_RecvByte( xUartLiteInstance.RegBaseAddress );\r
+\r
+       vTaskDelay( 1000 );\r
+       return pdTRUE;\r
+#if 0\r
+       /* The port handle is not required as this driver only supports one port. */\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
+#endif\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vSerialPutString( xComPortHandle pxPort, const signed char * const pcString, unsigned short usStringLength )\r
+{\r
+       XUartLite_Send( &xUartLiteInstance, ( unsigned char * ) pcString, ( unsigned portBASE_TYPE ) usStringLength );\r
+\r
+#if 0\r
+unsigned portBASE_TYPE uxReturn = 0U;\r
+\r
+char *pc = pc;\r
+extern void XUartLite_SendByte(u32 BaseAddress, u8 Data);\r
+\r
+       /* Just to avoid compiler warnings. */\r
+       ( void ) pxPort;\r
+\r
+       while( uxReturn != usStringLength )\r
+       {\r
+               XUartLite_SendByte( xUartLiteInstance.RegBaseAddress, *pc );\r
+               pc++;\r
+               uxReturn++;\r
+//             uxReturn += XUartLite_Send( &xUartLiteInstance, ( unsigned char * ) pcString, ( ( unsigned portBASE_TYPE ) usStringLength ) - uxReturn );\r
+               while( XUartLite_IsSending( &xUartLiteInstance ) != pdFALSE )\r
+               {\r
+                       /*_RB_ This function is not yet written to make use of the RTOS. */\r
+               }\r
+       }\r
+#endif\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )\r
+{\r
+#if 1\r
+       extern void XUartLite_SendByte(u32 BaseAddress, u8 Data);\r
+\r
+//     for( ;; )\r
+//     {\r
+               XUartLite_SendByte( xUartLiteInstance.RegBaseAddress, cOutChar );\r
+//     }\r
+//     vTaskDelay( 2 );\r
+       return 1;\r
+#else\r
+signed portBASE_TYPE xReturn;\r
+\r
+       if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) == pdPASS )\r
+       {\r
+               xReturn = pdPASS;\r
+               \r
+               /* Enable the UART Tx interrupt. */\r
+               XUartLite_EnableIntr( xUartLiteInstance.RegBaseAddress );\r
+       }\r
+       else\r
+       {\r
+               xReturn = pdFAIL;\r
+       }\r
+\r
+       return xReturn;\r
+#endif\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vSerialClose( xComPortHandle xPort )\r
+{\r
+       /* Not supported as not required by the demo application. */\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvRxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount )\r
+{\r
+       portNOP();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvTxHandler( void *pvUnused, unsigned portBASE_TYPE uxByteCount )\r
+{\r
+       portNOP();\r
+}\r
+\r
+\r
+\r
+\r
+\r
+       \r