]> git.sur5r.net Git - freertos/commitdiff
Continue work on MicroBlaze port - still very much a work in progress.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 3 Jun 2011 09:01:21 +0000 (09:01 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Fri, 3 Jun 2011 09:01:21 +0000 (09:01 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1443 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOSConfig.h
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOS_Source/portable/GCC/MicroBlaze/port.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOS_Source/portable/GCC/MicroBlaze/portasm.s
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-blinky.c

index b1d3b67189617c51c52c61dc081da4396a1076f3..3475e05a3bad1abca726e5cea515c1e04cbc1b2b 100644 (file)
@@ -80,7 +80,7 @@
 #define configUSE_PREEMPTION                   1\r
 #define configUSE_IDLE_HOOK                            1\r
 #define configUSE_TICK_HOOK                            0\r
-#define configCPU_CLOCK_HZ                             ( 100000000UL )\r
+#define configCPU_CLOCK_HZ                             ( XPAR_MICROBLAZE_CORE_CLOCK_FREQ_HZ )\r
 #define configTICK_RATE_HZ                             ( ( portTickType ) 1000 )\r
 #define configMAX_PRIORITIES                   ( ( unsigned portBASE_TYPE ) 5 )\r
 #define configTOTAL_HEAP_SIZE                  ( ( size_t ) ( 10 * 1024 ) )\r
index ed39d1d2c26896f5aa196e50972ecb5450a1e8fe..e2731f8d14d4241230b5ca920bca934341ca557b 100644 (file)
@@ -229,7 +229,6 @@ const unsigned long ulR13 = ( unsigned long ) &_SDA_BASE_;
 portBASE_TYPE xPortStartScheduler( void )\r
 {\r
 extern void ( vStartFirstTask )( void );\r
-int iStatus;\r
 \r
        /* Setup the hardware to generate the tick.  Interrupts are disabled when\r
        this function is called. */\r
@@ -245,14 +244,8 @@ int iStatus;
                memset( pulISRStack, portISR_STACK_FILL_VALUE, configMINIMAL_STACK_SIZE * sizeof( portSTACK_TYPE ) );\r
                pulISRStack += ( configMINIMAL_STACK_SIZE - 1 );\r
 \r
-               /* Enable exceptions. */\r
-               microblaze_enable_interrupts();\r
-\r
-               if( iStatus == XST_SUCCESS )\r
-               {\r
-                       /* Kick off the first task. */\r
-                       vStartFirstTask();\r
-               }\r
+               /* From here on, the created tasks will be executing. */\r
+               vStartFirstTask();\r
        }\r
 \r
        /* Should not get here as the tasks are now running! */\r
@@ -383,6 +376,7 @@ void vTickISR( void *pvUnused )
 static portBASE_TYPE prvInitialiseInterruptController( void )\r
 {\r
 portBASE_TYPE xStatus;\r
+extern Xil_ExceptionHandler vPortFreeRTOSInterruptHandler;\r
 \r
        xStatus = XIntc_Initialize( &xInterruptControllerInstance, configINTERRUPT_CONTROLLER_TO_USE );\r
 \r
@@ -393,7 +387,7 @@ portBASE_TYPE xStatus;
 \r
                /* Register the interrupt controller handle that uses the exception\r
                table. */\r
-               Xil_ExceptionRegisterHandler( XIL_EXCEPTION_ID_INT,     ( Xil_ExceptionHandler ) XIntc_DeviceInterruptHandler, NULL );\r
+               Xil_ExceptionRegisterHandler( XIL_EXCEPTION_ID_INT,     vPortFreeRTOSInterruptHandler, NULL );\r
 \r
            /* Service all pending interrupts each time the handler is entered. */\r
            XIntc_SetIntrSvcOption( xInterruptControllerInstance.BaseAddress, XIN_SVC_ALL_ISRS_OPTION );\r
index ac8545a2a9881763f2e1333e5b243d7ab814cc69..ea597dca2cbfff9bace0e97852462dae9f98bbba 100644 (file)
@@ -1,10 +1,69 @@
+/*\r
+    FreeRTOS V7.0.1 - Copyright (C) 2011 Real Time Engineers Ltd.\r
+\r
+\r
+       FreeRTOS supports many tools and architectures. V7.0.0 is sponsored by:\r
+       Atollic AB - Atollic provides professional embedded systems development\r
+       tools for C/C++ development, code analysis and test automation.\r
+       See http://www.atollic.com\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
        .extern pxCurrentTCB\r
-       .extern vTaskISRHandler\r
+       .extern XIntc_DeviceInterruptHandler\r
        .extern vTaskSwitchContext\r
        .extern uxCriticalNesting\r
        .extern pulISRStack\r
 \r
-       .global _interrupt_handler\r
+       .global vPortFreeRTOSInterruptHandler\r
        .global VPortYieldASM\r
        .global vStartFirstTask\r
 \r
        .align  2\r
 \r
 \r
-_interrupt_handler:\r
+vPortFreeRTOSInterruptHandler:\r
        portSAVE_CONTEXT\r
        /* Entered via an interrupt so interrupts must be enabled in msr. */\r
        ori r31, r31, 2\r
@@ -141,7 +200,7 @@ _interrupt_handler:
        /* Now switch to use the ISR stack. */\r
        lwi r3, r0, pulISRStack\r
        add r1, r3, r0\r
-       bralid r15, vTaskISRHandler\r
+       bralid r15, XIntc_DeviceInterruptHandler\r
        or r0, r0, r0\r
        portRESTORE_CONTEXT\r
 \r
index 2401a10ad7cf73127b5a1c85642089132a7836f9..649754b2f7051e38a0ea56ffcf4047e6fb112df6 100644 (file)
@@ -380,7 +380,7 @@ void vApplicationSetupTimerInterrupt( void )
 {\r
 portBASE_TYPE xStatus;\r
 const unsigned char ucTimerCounterNumber = ( unsigned char ) 0U;\r
-const unsigned long ulCounterValue = ( ( configCPU_CLOCK_HZ / configTICK_RATE_HZ ) + 1UL );\r
+const unsigned long ulCounterValue = ( ( XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ / configTICK_RATE_HZ ) - 1UL );\r
 extern void vTickISR( void *pvUnused );\r
 \r
        /* Initialise the timer/counter. */\r