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 // Modified by Kenji Arai / JH1PJL, October 30th,2010
kenjiArai 0:d4960fcea8ff 54
kenjiArai 0:d4960fcea8ff 55 #ifndef PORTMACRO_H
kenjiArai 0:d4960fcea8ff 56 #define PORTMACRO_H
kenjiArai 0:d4960fcea8ff 57
kenjiArai 0:d4960fcea8ff 58 #ifdef __cplusplus
kenjiArai 0:d4960fcea8ff 59 extern "C" {
kenjiArai 0:d4960fcea8ff 60 #endif
kenjiArai 0:d4960fcea8ff 61
kenjiArai 0:d4960fcea8ff 62 /*-----------------------------------------------------------
kenjiArai 0:d4960fcea8ff 63 * Port specific definitions.
kenjiArai 0:d4960fcea8ff 64 *
kenjiArai 0:d4960fcea8ff 65 * The settings in this file configure FreeRTOS correctly for the
kenjiArai 0:d4960fcea8ff 66 * given hardware and compiler.
kenjiArai 0:d4960fcea8ff 67 *
kenjiArai 0:d4960fcea8ff 68 * These settings should not be altered.
kenjiArai 0:d4960fcea8ff 69 *-----------------------------------------------------------
kenjiArai 0:d4960fcea8ff 70 */
kenjiArai 0:d4960fcea8ff 71
kenjiArai 0:d4960fcea8ff 72 /* Type definitions. */
kenjiArai 0:d4960fcea8ff 73 #define portCHAR char
kenjiArai 0:d4960fcea8ff 74 #define portFLOAT float
kenjiArai 0:d4960fcea8ff 75 #define portDOUBLE double
kenjiArai 0:d4960fcea8ff 76 #define portLONG long
kenjiArai 0:d4960fcea8ff 77 #define portSHORT short
kenjiArai 0:d4960fcea8ff 78 #define portSTACK_TYPE unsigned portLONG
kenjiArai 0:d4960fcea8ff 79 #define portBASE_TYPE long
kenjiArai 0:d4960fcea8ff 80
kenjiArai 0:d4960fcea8ff 81 #if( configUSE_16_BIT_TICKS == 1 )
kenjiArai 0:d4960fcea8ff 82 typedef unsigned portSHORT portTickType;
kenjiArai 0:d4960fcea8ff 83 #define portMAX_DELAY ( portTickType ) 0xffff
kenjiArai 0:d4960fcea8ff 84 #else
kenjiArai 0:d4960fcea8ff 85 typedef unsigned portLONG portTickType;
kenjiArai 0:d4960fcea8ff 86 #define portMAX_DELAY ( portTickType ) 0xffffffff
kenjiArai 0:d4960fcea8ff 87 #endif
kenjiArai 0:d4960fcea8ff 88 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 89
kenjiArai 0:d4960fcea8ff 90 /* Architecture specifics. */
kenjiArai 0:d4960fcea8ff 91 #define portSTACK_GROWTH ( -1 )
kenjiArai 0:d4960fcea8ff 92 #define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ )
kenjiArai 0:d4960fcea8ff 93 #define portBYTE_ALIGNMENT 8
kenjiArai 0:d4960fcea8ff 94 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 95
kenjiArai 0:d4960fcea8ff 96
kenjiArai 0:d4960fcea8ff 97 /* Scheduler utilities. */
kenjiArai 0:d4960fcea8ff 98 extern void vPortYieldFromISR( void );
kenjiArai 0:d4960fcea8ff 99
kenjiArai 0:d4960fcea8ff 100 #define portYIELD() vPortYieldFromISR()
kenjiArai 0:d4960fcea8ff 101
kenjiArai 0:d4960fcea8ff 102 #define portEND_SWITCHING_ISR( xSwitchRequired ) if( xSwitchRequired ) vPortYieldFromISR()
kenjiArai 0:d4960fcea8ff 103 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 104
kenjiArai 0:d4960fcea8ff 105 // Modified by Kenji Arai / JH1PJL, October 30th,2010
kenjiArai 0:d4960fcea8ff 106 #if 0
kenjiArai 0:d4960fcea8ff 107 /* Critical section management. */
kenjiArai 0:d4960fcea8ff 108
kenjiArai 0:d4960fcea8ff 109 /*
kenjiArai 0:d4960fcea8ff 110 * Set basepri to portMAX_SYSCALL_INTERRUPT_PRIORITY without effecting other
kenjiArai 0:d4960fcea8ff 111 * registers. r0 is clobbered.
kenjiArai 0:d4960fcea8ff 112 */
kenjiArai 0:d4960fcea8ff 113 //#define portSET_INTERRUPT_MASK() \
kenjiArai 0:d4960fcea8ff 114 __asm volatile \
kenjiArai 0:d4960fcea8ff 115 ( \
kenjiArai 0:d4960fcea8ff 116 " mov r0, %0 \n" \
kenjiArai 0:d4960fcea8ff 117 " msr basepri, r0 \n" \
kenjiArai 0:d4960fcea8ff 118 ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY):"r0" \
kenjiArai 0:d4960fcea8ff 119 )
kenjiArai 0:d4960fcea8ff 120
kenjiArai 0:d4960fcea8ff 121 /*
kenjiArai 0:d4960fcea8ff 122 * Set basepri back to 0 without effective other registers.
kenjiArai 0:d4960fcea8ff 123 * r0 is clobbered.
kenjiArai 0:d4960fcea8ff 124 */
kenjiArai 0:d4960fcea8ff 125 //#define portCLEAR_INTERRUPT_MASK() \
kenjiArai 0:d4960fcea8ff 126 __asm volatile \
kenjiArai 0:d4960fcea8ff 127 ( \
kenjiArai 0:d4960fcea8ff 128 " mov r0, #0 \n" \
kenjiArai 0:d4960fcea8ff 129 " msr basepri, r0 \n" \
kenjiArai 0:d4960fcea8ff 130 :::"r0" \
kenjiArai 0:d4960fcea8ff 131 )
kenjiArai 0:d4960fcea8ff 132
kenjiArai 0:d4960fcea8ff 133 //#define portSET_INTERRUPT_MASK_FROM_ISR() 0;portSET_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 134 //#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) portCLEAR_INTERRUPT_MASK();(void)x
kenjiArai 0:d4960fcea8ff 135
kenjiArai 0:d4960fcea8ff 136 extern void vPortEnterCritical( void );
kenjiArai 0:d4960fcea8ff 137 extern void vPortExitCritical( void );
kenjiArai 0:d4960fcea8ff 138
kenjiArai 0:d4960fcea8ff 139 #define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 140 #define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 141 #define portENTER_CRITICAL() vPortEnterCritical()
kenjiArai 0:d4960fcea8ff 142 #define portEXIT_CRITICAL() vPortExitCritical()
kenjiArai 0:d4960fcea8ff 143 #else
kenjiArai 0:d4960fcea8ff 144
kenjiArai 0:d4960fcea8ff 145 /* Critical section management. */
kenjiArai 0:d4960fcea8ff 146
kenjiArai 0:d4960fcea8ff 147 /*
kenjiArai 0:d4960fcea8ff 148 * Set basepri to portMAX_SYSCALL_INTERRUPT_PRIORITY without effecting other
kenjiArai 0:d4960fcea8ff 149 * registers. r0 is clobbered.
kenjiArai 0:d4960fcea8ff 150 */
kenjiArai 0:d4960fcea8ff 151 #define portSET_INTERRUPT_MASK() \
kenjiArai 0:d4960fcea8ff 152 __asm volatile \
kenjiArai 0:d4960fcea8ff 153 ( \
kenjiArai 0:d4960fcea8ff 154 " mov r0, %0 \n" \
kenjiArai 0:d4960fcea8ff 155 " msr basepri, r0 \n" \
kenjiArai 0:d4960fcea8ff 156 ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY):"r0" \
kenjiArai 0:d4960fcea8ff 157 )
kenjiArai 0:d4960fcea8ff 158
kenjiArai 0:d4960fcea8ff 159
kenjiArai 0:d4960fcea8ff 160 /*
kenjiArai 0:d4960fcea8ff 161 * Set basepri back to 0 without effective other registers.
kenjiArai 0:d4960fcea8ff 162 * r0 is clobbered.
kenjiArai 0:d4960fcea8ff 163 */
kenjiArai 0:d4960fcea8ff 164 #define portCLEAR_INTERRUPT_MASK() \
kenjiArai 0:d4960fcea8ff 165 __asm volatile \
kenjiArai 0:d4960fcea8ff 166 ( \
kenjiArai 0:d4960fcea8ff 167 " mov r0, #0 \n" \
kenjiArai 0:d4960fcea8ff 168 " msr basepri, r0 \n" \
kenjiArai 0:d4960fcea8ff 169 :::"r0" \
kenjiArai 0:d4960fcea8ff 170 )
kenjiArai 0:d4960fcea8ff 171
kenjiArai 0:d4960fcea8ff 172
kenjiArai 0:d4960fcea8ff 173 #define portSET_INTERRUPT_MASK_FROM_ISR() 0;portSET_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 174 #define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) portCLEAR_INTERRUPT_MASK();(void)x
kenjiArai 0:d4960fcea8ff 175
kenjiArai 0:d4960fcea8ff 176 extern void vPortEnterCritical( void );
kenjiArai 0:d4960fcea8ff 177 extern void vPortExitCritical( void );
kenjiArai 0:d4960fcea8ff 178
kenjiArai 0:d4960fcea8ff 179 #define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 180 #define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 181 #define portENTER_CRITICAL() vPortEnterCritical()
kenjiArai 0:d4960fcea8ff 182 #define portEXIT_CRITICAL() vPortExitCritical()
kenjiArai 0:d4960fcea8ff 183
kenjiArai 0:d4960fcea8ff 184 #if 0
kenjiArai 0:d4960fcea8ff 185 /* Critical section management. */
kenjiArai 0:d4960fcea8ff 186
kenjiArai 0:d4960fcea8ff 187 /*
kenjiArai 0:d4960fcea8ff 188 * Set basepri to portMAX_SYSCALL_INTERRUPT_PRIORITY without effecting other
kenjiArai 0:d4960fcea8ff 189 * registers. r0 is clobbered.
kenjiArai 0:d4960fcea8ff 190 */
kenjiArai 0:d4960fcea8ff 191 extern void portSET_INTERRUPT_MASK( unsigned portBASE_TYPE );
kenjiArai 0:d4960fcea8ff 192 /*
kenjiArai 0:d4960fcea8ff 193 * Set basepri back to 0 without effective other registers.
kenjiArai 0:d4960fcea8ff 194 * r0 is clobbered.
kenjiArai 0:d4960fcea8ff 195 */
kenjiArai 0:d4960fcea8ff 196 extern void portCLEAR_INTERRUPT_MASK( unsigned portBASE_TYPE );
kenjiArai 0:d4960fcea8ff 197
kenjiArai 0:d4960fcea8ff 198 //extern void portCLEAR_INTERRUPT_MASK_FROM_ISR( unsigned portBASE_TYPE );
kenjiArai 0:d4960fcea8ff 199
kenjiArai 0:d4960fcea8ff 200 extern void vPortEnterCritical( void );
kenjiArai 0:d4960fcea8ff 201 extern void vPortExitCritical( void );
kenjiArai 0:d4960fcea8ff 202
kenjiArai 0:d4960fcea8ff 203 #define portSET_INTERRUPT_MASK_FROM_ISR() portSET_INTERRUPT_MASK(0)
kenjiArai 0:d4960fcea8ff 204 #define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) portCLEAR_INTERRUPT_MASK();
kenjiArai 0:d4960fcea8ff 205 #define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 206 #define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK()
kenjiArai 0:d4960fcea8ff 207 #define portENTER_CRITICAL() vPortEnterCritical()
kenjiArai 0:d4960fcea8ff 208 #define portEXIT_CRITICAL() vPortExitCritical()
kenjiArai 0:d4960fcea8ff 209 #endif
kenjiArai 0:d4960fcea8ff 210
kenjiArai 0:d4960fcea8ff 211
kenjiArai 0:d4960fcea8ff 212 #endif
kenjiArai 0:d4960fcea8ff 213 /*-----------------------------------------------------------*/
kenjiArai 0:d4960fcea8ff 214
kenjiArai 0:d4960fcea8ff 215 /* Task function macros as described on the FreeRTOS.org WEB site. */
kenjiArai 0:d4960fcea8ff 216 #define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )
kenjiArai 0:d4960fcea8ff 217 #define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )
kenjiArai 0:d4960fcea8ff 218
kenjiArai 0:d4960fcea8ff 219 #define portNOP()
kenjiArai 0:d4960fcea8ff 220
kenjiArai 0:d4960fcea8ff 221 #ifdef __cplusplus
kenjiArai 0:d4960fcea8ff 222 }
kenjiArai 0:d4960fcea8ff 223 #endif
kenjiArai 0:d4960fcea8ff 224
kenjiArai 0:d4960fcea8ff 225 #endif /* PORTMACRO_H */
kenjiArai 0:d4960fcea8ff 226