Mistake on this page?
Report an issue in GitHub or email us
RTX_Config.h
1 /*
2  * Copyright (c) 2013-2019 Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Licensed under the Apache License, Version 2.0 (the License); you may
7  * not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * -----------------------------------------------------------------------------
19  *
20  * $Revision: V5.5.0
21  *
22  * Project: CMSIS-RTOS RTX
23  * Title: RTX Configuration definitions
24  *
25  * -----------------------------------------------------------------------------
26  */
27 
28 #ifndef RTX_CONFIG_H_
29 #define RTX_CONFIG_H_
30 
31 #ifdef _RTE_
32 #include "RTE_Components.h"
33 #ifdef RTE_RTX_CONFIG_H
34 #include RTE_RTX_CONFIG_H
35 #endif
36 #endif
37 
38 //-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
39 
40 // <h>System Configuration
41 // =======================
42 
43 // <o>Global Dynamic Memory size [bytes] <0-1073741824:8>
44 // <i> Defines the combined global dynamic memory size.
45 // <i> Default: 4096
46 #ifndef OS_DYNAMIC_MEM_SIZE
47 #define OS_DYNAMIC_MEM_SIZE 4096
48 #endif
49 
50 // <o>Kernel Tick Frequency [Hz] <1-1000000>
51 // <i> Defines base time unit for delays and timeouts.
52 // <i> Default: 1000 (1ms tick)
53 #ifndef OS_TICK_FREQ
54 #define OS_TICK_FREQ 1000
55 #endif
56 
57 // <e>Round-Robin Thread switching
58 // <i> Enables Round-Robin Thread switching.
59 #ifndef OS_ROBIN_ENABLE
60 #define OS_ROBIN_ENABLE 1
61 #endif
62 
63 // <o>Round-Robin Timeout <1-1000>
64 // <i> Defines how many ticks a thread will execute before a thread switch.
65 // <i> Default: 5
66 #ifndef OS_ROBIN_TIMEOUT
67 #define OS_ROBIN_TIMEOUT 5
68 #endif
69 
70 // </e>
71 
72 // <o>ISR FIFO Queue
73 // <4=> 4 entries <8=> 8 entries <12=> 12 entries <16=> 16 entries
74 // <24=> 24 entries <32=> 32 entries <48=> 48 entries <64=> 64 entries
75 // <96=> 96 entries <128=> 128 entries <196=> 196 entries <256=> 256 entries
76 // <i> RTOS Functions called from ISR store requests to this buffer.
77 // <i> Default: 16 entries
78 #ifndef OS_ISR_FIFO_QUEUE
79 #define OS_ISR_FIFO_QUEUE 16
80 #endif
81 
82 // <q>Object Memory usage counters
83 // <i> Enables object memory usage counters (requires RTX source variant).
84 #ifndef OS_OBJ_MEM_USAGE
85 #define OS_OBJ_MEM_USAGE 0
86 #endif
87 
88 // </h>
89 
90 // <h>Thread Configuration
91 // =======================
92 
93 // <e>Object specific Memory allocation
94 // <i> Enables object specific memory allocation.
95 #ifndef OS_THREAD_OBJ_MEM
96 #define OS_THREAD_OBJ_MEM 0
97 #endif
98 
99 // <o>Number of user Threads <1-1000>
100 // <i> Defines maximum number of user threads that can be active at the same time.
101 // <i> Applies to user threads with system provided memory for control blocks.
102 #ifndef OS_THREAD_NUM
103 #define OS_THREAD_NUM 1
104 #endif
105 
106 // <o>Number of user Threads with default Stack size <0-1000>
107 // <i> Defines maximum number of user threads with default stack size.
108 // <i> Applies to user threads with zero stack size specified.
109 #ifndef OS_THREAD_DEF_STACK_NUM
110 #define OS_THREAD_DEF_STACK_NUM 0
111 #endif
112 
113 // <o>Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8>
114 // <i> Defines the combined stack size for user threads with user-provided stack size.
115 // <i> Applies to user threads with user-provided stack size and system provided memory for stack.
116 // <i> Default: 0
117 #ifndef OS_THREAD_USER_STACK_SIZE
118 #define OS_THREAD_USER_STACK_SIZE 0
119 #endif
120 
121 // </e>
122 
123 // <o>Default Thread Stack size [bytes] <96-1073741824:8>
124 // <i> Defines stack size for threads with zero stack size specified.
125 // <i> Default: 256
126 #ifndef OS_STACK_SIZE
127 #define OS_STACK_SIZE 256
128 #endif
129 
130 // <o>Idle Thread Stack size [bytes] <72-1073741824:8>
131 // <i> Defines stack size for Idle thread.
132 // <i> Default: 256
133 #ifndef OS_IDLE_THREAD_STACK_SIZE
134 #define OS_IDLE_THREAD_STACK_SIZE 256
135 #endif
136 
137 // <o>Idle Thread TrustZone Module Identifier
138 // <i> Defines TrustZone Thread Context Management Identifier.
139 // <i> Applies only to cores with TrustZone technology.
140 // <i> Default: 0 (not used)
141 #ifndef OS_IDLE_THREAD_TZ_MOD_ID
142 #define OS_IDLE_THREAD_TZ_MOD_ID 0
143 #endif
144 
145 // <q>Stack overrun checking
146 // <i> Enables stack overrun check at thread switch.
147 // <i> Enabling this option increases slightly the execution time of a thread switch.
148 #ifndef OS_STACK_CHECK
149 #define OS_STACK_CHECK 1
150 #endif
151 
152 // <q>Stack usage watermark
153 // <i> Initializes thread stack with watermark pattern for analyzing stack usage.
154 // <i> Enabling this option increases significantly the execution time of thread creation.
155 #ifndef OS_STACK_WATERMARK
156 #define OS_STACK_WATERMARK 0
157 #endif
158 
159 // <o>Processor mode for Thread execution
160 // <0=> Unprivileged mode
161 // <1=> Privileged mode
162 // <i> Default: Privileged mode
163 #ifndef OS_PRIVILEGE_MODE
164 #define OS_PRIVILEGE_MODE 1
165 #endif
166 
167 // </h>
168 
169 // <h>Timer Configuration
170 // ======================
171 
172 // <e>Object specific Memory allocation
173 // <i> Enables object specific memory allocation.
174 #ifndef OS_TIMER_OBJ_MEM
175 #define OS_TIMER_OBJ_MEM 0
176 #endif
177 
178 // <o>Number of Timer objects <1-1000>
179 // <i> Defines maximum number of objects that can be active at the same time.
180 // <i> Applies to objects with system provided memory for control blocks.
181 #ifndef OS_TIMER_NUM
182 #define OS_TIMER_NUM 1
183 #endif
184 
185 // </e>
186 
187 // <o>Timer Thread Priority
188 // <8=> Low
189 // <16=> Below Normal <24=> Normal <32=> Above Normal
190 // <40=> High
191 // <48=> Realtime
192 // <i> Defines priority for timer thread
193 // <i> Default: High
194 #ifndef OS_TIMER_THREAD_PRIO
195 #define OS_TIMER_THREAD_PRIO 40
196 #endif
197 
198 // <o>Timer Thread Stack size [bytes] <0-1073741824:8>
199 // <i> Defines stack size for Timer thread.
200 // <i> May be set to 0 when timers are not used.
201 // <i> Default: 256
202 #ifndef OS_TIMER_THREAD_STACK_SIZE
203 #define OS_TIMER_THREAD_STACK_SIZE 256
204 #endif
205 
206 // <o>Timer Thread TrustZone Module Identifier
207 // <i> Defines TrustZone Thread Context Management Identifier.
208 // <i> Applies only to cores with TrustZone technology.
209 // <i> Default: 0 (not used)
210 #ifndef OS_TIMER_THREAD_TZ_MOD_ID
211 #define OS_TIMER_THREAD_TZ_MOD_ID 0
212 #endif
213 
214 // <o>Timer Callback Queue entries <0-256>
215 // <i> Number of concurrent active timer callback functions.
216 // <i> May be set to 0 when timers are not used.
217 // <i> Default: 4
218 #ifndef OS_TIMER_CB_QUEUE
219 #define OS_TIMER_CB_QUEUE 4
220 #endif
221 
222 // </h>
223 
224 // <h>Event Flags Configuration
225 // ============================
226 
227 // <e>Object specific Memory allocation
228 // <i> Enables object specific memory allocation.
229 #ifndef OS_EVFLAGS_OBJ_MEM
230 #define OS_EVFLAGS_OBJ_MEM 0
231 #endif
232 
233 // <o>Number of Event Flags objects <1-1000>
234 // <i> Defines maximum number of objects that can be active at the same time.
235 // <i> Applies to objects with system provided memory for control blocks.
236 #ifndef OS_EVFLAGS_NUM
237 #define OS_EVFLAGS_NUM 1
238 #endif
239 
240 // </e>
241 
242 // </h>
243 
244 // <h>Mutex Configuration
245 // ======================
246 
247 // <e>Object specific Memory allocation
248 // <i> Enables object specific memory allocation.
249 #ifndef OS_MUTEX_OBJ_MEM
250 #define OS_MUTEX_OBJ_MEM 0
251 #endif
252 
253 // <o>Number of Mutex objects <1-1000>
254 // <i> Defines maximum number of objects that can be active at the same time.
255 // <i> Applies to objects with system provided memory for control blocks.
256 #ifndef OS_MUTEX_NUM
257 #define OS_MUTEX_NUM 1
258 #endif
259 
260 // </e>
261 
262 // </h>
263 
264 // <h>Semaphore Configuration
265 // ==========================
266 
267 // <e>Object specific Memory allocation
268 // <i> Enables object specific memory allocation.
269 #ifndef OS_SEMAPHORE_OBJ_MEM
270 #define OS_SEMAPHORE_OBJ_MEM 0
271 #endif
272 
273 // <o>Number of Semaphore objects <1-1000>
274 // <i> Defines maximum number of objects that can be active at the same time.
275 // <i> Applies to objects with system provided memory for control blocks.
276 #ifndef OS_SEMAPHORE_NUM
277 #define OS_SEMAPHORE_NUM 1
278 #endif
279 
280 // </e>
281 
282 // </h>
283 
284 // <h>Memory Pool Configuration
285 // ============================
286 
287 // <e>Object specific Memory allocation
288 // <i> Enables object specific memory allocation.
289 #ifndef OS_MEMPOOL_OBJ_MEM
290 #define OS_MEMPOOL_OBJ_MEM 0
291 #endif
292 
293 // <o>Number of Memory Pool objects <1-1000>
294 // <i> Defines maximum number of objects that can be active at the same time.
295 // <i> Applies to objects with system provided memory for control blocks.
296 #ifndef OS_MEMPOOL_NUM
297 #define OS_MEMPOOL_NUM 1
298 #endif
299 
300 // <o>Data Storage Memory size [bytes] <0-1073741824:8>
301 // <i> Defines the combined data storage memory size.
302 // <i> Applies to objects with system provided memory for data storage.
303 // <i> Default: 0
304 #ifndef OS_MEMPOOL_DATA_SIZE
305 #define OS_MEMPOOL_DATA_SIZE 0
306 #endif
307 
308 // </e>
309 
310 // </h>
311 
312 // <h>Message Queue Configuration
313 // ==============================
314 
315 // <e>Object specific Memory allocation
316 // <i> Enables object specific memory allocation.
317 #ifndef OS_MSGQUEUE_OBJ_MEM
318 #define OS_MSGQUEUE_OBJ_MEM 0
319 #endif
320 
321 // <o>Number of Message Queue objects <1-1000>
322 // <i> Defines maximum number of objects that can be active at the same time.
323 // <i> Applies to objects with system provided memory for control blocks.
324 #ifndef OS_MSGQUEUE_NUM
325 #define OS_MSGQUEUE_NUM 1
326 #endif
327 
328 // <o>Data Storage Memory size [bytes] <0-1073741824:8>
329 // <i> Defines the combined data storage memory size.
330 // <i> Applies to objects with system provided memory for data storage.
331 // <i> Default: 0
332 #ifndef OS_MSGQUEUE_DATA_SIZE
333 #define OS_MSGQUEUE_DATA_SIZE 0
334 #endif
335 
336 // </e>
337 
338 // </h>
339 
340 // <h>Event Recorder Configuration
341 // ===============================
342 
343 // <e>Global Initialization
344 // <i> Initialize Event Recorder during 'osKernelInitialize'.
345 #ifndef OS_EVR_INIT
346 #define OS_EVR_INIT 0
347 #endif
348 
349 // <q>Start recording
350 // <i> Start event recording after initialization.
351 #ifndef OS_EVR_START
352 #define OS_EVR_START 1
353 #endif
354 
355 // <h>Global Event Filter Setup
356 // <i> Initial recording level applied to all components.
357 // <o.0>Error events
358 // <o.1>API function call events
359 // <o.2>Operation events
360 // <o.3>Detailed operation events
361 // </h>
362 #ifndef OS_EVR_LEVEL
363 #define OS_EVR_LEVEL 0x00U
364 #endif
365 
366 // <h>RTOS Event Filter Setup
367 // <i> Recording levels for RTX components.
368 // <i> Only applicable if events for the respective component are generated.
369 
370 // <h>Memory Management
371 // <i> Recording level for Memory Management events.
372 // <o.0>Error events
373 // <o.1>API function call events
374 // <o.2>Operation events
375 // <o.3>Detailed operation events
376 // </h>
377 #ifndef OS_EVR_MEMORY_LEVEL
378 #define OS_EVR_MEMORY_LEVEL 0x01U
379 #endif
380 
381 // <h>Kernel
382 // <i> Recording level for Kernel events.
383 // <o.0>Error events
384 // <o.1>API function call events
385 // <o.2>Operation events
386 // <o.3>Detailed operation events
387 // </h>
388 #ifndef OS_EVR_KERNEL_LEVEL
389 #define OS_EVR_KERNEL_LEVEL 0x01U
390 #endif
391 
392 // <h>Thread
393 // <i> Recording level for Thread events.
394 // <o.0>Error events
395 // <o.1>API function call events
396 // <o.2>Operation events
397 // <o.3>Detailed operation events
398 // </h>
399 #ifndef OS_EVR_THREAD_LEVEL
400 #define OS_EVR_THREAD_LEVEL 0x05U
401 #endif
402 
403 // <h>Generic Wait
404 // <i> Recording level for Generic Wait events.
405 // <o.0>Error events
406 // <o.1>API function call events
407 // <o.2>Operation events
408 // <o.3>Detailed operation events
409 // </h>
410 #ifndef OS_EVR_WAIT_LEVEL
411 #define OS_EVR_WAIT_LEVEL 0x01U
412 #endif
413 
414 // <h>Thread Flags
415 // <i> Recording level for Thread Flags events.
416 // <o.0>Error events
417 // <o.1>API function call events
418 // <o.2>Operation events
419 // <o.3>Detailed operation events
420 // </h>
421 #ifndef OS_EVR_THFLAGS_LEVEL
422 #define OS_EVR_THFLAGS_LEVEL 0x01U
423 #endif
424 
425 // <h>Event Flags
426 // <i> Recording level for Event Flags events.
427 // <o.0>Error events
428 // <o.1>API function call events
429 // <o.2>Operation events
430 // <o.3>Detailed operation events
431 // </h>
432 #ifndef OS_EVR_EVFLAGS_LEVEL
433 #define OS_EVR_EVFLAGS_LEVEL 0x01U
434 #endif
435 
436 // <h>Timer
437 // <i> Recording level for Timer events.
438 // <o.0>Error events
439 // <o.1>API function call events
440 // <o.2>Operation events
441 // <o.3>Detailed operation events
442 // </h>
443 #ifndef OS_EVR_TIMER_LEVEL
444 #define OS_EVR_TIMER_LEVEL 0x01U
445 #endif
446 
447 // <h>Mutex
448 // <i> Recording level for Mutex events.
449 // <o.0>Error events
450 // <o.1>API function call events
451 // <o.2>Operation events
452 // <o.3>Detailed operation events
453 // </h>
454 #ifndef OS_EVR_MUTEX_LEVEL
455 #define OS_EVR_MUTEX_LEVEL 0x01U
456 #endif
457 
458 // <h>Semaphore
459 // <i> Recording level for Semaphore events.
460 // <o.0>Error events
461 // <o.1>API function call events
462 // <o.2>Operation events
463 // <o.3>Detailed operation events
464 // </h>
465 #ifndef OS_EVR_SEMAPHORE_LEVEL
466 #define OS_EVR_SEMAPHORE_LEVEL 0x01U
467 #endif
468 
469 // <h>Memory Pool
470 // <i> Recording level for Memory Pool events.
471 // <o.0>Error events
472 // <o.1>API function call events
473 // <o.2>Operation events
474 // <o.3>Detailed operation events
475 // </h>
476 #ifndef OS_EVR_MEMPOOL_LEVEL
477 #define OS_EVR_MEMPOOL_LEVEL 0x01U
478 #endif
479 
480 // <h>Message Queue
481 // <i> Recording level for Message Queue events.
482 // <o.0>Error events
483 // <o.1>API function call events
484 // <o.2>Operation events
485 // <o.3>Detailed operation events
486 // </h>
487 #ifndef OS_EVR_MSGQUEUE_LEVEL
488 #define OS_EVR_MSGQUEUE_LEVEL 0x01U
489 #endif
490 
491 // </h>
492 
493 // </e>
494 
495 // <h>RTOS Event Generation
496 // <i> Enables event generation for RTX components (requires RTX source variant).
497 
498 // <q>Memory Management
499 // <i> Enables Memory Management event generation.
500 #ifndef OS_EVR_MEMORY
501 #define OS_EVR_MEMORY 1
502 #endif
503 
504 // <q>Kernel
505 // <i> Enables Kernel event generation.
506 #ifndef OS_EVR_KERNEL
507 #define OS_EVR_KERNEL 1
508 #endif
509 
510 // <q>Thread
511 // <i> Enables Thread event generation.
512 #ifndef OS_EVR_THREAD
513 #define OS_EVR_THREAD 1
514 #endif
515 
516 // <q>Generic Wait
517 // <i> Enables Generic Wait event generation.
518 #ifndef OS_EVR_WAIT
519 #define OS_EVR_WAIT 1
520 #endif
521 
522 // <q>Thread Flags
523 // <i> Enables Thread Flags event generation.
524 #ifndef OS_EVR_THFLAGS
525 #define OS_EVR_THFLAGS 1
526 #endif
527 
528 // <q>Event Flags
529 // <i> Enables Event Flags event generation.
530 #ifndef OS_EVR_EVFLAGS
531 #define OS_EVR_EVFLAGS 1
532 #endif
533 
534 // <q>Timer
535 // <i> Enables Timer event generation.
536 #ifndef OS_EVR_TIMER
537 #define OS_EVR_TIMER 1
538 #endif
539 
540 // <q>Mutex
541 // <i> Enables Mutex event generation.
542 #ifndef OS_EVR_MUTEX
543 #define OS_EVR_MUTEX 1
544 #endif
545 
546 // <q>Semaphore
547 // <i> Enables Semaphore event generation.
548 #ifndef OS_EVR_SEMAPHORE
549 #define OS_EVR_SEMAPHORE 1
550 #endif
551 
552 // <q>Memory Pool
553 // <i> Enables Memory Pool event generation.
554 #ifndef OS_EVR_MEMPOOL
555 #define OS_EVR_MEMPOOL 1
556 #endif
557 
558 // <q>Message Queue
559 // <i> Enables Message Queue event generation.
560 #ifndef OS_EVR_MSGQUEUE
561 #define OS_EVR_MSGQUEUE 1
562 #endif
563 
564 // </h>
565 
566 // </h>
567 
568 // Number of Threads which use standard C/C++ library libspace
569 // (when thread specific memory allocation is not used).
570 #if (OS_THREAD_OBJ_MEM == 0)
571 #ifndef OS_THREAD_LIBSPACE_NUM
572 #define OS_THREAD_LIBSPACE_NUM 4
573 #endif
574 #else
575 #define OS_THREAD_LIBSPACE_NUM OS_THREAD_NUM
576 #endif
577 
578 //------------- <<< end of configuration section >>> ---------------------------
579 
580 #endif // RTX_CONFIG_H_
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.