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) 00053 # define OS_TASKCNT 14 00054 # elif defined(TARGET_LPC11U24) || defined(TARGET_KL25Z) 00055 # define OS_TASKCNT 6 00056 # endif 00057 #endif 00058 00059 // <o>Scheduler (+ interrupts) stack size [bytes] <64-4096:8><#/4> 00060 #ifndef OS_SCHEDULERSTKSIZE 00061 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088) 00062 # define OS_SCHEDULERSTKSIZE 256 00063 # elif defined(TARGET_LPC11U24) || defined(TARGET_KL25Z) 00064 # define OS_SCHEDULERSTKSIZE 128 00065 # endif 00066 #endif 00067 00068 // <o>Idle stack size [bytes] <64-4096:8><#/4> 00069 // <i> Defines default stack size for the Idle thread. 00070 #ifndef OS_IDLESTKSIZE 00071 #define OS_IDLESTKSIZE 128 00072 #endif 00073 00074 // <o>Timer Thread stack size [bytes] <64-4096:8><#/4> 00075 // <i> Defines stack size for Timer thread. 00076 // <i> Default: 200 00077 #ifndef OS_TIMERSTKSZ 00078 #define OS_TIMERSTKSZ WORDS_STACK_SIZE 00079 #endif 00080 00081 // <q>Check for stack overflow 00082 // <i> Includes the stack checking code for stack overflow. 00083 // <i> Note that additional code reduces the Kernel performance. 00084 #ifndef OS_STKCHECK 00085 #define OS_STKCHECK 1 00086 #endif 00087 00088 // <o>Processor mode for thread execution 00089 // <0=> Unprivileged mode 00090 // <1=> Privileged mode 00091 // <i> Default: Privileged mode 00092 #ifndef OS_RUNPRIV 00093 #define OS_RUNPRIV 1 00094 #endif 00095 00096 // </h> 00097 // <h>SysTick Timer Configuration 00098 // ============================== 00099 // 00100 // <o>Timer clock value [Hz] <1-1000000000> 00101 // <i> Defines the timer clock value. 00102 // <i> Default: 6000000 (6MHz) 00103 #ifndef OS_CLOCK 00104 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) 00105 # define OS_CLOCK 96000000 00106 00107 # elif defined(TARGET_LPC11U24) || defined(TARGET_KL25Z) 00108 # define OS_CLOCK 48000000 00109 # 00110 # elif defined(TARGET_LPC4088) 00111 # define OS_CLOCK 120000000 00112 # endif 00113 #endif 00114 00115 // <o>Timer tick value [us] <1-1000000> 00116 // <i> Defines the timer tick value. 00117 // <i> Default: 1000 (1ms) 00118 #ifndef OS_TICK 00119 #define OS_TICK 1000 00120 #endif 00121 00122 // </h> 00123 00124 // <h>System Configuration 00125 // ======================= 00126 // 00127 // <e>Round-Robin Thread switching 00128 // =============================== 00129 // 00130 // <i> Enables Round-Robin Thread switching. 00131 #ifndef OS_ROBIN 00132 #define OS_ROBIN 1 00133 #endif 00134 00135 // <o>Round-Robin Timeout [ticks] <1-1000> 00136 // <i> Defines how long a thread will execute before a thread switch. 00137 // <i> Default: 5 00138 #ifndef OS_ROBINTOUT 00139 #define OS_ROBINTOUT 5 00140 #endif 00141 00142 // </e> 00143 00144 // <e>User Timers 00145 // ============== 00146 // <i> Enables user Timers 00147 #ifndef OS_TIMERS 00148 #define OS_TIMERS 1 00149 #endif 00150 00151 // <o>Timer Thread Priority 00152 // <1=> Low 00153 // <2=> Below Normal 00154 // <3=> Normal 00155 // <4=> Above Normal 00156 // <5=> High 00157 // <6=> Realtime (highest) 00158 // <i> Defines priority for Timer Thread 00159 // <i> Default: High 00160 #ifndef OS_TIMERPRIO 00161 #define OS_TIMERPRIO 5 00162 #endif 00163 00164 // <o>Timer Callback Queue size <1-32> 00165 // <i> Number of concurrent active timer callback functions. 00166 // <i> Default: 4 00167 #ifndef OS_TIMERCBQSZ 00168 #define OS_TIMERCBQS 4 00169 #endif 00170 00171 // </e> 00172 00173 // <o>ISR FIFO Queue size<4=> 4 entries <8=> 8 entries 00174 // <12=> 12 entries <16=> 16 entries 00175 // <24=> 24 entries <32=> 32 entries 00176 // <48=> 48 entries <64=> 64 entries 00177 // <96=> 96 entries 00178 // <i> ISR functions store requests to this buffer, 00179 // <i> when they are called from the interrupt handler. 00180 // <i> Default: 16 entries 00181 #ifndef OS_FIFOSZ 00182 #define OS_FIFOSZ 16 00183 #endif 00184 00185 // </h> 00186 00187 //------------- <<< end of configuration section >>> ----------------------- 00188 00189 // Standard library system mutexes 00190 // =============================== 00191 // Define max. number system mutexes that are used to protect 00192 // the arm standard runtime library. For microlib they are not used. 00193 #ifndef OS_MUTEXCNT 00194 #define OS_MUTEXCNT 12 00195 #endif 00196 00197 /*---------------------------------------------------------------------------- 00198 * RTX User configuration part END 00199 *---------------------------------------------------------------------------*/ 00200 00201 #define OS_TRV ((uint32_t)(((double)OS_CLOCK*(double)OS_TICK)/1E6)-1) 00202 00203 00204 /*---------------------------------------------------------------------------- 00205 * OS Idle daemon 00206 *---------------------------------------------------------------------------*/ 00207 void os_idle_demon (void) { 00208 /* The idle demon is a system thread, running when no other thread is */ 00209 /* ready to run. */ 00210 00211 /* Sleep: ideally, we should put the chip to sleep. 00212 Unfortunately, this usually requires disconnecting the interface chip (debugger). 00213 This can be done, but it would break the local file system. 00214 */ 00215 for (;;) { 00216 // sleep(); 00217 } 00218 } 00219 00220 /*---------------------------------------------------------------------------- 00221 * RTX Errors 00222 *---------------------------------------------------------------------------*/ 00223 extern void mbed_die(void); 00224 00225 void os_error (uint32_t err_code) { 00226 /* This function is called when a runtime error is detected. Parameter */ 00227 /* 'err_code' holds the runtime error code (defined in RTX_Conf.h). */ 00228 mbed_die(); 00229 } 00230 00231 void sysThreadError(osStatus status) { 00232 if (status != osOK) { 00233 mbed_die(); 00234 } 00235 } 00236 00237 /*---------------------------------------------------------------------------- 00238 * RTX Configuration Functions 00239 *---------------------------------------------------------------------------*/ 00240 00241 #include "RTX_CM_lib.h" 00242 00243 /*---------------------------------------------------------------------------- 00244 * end of file 00245 *---------------------------------------------------------------------------*/
Generated on Fri Jul 15 2022 21:33:15 by
1.7.2
