TEste

Dependencies:  

Dependents:   EtherTest2 Andar_Linha_Reta_Robo_Claw_v1

Committer:
carlos_nascimento08
Date:
Thu Jul 19 00:08:36 2012 +0000
Revision:
0:48852bcc8e50
Teste de Exporta??o de Libraries;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
carlos_nascimento08 0:48852bcc8e50 1 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 2 * RL-ARM - RTX
carlos_nascimento08 0:48852bcc8e50 3 *----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 4 * Name: RTX_Conf_CM.C
carlos_nascimento08 0:48852bcc8e50 5 * Purpose: Configuration of CMSIS RTX Kernel for Cortex-M
carlos_nascimento08 0:48852bcc8e50 6 * Rev.: V4.20
carlos_nascimento08 0:48852bcc8e50 7 *----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 8 *
carlos_nascimento08 0:48852bcc8e50 9 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
carlos_nascimento08 0:48852bcc8e50 10 * All rights reserved.
carlos_nascimento08 0:48852bcc8e50 11 * Redistribution and use in source and binary forms, with or without
carlos_nascimento08 0:48852bcc8e50 12 * modification, are permitted provided that the following conditions are met:
carlos_nascimento08 0:48852bcc8e50 13 * - Redistributions of source code must retain the above copyright
carlos_nascimento08 0:48852bcc8e50 14 * notice, this list of conditions and the following disclaimer.
carlos_nascimento08 0:48852bcc8e50 15 * - Redistributions in binary form must reproduce the above copyright
carlos_nascimento08 0:48852bcc8e50 16 * notice, this list of conditions and the following disclaimer in the
carlos_nascimento08 0:48852bcc8e50 17 * documentation and/or other materials provided with the distribution.
carlos_nascimento08 0:48852bcc8e50 18 * - Neither the name of ARM nor the names of its contributors may be used
carlos_nascimento08 0:48852bcc8e50 19 * to endorse or promote products derived from this software without
carlos_nascimento08 0:48852bcc8e50 20 * specific prior written permission.
carlos_nascimento08 0:48852bcc8e50 21 *
carlos_nascimento08 0:48852bcc8e50 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
carlos_nascimento08 0:48852bcc8e50 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
carlos_nascimento08 0:48852bcc8e50 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
carlos_nascimento08 0:48852bcc8e50 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
carlos_nascimento08 0:48852bcc8e50 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
carlos_nascimento08 0:48852bcc8e50 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
carlos_nascimento08 0:48852bcc8e50 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
carlos_nascimento08 0:48852bcc8e50 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
carlos_nascimento08 0:48852bcc8e50 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
carlos_nascimento08 0:48852bcc8e50 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
carlos_nascimento08 0:48852bcc8e50 32 * POSSIBILITY OF SUCH DAMAGE.
carlos_nascimento08 0:48852bcc8e50 33 *---------------------------------------------------------------------------*/
carlos_nascimento08 0:48852bcc8e50 34
carlos_nascimento08 0:48852bcc8e50 35 #include "cmsis_os.h"
carlos_nascimento08 0:48852bcc8e50 36
carlos_nascimento08 0:48852bcc8e50 37
carlos_nascimento08 0:48852bcc8e50 38 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 39 * RTX User configuration part BEGIN
carlos_nascimento08 0:48852bcc8e50 40 *---------------------------------------------------------------------------*/
carlos_nascimento08 0:48852bcc8e50 41
carlos_nascimento08 0:48852bcc8e50 42 //-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
carlos_nascimento08 0:48852bcc8e50 43 //
carlos_nascimento08 0:48852bcc8e50 44 // <h>Thread Configuration
carlos_nascimento08 0:48852bcc8e50 45 // =======================
carlos_nascimento08 0:48852bcc8e50 46 //
carlos_nascimento08 0:48852bcc8e50 47 // <o>Number of concurrent running threads <0-250>
carlos_nascimento08 0:48852bcc8e50 48 // <i> Defines max. number of threads that will run at the same time.
carlos_nascimento08 0:48852bcc8e50 49 // counting "main", but not counting "osTimerThread"
carlos_nascimento08 0:48852bcc8e50 50 // <i> Default: 6
carlos_nascimento08 0:48852bcc8e50 51 #ifndef OS_TASKCNT
carlos_nascimento08 0:48852bcc8e50 52 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
carlos_nascimento08 0:48852bcc8e50 53 # define OS_TASKCNT 7
carlos_nascimento08 0:48852bcc8e50 54 # elif defined(TARGET_LPC11U24)
carlos_nascimento08 0:48852bcc8e50 55 # define OS_TASKCNT 3
carlos_nascimento08 0:48852bcc8e50 56 # endif
carlos_nascimento08 0:48852bcc8e50 57 #endif
carlos_nascimento08 0:48852bcc8e50 58
carlos_nascimento08 0:48852bcc8e50 59 // <o>Number of threads with user-provided stack size <0-250>
carlos_nascimento08 0:48852bcc8e50 60 // The stack of "main" and "osTimerThread" are calculated separately
carlos_nascimento08 0:48852bcc8e50 61 // <i> Defines the number of threads with user-provided stack size.
carlos_nascimento08 0:48852bcc8e50 62 // <i> Default: 0
carlos_nascimento08 0:48852bcc8e50 63 #ifndef OS_PRIVCNT
carlos_nascimento08 0:48852bcc8e50 64 #define OS_PRIVCNT (OS_TASKCNT - 1)
carlos_nascimento08 0:48852bcc8e50 65 #endif
carlos_nascimento08 0:48852bcc8e50 66
carlos_nascimento08 0:48852bcc8e50 67 // <o>Default Thread stack size [bytes] <64-4096:8><#/4>
carlos_nascimento08 0:48852bcc8e50 68 // <i> Defines default stack size for threads.
carlos_nascimento08 0:48852bcc8e50 69 // <i> Default: 200
carlos_nascimento08 0:48852bcc8e50 70 #ifndef OS_STKSIZE
carlos_nascimento08 0:48852bcc8e50 71 #define OS_STKSIZE WORDS_STACK_SIZE
carlos_nascimento08 0:48852bcc8e50 72 #endif
carlos_nascimento08 0:48852bcc8e50 73
carlos_nascimento08 0:48852bcc8e50 74 // <o>Main Thread stack size [bytes] <64-4096:8><#/4>
carlos_nascimento08 0:48852bcc8e50 75 // <i> Defines stack size for main thread.
carlos_nascimento08 0:48852bcc8e50 76 // <i> Default: 200
carlos_nascimento08 0:48852bcc8e50 77 #ifndef OS_MAINSTKSIZE
carlos_nascimento08 0:48852bcc8e50 78 #define OS_MAINSTKSIZE WORDS_STACK_SIZE
carlos_nascimento08 0:48852bcc8e50 79 #endif
carlos_nascimento08 0:48852bcc8e50 80
carlos_nascimento08 0:48852bcc8e50 81 // <q>Check for stack overflow
carlos_nascimento08 0:48852bcc8e50 82 // ===========================
carlos_nascimento08 0:48852bcc8e50 83 // <i> Includes the stack checking code for stack overflow.
carlos_nascimento08 0:48852bcc8e50 84 // <i> Note that additional code reduces the Kernel performance.
carlos_nascimento08 0:48852bcc8e50 85 #ifndef OS_STKCHECK
carlos_nascimento08 0:48852bcc8e50 86 #define OS_STKCHECK 1
carlos_nascimento08 0:48852bcc8e50 87 #endif
carlos_nascimento08 0:48852bcc8e50 88
carlos_nascimento08 0:48852bcc8e50 89 // <q>Run in privileged mode
carlos_nascimento08 0:48852bcc8e50 90 // =========================
carlos_nascimento08 0:48852bcc8e50 91 // <i> Runs all Threads in privileged mode.
carlos_nascimento08 0:48852bcc8e50 92 // <i> Default: Unprivileged
carlos_nascimento08 0:48852bcc8e50 93 #ifndef OS_RUNPRIV
carlos_nascimento08 0:48852bcc8e50 94 #define OS_RUNPRIV 1
carlos_nascimento08 0:48852bcc8e50 95 #endif
carlos_nascimento08 0:48852bcc8e50 96
carlos_nascimento08 0:48852bcc8e50 97 // </h>
carlos_nascimento08 0:48852bcc8e50 98 // <h>SysTick Timer Configuration
carlos_nascimento08 0:48852bcc8e50 99 // ==============================
carlos_nascimento08 0:48852bcc8e50 100 //
carlos_nascimento08 0:48852bcc8e50 101 // <o>Timer clock value [Hz] <1-1000000000>
carlos_nascimento08 0:48852bcc8e50 102 // <i> Defines the timer clock value.
carlos_nascimento08 0:48852bcc8e50 103 // <i> Default: 6000000 (6MHz)
carlos_nascimento08 0:48852bcc8e50 104 #ifndef OS_CLOCK
carlos_nascimento08 0:48852bcc8e50 105 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
carlos_nascimento08 0:48852bcc8e50 106 # define OS_CLOCK 96000000
carlos_nascimento08 0:48852bcc8e50 107 # elif defined(TARGET_LPC11U24)
carlos_nascimento08 0:48852bcc8e50 108 # define OS_CLOCK 48000000
carlos_nascimento08 0:48852bcc8e50 109 # endif
carlos_nascimento08 0:48852bcc8e50 110 #endif
carlos_nascimento08 0:48852bcc8e50 111
carlos_nascimento08 0:48852bcc8e50 112 // <o>Timer tick value [us] <1-1000000>
carlos_nascimento08 0:48852bcc8e50 113 // <i> Defines the timer tick value.
carlos_nascimento08 0:48852bcc8e50 114 // <i> Default: 1000 (1ms)
carlos_nascimento08 0:48852bcc8e50 115 #ifndef OS_TICK
carlos_nascimento08 0:48852bcc8e50 116 #define OS_TICK 1000
carlos_nascimento08 0:48852bcc8e50 117 #endif
carlos_nascimento08 0:48852bcc8e50 118
carlos_nascimento08 0:48852bcc8e50 119 // </h>
carlos_nascimento08 0:48852bcc8e50 120
carlos_nascimento08 0:48852bcc8e50 121 // <h>System Configuration
carlos_nascimento08 0:48852bcc8e50 122 // =======================
carlos_nascimento08 0:48852bcc8e50 123 //
carlos_nascimento08 0:48852bcc8e50 124 // <e>Round-Robin Thread switching
carlos_nascimento08 0:48852bcc8e50 125 // ===============================
carlos_nascimento08 0:48852bcc8e50 126 //
carlos_nascimento08 0:48852bcc8e50 127 // <i> Enables Round-Robin Thread switching.
carlos_nascimento08 0:48852bcc8e50 128 #ifndef OS_ROBIN
carlos_nascimento08 0:48852bcc8e50 129 #define OS_ROBIN 1
carlos_nascimento08 0:48852bcc8e50 130 #endif
carlos_nascimento08 0:48852bcc8e50 131
carlos_nascimento08 0:48852bcc8e50 132 // <o>Round-Robin Timeout [ticks] <1-1000>
carlos_nascimento08 0:48852bcc8e50 133 // <i> Defines how long a thread will execute before a thread switch.
carlos_nascimento08 0:48852bcc8e50 134 // <i> Default: 5
carlos_nascimento08 0:48852bcc8e50 135 #ifndef OS_ROBINTOUT
carlos_nascimento08 0:48852bcc8e50 136 #define OS_ROBINTOUT 5
carlos_nascimento08 0:48852bcc8e50 137 #endif
carlos_nascimento08 0:48852bcc8e50 138
carlos_nascimento08 0:48852bcc8e50 139 // </e>
carlos_nascimento08 0:48852bcc8e50 140
carlos_nascimento08 0:48852bcc8e50 141 // <e>User Timers
carlos_nascimento08 0:48852bcc8e50 142 // ==============
carlos_nascimento08 0:48852bcc8e50 143 // <i> Enables user Timers
carlos_nascimento08 0:48852bcc8e50 144 #ifndef OS_TIMERS
carlos_nascimento08 0:48852bcc8e50 145 #define OS_TIMERS 1
carlos_nascimento08 0:48852bcc8e50 146 #endif
carlos_nascimento08 0:48852bcc8e50 147
carlos_nascimento08 0:48852bcc8e50 148 // <o>Timer Thread Priority
carlos_nascimento08 0:48852bcc8e50 149 // <1=> Low
carlos_nascimento08 0:48852bcc8e50 150 // <2=> Below Normal
carlos_nascimento08 0:48852bcc8e50 151 // <3=> Normal
carlos_nascimento08 0:48852bcc8e50 152 // <4=> Above Normal
carlos_nascimento08 0:48852bcc8e50 153 // <5=> High
carlos_nascimento08 0:48852bcc8e50 154 // <6=> Realtime
carlos_nascimento08 0:48852bcc8e50 155 // <i> Defines priority for Timer Thread
carlos_nascimento08 0:48852bcc8e50 156 // <i> Default: High
carlos_nascimento08 0:48852bcc8e50 157 #ifndef OS_TIMERPRIO
carlos_nascimento08 0:48852bcc8e50 158 #define OS_TIMERPRIO 5
carlos_nascimento08 0:48852bcc8e50 159 #endif
carlos_nascimento08 0:48852bcc8e50 160
carlos_nascimento08 0:48852bcc8e50 161 // <o>Timer Thread stack size [bytes] <64-4096:8><#/4>
carlos_nascimento08 0:48852bcc8e50 162 // <i> Defines stack size for Timer thread.
carlos_nascimento08 0:48852bcc8e50 163 // <i> Default: 200
carlos_nascimento08 0:48852bcc8e50 164 #ifndef OS_TIMERSTKSZ
carlos_nascimento08 0:48852bcc8e50 165 #define OS_TIMERSTKSZ WORDS_STACK_SIZE
carlos_nascimento08 0:48852bcc8e50 166 #endif
carlos_nascimento08 0:48852bcc8e50 167
carlos_nascimento08 0:48852bcc8e50 168 // <o>Timer Callback Queue size <1-32>
carlos_nascimento08 0:48852bcc8e50 169 // <i> Defines number of concurrent callbacks that will be queued.
carlos_nascimento08 0:48852bcc8e50 170 // <i> Default: 4
carlos_nascimento08 0:48852bcc8e50 171 #ifndef OS_TIMERCBQSZ
carlos_nascimento08 0:48852bcc8e50 172 #define OS_TIMERCBQS 4
carlos_nascimento08 0:48852bcc8e50 173 #endif
carlos_nascimento08 0:48852bcc8e50 174
carlos_nascimento08 0:48852bcc8e50 175 // </e>
carlos_nascimento08 0:48852bcc8e50 176
carlos_nascimento08 0:48852bcc8e50 177 // <o>ISR FIFO Queue size<4=> 4 entries <8=> 8 entries
carlos_nascimento08 0:48852bcc8e50 178 // <12=> 12 entries <16=> 16 entries
carlos_nascimento08 0:48852bcc8e50 179 // <24=> 24 entries <32=> 32 entries
carlos_nascimento08 0:48852bcc8e50 180 // <48=> 48 entries <64=> 64 entries
carlos_nascimento08 0:48852bcc8e50 181 // <96=> 96 entries
carlos_nascimento08 0:48852bcc8e50 182 // <i> ISR functions store requests to this buffer,
carlos_nascimento08 0:48852bcc8e50 183 // <i> when they are called from the iterrupt handler.
carlos_nascimento08 0:48852bcc8e50 184 // <i> Default: 16 entries
carlos_nascimento08 0:48852bcc8e50 185 #ifndef OS_FIFOSZ
carlos_nascimento08 0:48852bcc8e50 186 #define OS_FIFOSZ 16
carlos_nascimento08 0:48852bcc8e50 187 #endif
carlos_nascimento08 0:48852bcc8e50 188
carlos_nascimento08 0:48852bcc8e50 189 // </h>
carlos_nascimento08 0:48852bcc8e50 190
carlos_nascimento08 0:48852bcc8e50 191 //------------- <<< end of configuration section >>> -----------------------
carlos_nascimento08 0:48852bcc8e50 192
carlos_nascimento08 0:48852bcc8e50 193 // Standard library system mutexes
carlos_nascimento08 0:48852bcc8e50 194 // ===============================
carlos_nascimento08 0:48852bcc8e50 195 // Define max. number system mutexes that are used to protect
carlos_nascimento08 0:48852bcc8e50 196 // the arm standard runtime library. For microlib they are not used.
carlos_nascimento08 0:48852bcc8e50 197 #ifndef OS_MUTEXCNT
carlos_nascimento08 0:48852bcc8e50 198 #define OS_MUTEXCNT 8
carlos_nascimento08 0:48852bcc8e50 199 #endif
carlos_nascimento08 0:48852bcc8e50 200
carlos_nascimento08 0:48852bcc8e50 201 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 202 * RTX User configuration part END
carlos_nascimento08 0:48852bcc8e50 203 *---------------------------------------------------------------------------*/
carlos_nascimento08 0:48852bcc8e50 204
carlos_nascimento08 0:48852bcc8e50 205 #define OS_TRV ((uint32_t)(((double)OS_CLOCK*(double)OS_TICK)/1E6)-1)
carlos_nascimento08 0:48852bcc8e50 206
carlos_nascimento08 0:48852bcc8e50 207
carlos_nascimento08 0:48852bcc8e50 208 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 209 * OS Idle daemon
carlos_nascimento08 0:48852bcc8e50 210 *---------------------------------------------------------------------------*/
carlos_nascimento08 0:48852bcc8e50 211 void os_idle_demon (void) {
carlos_nascimento08 0:48852bcc8e50 212 /* The idle demon is a system thread, running when no other thread is */
carlos_nascimento08 0:48852bcc8e50 213 /* ready to run. */
carlos_nascimento08 0:48852bcc8e50 214
carlos_nascimento08 0:48852bcc8e50 215 /* Sleep: ideally, we should put the chip to sleep.
carlos_nascimento08 0:48852bcc8e50 216 Unfortunately, this usually requires disconnecting the interface chip (debugger).
carlos_nascimento08 0:48852bcc8e50 217 This can be done, but it would break the local file system.
carlos_nascimento08 0:48852bcc8e50 218 */
carlos_nascimento08 0:48852bcc8e50 219 for (;;) {
carlos_nascimento08 0:48852bcc8e50 220 // sleep();
carlos_nascimento08 0:48852bcc8e50 221 }
carlos_nascimento08 0:48852bcc8e50 222 }
carlos_nascimento08 0:48852bcc8e50 223
carlos_nascimento08 0:48852bcc8e50 224 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 225 * RTX Errors
carlos_nascimento08 0:48852bcc8e50 226 *---------------------------------------------------------------------------*/
carlos_nascimento08 0:48852bcc8e50 227 extern void mbed_die(void);
carlos_nascimento08 0:48852bcc8e50 228
carlos_nascimento08 0:48852bcc8e50 229 void os_error (uint32_t err_code) {
carlos_nascimento08 0:48852bcc8e50 230 /* This function is called when a runtime error is detected. Parameter */
carlos_nascimento08 0:48852bcc8e50 231 /* 'err_code' holds the runtime error code (defined in RTX_Config.h). */
carlos_nascimento08 0:48852bcc8e50 232 mbed_die();
carlos_nascimento08 0:48852bcc8e50 233 }
carlos_nascimento08 0:48852bcc8e50 234
carlos_nascimento08 0:48852bcc8e50 235 void sysThreadError(osStatus status) {
carlos_nascimento08 0:48852bcc8e50 236 if (status != osOK) {
carlos_nascimento08 0:48852bcc8e50 237 mbed_die();
carlos_nascimento08 0:48852bcc8e50 238 }
carlos_nascimento08 0:48852bcc8e50 239 }
carlos_nascimento08 0:48852bcc8e50 240
carlos_nascimento08 0:48852bcc8e50 241 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 242 * RTX Configuration Functions
carlos_nascimento08 0:48852bcc8e50 243 *---------------------------------------------------------------------------*/
carlos_nascimento08 0:48852bcc8e50 244
carlos_nascimento08 0:48852bcc8e50 245 #include "RTX_CM_lib.h"
carlos_nascimento08 0:48852bcc8e50 246
carlos_nascimento08 0:48852bcc8e50 247 /*----------------------------------------------------------------------------
carlos_nascimento08 0:48852bcc8e50 248 * end of file
carlos_nascimento08 0:48852bcc8e50 249 *---------------------------------------------------------------------------*/