Please see my note book http://mbed.org/users/kenjiArai/notebook/freertos-on-mbed-board-with-mbed-cloud-ide--never-/

This is too old.
Below is another FreeRTOS on mbed.
http://developer.mbed.org/users/rgrover1/code/FreeRTOS/
I don't know it works well or not.
I have not evaluated it.

Committer:
kenjiArai
Date:
Sat Jan 01 11:17:45 2011 +0000
Revision:
0:d4960fcea8ff

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:d4960fcea8ff 1 /*
kenjiArai 0:d4960fcea8ff 2 FreeRTOS V6.0.3 - Copyright (C) 2010 Real Time Engineers Ltd.
kenjiArai 0:d4960fcea8ff 3
kenjiArai 0:d4960fcea8ff 4 ***************************************************************************
kenjiArai 0:d4960fcea8ff 5 * *
kenjiArai 0:d4960fcea8ff 6 * If you are: *
kenjiArai 0:d4960fcea8ff 7 * *
kenjiArai 0:d4960fcea8ff 8 * + New to FreeRTOS, *
kenjiArai 0:d4960fcea8ff 9 * + Wanting to learn FreeRTOS or multitasking in general quickly *
kenjiArai 0:d4960fcea8ff 10 * + Looking for basic training, *
kenjiArai 0:d4960fcea8ff 11 * + Wanting to improve your FreeRTOS skills and productivity *
kenjiArai 0:d4960fcea8ff 12 * *
kenjiArai 0:d4960fcea8ff 13 * then take a look at the FreeRTOS eBook *
kenjiArai 0:d4960fcea8ff 14 * *
kenjiArai 0:d4960fcea8ff 15 * "Using the FreeRTOS Real Time Kernel - a Practical Guide" *
kenjiArai 0:d4960fcea8ff 16 * http://www.FreeRTOS.org/Documentation *
kenjiArai 0:d4960fcea8ff 17 * *
kenjiArai 0:d4960fcea8ff 18 * A pdf reference manual is also available. Both are usually delivered *
kenjiArai 0:d4960fcea8ff 19 * to your inbox within 20 minutes to two hours when purchased between 8am *
kenjiArai 0:d4960fcea8ff 20 * and 8pm GMT (although please allow up to 24 hours in case of *
kenjiArai 0:d4960fcea8ff 21 * exceptional circumstances). Thank you for your support! *
kenjiArai 0:d4960fcea8ff 22 * *
kenjiArai 0:d4960fcea8ff 23 ***************************************************************************
kenjiArai 0:d4960fcea8ff 24
kenjiArai 0:d4960fcea8ff 25 This file is part of the FreeRTOS distribution.
kenjiArai 0:d4960fcea8ff 26
kenjiArai 0:d4960fcea8ff 27 FreeRTOS is free software; you can redistribute it and/or modify it under
kenjiArai 0:d4960fcea8ff 28 the terms of the GNU General Public License (version 2) as published by the
kenjiArai 0:d4960fcea8ff 29 Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
kenjiArai 0:d4960fcea8ff 30 ***NOTE*** The exception to the GPL is included to allow you to distribute
kenjiArai 0:d4960fcea8ff 31 a combined work that includes FreeRTOS without being obliged to provide the
kenjiArai 0:d4960fcea8ff 32 source code for proprietary components outside of the FreeRTOS kernel.
kenjiArai 0:d4960fcea8ff 33 FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
kenjiArai 0:d4960fcea8ff 34 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
kenjiArai 0:d4960fcea8ff 35 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
kenjiArai 0:d4960fcea8ff 36 more details. You should have received a copy of the GNU General Public
kenjiArai 0:d4960fcea8ff 37 License and the FreeRTOS license exception along with FreeRTOS; if not it
kenjiArai 0:d4960fcea8ff 38 can be viewed here: http://www.freertos.org/a00114.html and also obtained
kenjiArai 0:d4960fcea8ff 39 by writing to Richard Barry, contact details for whom are available on the
kenjiArai 0:d4960fcea8ff 40 FreeRTOS WEB site.
kenjiArai 0:d4960fcea8ff 41
kenjiArai 0:d4960fcea8ff 42 1 tab == 4 spaces!
kenjiArai 0:d4960fcea8ff 43
kenjiArai 0:d4960fcea8ff 44 http://www.FreeRTOS.org - Documentation, latest information, license and
kenjiArai 0:d4960fcea8ff 45 contact details.
kenjiArai 0:d4960fcea8ff 46
kenjiArai 0:d4960fcea8ff 47 http://www.SafeRTOS.com - A version that is certified for use in safety
kenjiArai 0:d4960fcea8ff 48 critical systems.
kenjiArai 0:d4960fcea8ff 49
kenjiArai 0:d4960fcea8ff 50 http://www.OpenRTOS.com - Commercial support, development, porting,
kenjiArai 0:d4960fcea8ff 51 licensing and training services.
kenjiArai 0:d4960fcea8ff 52 */
kenjiArai 0:d4960fcea8ff 53
kenjiArai 0:d4960fcea8ff 54
kenjiArai 0:d4960fcea8ff 55 /*
kenjiArai 0:d4960fcea8ff 56 * The simplest possible implementation of pvPortMalloc(). Note that this
kenjiArai 0:d4960fcea8ff 57 * implementation does NOT allow allocated memory to be freed again.
kenjiArai 0:d4960fcea8ff 58 *
kenjiArai 0:d4960fcea8ff 59 * See heap_2.c and heap_3.c for alternative implementations, and the memory
kenjiArai 0:d4960fcea8ff 60 * management pages of http://www.FreeRTOS.org for more information.
kenjiArai 0:d4960fcea8ff 61 */
kenjiArai 0:d4960fcea8ff 62
kenjiArai 0:d4960fcea8ff 63 #include <stdlib.h>
kenjiArai 0:d4960fcea8ff 64
kenjiArai 0:d4960fcea8ff 65 /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining
kenjiArai 0:d4960fcea8ff 66 all the API functions to use the MPU wrappers. That should only be done when
kenjiArai 0:d4960fcea8ff 67 task.h is included from an application file. */
kenjiArai 0:d4960fcea8ff 68 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
kenjiArai 0:d4960fcea8ff 69
kenjiArai 0:d4960fcea8ff 70 #include "FreeRTOS.h"
kenjiArai 0:d4960fcea8ff 71 #include "task.h"
kenjiArai 0:d4960fcea8ff 72
kenjiArai 0:d4960fcea8ff 73 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
kenjiArai 0:d4960fcea8ff 74
kenjiArai 0:d4960fcea8ff 75 /* Allocate the memory for the heap. The struct is used to force byte
kenjiArai 0:d4960fcea8ff 76 alignment without using any non-portable code. */
kenjiArai 0:d4960fcea8ff 77 static union xRTOS_HEAP
kenjiArai 0:d4960fcea8ff 78 {
kenjiArai 0:d4960fcea8ff 79 #if portBYTE_ALIGNMENT == 8
kenjiArai 0:d4960fcea8ff 80 volatile portDOUBLE dDummy;
kenjiArai 0:d4960fcea8ff 81 #else
kenjiArai 0:d4960fcea8ff 82 volatile unsigned long ulDummy;
kenjiArai 0:d4960fcea8ff 83 #endif
kenjiArai 0:d4960fcea8ff 84 unsigned char ucHeap[ configTOTAL_HEAP_SIZE ];
kenjiArai 0:d4960fcea8ff 85 } xHeap;
kenjiArai 0:d4960fcea8ff 86
kenjiArai 0:d4960fcea8ff 87 static size_t xNextFreeByte = ( size_t ) 0;
kenjiArai 0:d4960fcea8ff 88 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 89
kenjiArai 0:d4960fcea8ff 90 void *pvPortMalloc( size_t xWantedSize )
kenjiArai 0:d4960fcea8ff 91 {
kenjiArai 0:d4960fcea8ff 92 void *pvReturn = NULL;
kenjiArai 0:d4960fcea8ff 93
kenjiArai 0:d4960fcea8ff 94 /* Ensure that blocks are always aligned to the required number of bytes. */
kenjiArai 0:d4960fcea8ff 95 #if portBYTE_ALIGNMENT != 1
kenjiArai 0:d4960fcea8ff 96 if( xWantedSize & portBYTE_ALIGNMENT_MASK )
kenjiArai 0:d4960fcea8ff 97 {
kenjiArai 0:d4960fcea8ff 98 /* Byte alignment required. */
kenjiArai 0:d4960fcea8ff 99 xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) );
kenjiArai 0:d4960fcea8ff 100 }
kenjiArai 0:d4960fcea8ff 101 #endif
kenjiArai 0:d4960fcea8ff 102
kenjiArai 0:d4960fcea8ff 103 vTaskSuspendAll();
kenjiArai 0:d4960fcea8ff 104 {
kenjiArai 0:d4960fcea8ff 105 /* Check there is enough room left for the allocation. */
kenjiArai 0:d4960fcea8ff 106 if( ( ( xNextFreeByte + xWantedSize ) < configTOTAL_HEAP_SIZE ) &&
kenjiArai 0:d4960fcea8ff 107 ( ( xNextFreeByte + xWantedSize ) > xNextFreeByte ) )/* Check for overflow. */
kenjiArai 0:d4960fcea8ff 108 {
kenjiArai 0:d4960fcea8ff 109 /* Return the next free byte then increment the index past this
kenjiArai 0:d4960fcea8ff 110 block. */
kenjiArai 0:d4960fcea8ff 111 pvReturn = &( xHeap.ucHeap[ xNextFreeByte ] );
kenjiArai 0:d4960fcea8ff 112 xNextFreeByte += xWantedSize;
kenjiArai 0:d4960fcea8ff 113 }
kenjiArai 0:d4960fcea8ff 114 }
kenjiArai 0:d4960fcea8ff 115 xTaskResumeAll();
kenjiArai 0:d4960fcea8ff 116
kenjiArai 0:d4960fcea8ff 117 #if( configUSE_MALLOC_FAILED_HOOK == 1 )
kenjiArai 0:d4960fcea8ff 118 {
kenjiArai 0:d4960fcea8ff 119 if( pvReturn == NULL )
kenjiArai 0:d4960fcea8ff 120 {
kenjiArai 0:d4960fcea8ff 121 extern void vApplicationMallocFailedHook( void );
kenjiArai 0:d4960fcea8ff 122 vApplicationMallocFailedHook();
kenjiArai 0:d4960fcea8ff 123 }
kenjiArai 0:d4960fcea8ff 124 }
kenjiArai 0:d4960fcea8ff 125 #endif
kenjiArai 0:d4960fcea8ff 126
kenjiArai 0:d4960fcea8ff 127 return pvReturn;
kenjiArai 0:d4960fcea8ff 128 }
kenjiArai 0:d4960fcea8ff 129 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 130
kenjiArai 0:d4960fcea8ff 131 void vPortFree( void *pv )
kenjiArai 0:d4960fcea8ff 132 {
kenjiArai 0:d4960fcea8ff 133 /* Memory cannot be freed using this scheme. See heap_2.c and heap_3.c
kenjiArai 0:d4960fcea8ff 134 for alternative implementations, and the memory management pages of
kenjiArai 0:d4960fcea8ff 135 http://www.FreeRTOS.org for more information. */
kenjiArai 0:d4960fcea8ff 136 ( void ) pv;
kenjiArai 0:d4960fcea8ff 137 }
kenjiArai 0:d4960fcea8ff 138 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 139
kenjiArai 0:d4960fcea8ff 140 void vPortInitialiseBlocks( void )
kenjiArai 0:d4960fcea8ff 141 {
kenjiArai 0:d4960fcea8ff 142 /* Only required when static memory is not cleared. */
kenjiArai 0:d4960fcea8ff 143 xNextFreeByte = ( size_t ) 0;
kenjiArai 0:d4960fcea8ff 144 }
kenjiArai 0:d4960fcea8ff 145 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 146
kenjiArai 0:d4960fcea8ff 147 size_t xPortGetFreeHeapSize( void )
kenjiArai 0:d4960fcea8ff 148 {
kenjiArai 0:d4960fcea8ff 149 return ( configTOTAL_HEAP_SIZE - xNextFreeByte );
kenjiArai 0:d4960fcea8ff 150 }
kenjiArai 0:d4960fcea8ff 151
kenjiArai 0:d4960fcea8ff 152
kenjiArai 0:d4960fcea8ff 153