Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-rtos by
RTX_Conf_CM.c
00001 /*---------------------------------------------------------------------------- 00002 * RL-ARM - RTX 00003 *---------------------------------------------------------------------------- 00004 * Name: RTX_Conf_CM.C 00005 * Purpose: Configuration of CMSIS RTX Kernel for Cortex-M 00006 * Rev.: V4.60 00007 *---------------------------------------------------------------------------- 00008 * 00009 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH 00010 * All rights reserved. 00011 * Redistribution and use in source and binary forms, with or without 00012 * modification, are permitted provided that the following conditions are met: 00013 * - Redistributions of source code must retain the above copyright 00014 * notice, this list of conditions and the following disclaimer. 00015 * - Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in the 00017 * documentation and/or other materials provided with the distribution. 00018 * - Neither the name of ARM nor the names of its contributors may be used 00019 * to endorse or promote products derived from this software without 00020 * specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00023 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00024 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00025 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 00026 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00027 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00028 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00029 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00030 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00031 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00032 * POSSIBILITY OF SUCH DAMAGE. 00033 *---------------------------------------------------------------------------*/ 00034 00035 #include "cmsis_os.h" 00036 00037 00038 /*---------------------------------------------------------------------------- 00039 * RTX User configuration part BEGIN 00040 *---------------------------------------------------------------------------*/ 00041 00042 //-------- <<< Use Configuration Wizard in Context Menu >>> ----------------- 00043 // 00044 // <h>Thread Configuration 00045 // ======================= 00046 // 00047 // <o>Number of concurrent running threads <0-250> 00048 // <i> Defines max. number of threads that will run at the same time. 00049 // counting "main", but not counting "osTimerThread" 00050 // <i> Default: 6 00051 #ifndef OS_TASKCNT 00052 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) || defined(TARGET_LPC1347) || defined(TARGET_K64F) || defined(TARGET_STM32F401RE)\ 00053 || defined(TARGET_KL46Z) || defined(TARGET_STM32F407) || defined(TARGET_F407VG) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_LPC11U68) || defined(TARGET_NRF51822) || defined(TARGET_STM32F411RE) 00054 # define OS_TASKCNT 14 00055 # elif defined(TARGET_LPC11U24) || defined(TARGET_LPC11U35_401) || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) \ 00056 || defined(TARGET_LPC812) || defined(TARGET_KL25Z) || defined(TARGET_KL05Z) || defined(TARGET_STM32F100RB) || defined(TARGET_STM32F051R8) 00057 # define OS_TASKCNT 6 00058 # else 00059 # error "no target defined" 00060 # endif 00061 #endif 00062 00063 // <o>Scheduler (+ interrupts) stack size [bytes] <64-4096:8><#/4> 00064 #ifndef OS_SCHEDULERSTKSIZE 00065 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) || defined(TARGET_LPC1347) || defined(TARGET_K64F) || defined(TARGET_STM32F401RE)\ 00066 || defined(TARGET_KL46Z) || defined(TARGET_STM32F407) || defined(TARGET_F407VG) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) || defined(TARGET_LPC11U68) || defined(TARGET_NRF51822) || defined(TARGET_STM32F411RE) 00067 # define OS_SCHEDULERSTKSIZE 256 00068 # elif defined(TARGET_LPC11U24) || defined(TARGET_LPC11U35_401) || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) \ 00069 || defined(TARGET_LPC812) || defined(TARGET_KL25Z) || defined(TARGET_KL05Z) || defined(TARGET_STM32F100RB) || defined(TARGET_STM32F051R8) 00070 # define OS_SCHEDULERSTKSIZE 128 00071 # else 00072 # error "no target defined" 00073 # endif 00074 #endif 00075 00076 // <o>Idle stack size [bytes] <64-4096:8><#/4> 00077 // <i> Defines default stack size for the Idle thread. 00078 #ifndef OS_IDLESTKSIZE 00079 #define OS_IDLESTKSIZE 128 00080 #endif 00081 00082 // <o>Timer Thread stack size [bytes] <64-4096:8><#/4> 00083 // <i> Defines stack size for Timer thread. 00084 // <i> Default: 200 00085 #ifndef OS_TIMERSTKSZ 00086 #define OS_TIMERSTKSZ WORDS_STACK_SIZE 00087 #endif 00088 00089 // <q>Check for stack overflow 00090 // <i> Includes the stack checking code for stack overflow. 00091 // <i> Note that additional code reduces the Kernel performance. 00092 #ifndef OS_STKCHECK 00093 #define OS_STKCHECK 1 00094 #endif 00095 00096 // <o>Processor mode for thread execution 00097 // <0=> Unprivileged mode 00098 // <1=> Privileged mode 00099 // <i> Default: Privileged mode 00100 #ifndef OS_RUNPRIV 00101 #define OS_RUNPRIV 1 00102 #endif 00103 00104 // </h> 00105 // <h>SysTick Timer Configuration 00106 // ============================== 00107 // 00108 // <o>Timer clock value [Hz] <1-1000000000> 00109 // <i> Defines the timer clock value. 00110 // <i> Default: 6000000 (6MHz) 00111 #ifndef OS_CLOCK 00112 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) 00113 # define OS_CLOCK 96000000 00114 00115 # elif defined(TARGET_LPC1347) || defined(TARGET_STM32F303VC) || defined(TARGET_LPC1549) 00116 # define OS_CLOCK 72000000 00117 00118 # elif defined(TARGET_LPC11U24) || defined(TARGET_LPC11U35_401) || defined(TARGET_LPC11U35_501) || defined(TARGET_LPCCAPPUCCINO) || defined(TARGET_LPC1114) || defined(TARGET_KL25Z) || defined(TARGET_KL05Z) || defined(TARGET_KL46Z) || defined(TARGET_STM32F051R8) || defined(TARGET_LPC11U68) 00119 # define OS_CLOCK 48000000 00120 00121 # elif defined(TARGET_LPC812) 00122 # define OS_CLOCK 36000000 00123 00124 # elif defined(TARGET_STM32F100RB) 00125 # define OS_CLOCK 24000000 00126 00127 # elif defined(TARGET_LPC4088) || defined(TARGET_K64F) 00128 # define OS_CLOCK 120000000 00129 00130 # elif defined(TARGET_STM32F407) || defined(TARGET_F407VG) 00131 # define OS_CLOCK 168000000 00132 00133 # elif defined(TARGET_NRF51822) 00134 # define OS_CLOCK 16000000 00135 00136 # elif defined(TARGET_STM32F401RE) 00137 # define OS_CLOCK 84000000 00138 00139 # elif defined(TARGET_STM32F411RE) 00140 # define OS_CLOCK 100000000 00141 00142 # else 00143 # error "no target defined" 00144 # endif 00145 #endif 00146 00147 // <o>Timer tick value [us] <1-1000000> 00148 // <i> Defines the timer tick value. 00149 // <i> Default: 1000 (1ms) 00150 #ifndef OS_TICK 00151 #define OS_TICK 1000 00152 #endif 00153 00154 // </h> 00155 00156 // <h>System Configuration 00157 // ======================= 00158 // 00159 // <e>Round-Robin Thread switching 00160 // =============================== 00161 // 00162 // <i> Enables Round-Robin Thread switching. 00163 #ifndef OS_ROBIN 00164 #define OS_ROBIN 1 00165 #endif 00166 00167 // <o>Round-Robin Timeout [ticks] <1-1000> 00168 // <i> Defines how long a thread will execute before a thread switch. 00169 // <i> Default: 5 00170 #ifndef OS_ROBINTOUT 00171 #define OS_ROBINTOUT 5 00172 #endif 00173 00174 // </e> 00175 00176 // <e>User Timers 00177 // ============== 00178 // <i> Enables user Timers 00179 #ifndef OS_TIMERS 00180 #define OS_TIMERS 1 00181 #endif 00182 00183 // <o>Timer Thread Priority 00184 // <1=> Low 00185 // <2=> Below Normal 00186 // <3=> Normal 00187 // <4=> Above Normal 00188 // <5=> High 00189 // <6=> Realtime (highest) 00190 // <i> Defines priority for Timer Thread 00191 // <i> Default: High 00192 #ifndef OS_TIMERPRIO 00193 #define OS_TIMERPRIO 5 00194 #endif 00195 00196 // <o>Timer Callback Queue size <1-32> 00197 // <i> Number of concurrent active timer callback functions. 00198 // <i> Default: 4 00199 #ifndef OS_TIMERCBQSZ 00200 #define OS_TIMERCBQS 4 00201 #endif 00202 00203 // </e> 00204 00205 // <o>ISR FIFO Queue size<4=> 4 entries <8=> 8 entries 00206 // <12=> 12 entries <16=> 16 entries 00207 // <24=> 24 entries <32=> 32 entries 00208 // <48=> 48 entries <64=> 64 entries 00209 // <96=> 96 entries 00210 // <i> ISR functions store requests to this buffer, 00211 // <i> when they are called from the interrupt handler. 00212 // <i> Default: 16 entries 00213 #ifndef OS_FIFOSZ 00214 #define OS_FIFOSZ 16 00215 #endif 00216 00217 // </h> 00218 00219 //------------- <<< end of configuration section >>> ----------------------- 00220 00221 // Standard library system mutexes 00222 // =============================== 00223 // Define max. number system mutexes that are used to protect 00224 // the arm standard runtime library. For microlib they are not used. 00225 #ifndef OS_MUTEXCNT 00226 #define OS_MUTEXCNT 22//jhc12 00227 #endif 00228 00229 /*---------------------------------------------------------------------------- 00230 * RTX User configuration part END 00231 *---------------------------------------------------------------------------*/ 00232 00233 #define OS_TRV ((uint32_t)(((double)OS_CLOCK*(double)OS_TICK)/1E6)-1) 00234 00235 00236 /*---------------------------------------------------------------------------- 00237 * OS Idle daemon 00238 *---------------------------------------------------------------------------*/ 00239 void os_idle_demon (void) { 00240 /* The idle demon is a system thread, running when no other thread is */ 00241 /* ready to run. */ 00242 00243 /* Sleep: ideally, we should put the chip to sleep. 00244 Unfortunately, this usually requires disconnecting the interface chip (debugger). 00245 This can be done, but it would break the local file system. 00246 */ 00247 for (;;) { 00248 // sleep(); 00249 } 00250 } 00251 00252 /*---------------------------------------------------------------------------- 00253 * RTX Errors 00254 *---------------------------------------------------------------------------*/ 00255 extern void mbed_die(void); 00256 00257 void os_error (uint32_t err_code) { 00258 /* This function is called when a runtime error is detected. Parameter */ 00259 /* 'err_code' holds the runtime error code (defined in RTX_Conf.h). */ 00260 mbed_die(); 00261 } 00262 00263 void sysThreadError(osStatus status) { 00264 if (status != osOK) { 00265 mbed_die(); 00266 } 00267 } 00268 00269 /*---------------------------------------------------------------------------- 00270 * RTX Configuration Functions 00271 *---------------------------------------------------------------------------*/ 00272 00273 #include "RTX_CM_lib.h" 00274 00275 /*---------------------------------------------------------------------------- 00276 * end of file 00277 *---------------------------------------------------------------------------*/ 00278
Generated on Wed Jul 13 2022 13:19:19 by
1.7.2
