578 lines
16 KiB
C
578 lines
16 KiB
C
/*
|
|
* Copyright (c) 2013-2019 Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
|
* not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* -----------------------------------------------------------------------------
|
|
*
|
|
* $Revision: V5.5.0
|
|
*
|
|
* Project: CMSIS-RTOS RTX
|
|
* Title: RTX Configuration definitions
|
|
*
|
|
* -----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef RTX_CONFIG_H_
|
|
#define RTX_CONFIG_H_
|
|
|
|
#ifdef _RTE_
|
|
#include "RTE_Components.h"
|
|
#ifdef RTE_RTX_CONFIG_H
|
|
#include RTE_RTX_CONFIG_H
|
|
#endif
|
|
#endif
|
|
|
|
//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
|
|
|
|
// <h>System Configuration
|
|
// =======================
|
|
|
|
// <o>Global Dynamic Memory size [bytes] <0-1073741824:8>
|
|
// <i> Defines the combined global dynamic memory size.
|
|
// <i> Default: 4096
|
|
#ifndef OS_DYNAMIC_MEM_SIZE
|
|
#define OS_DYNAMIC_MEM_SIZE 0x3000
|
|
#endif
|
|
|
|
// <o>Kernel Tick Frequency [Hz] <1-1000000>
|
|
// <i> Defines base time unit for delays and timeouts.
|
|
// <i> Default: 1000 (1ms tick)
|
|
#ifndef OS_TICK_FREQ
|
|
#define OS_TICK_FREQ 1000
|
|
#endif
|
|
|
|
// <e>Round-Robin Thread switching
|
|
// <i> Enables Round-Robin Thread switching.
|
|
#ifndef OS_ROBIN_ENABLE
|
|
#define OS_ROBIN_ENABLE 1
|
|
#endif
|
|
|
|
// <o>Round-Robin Timeout <1-1000>
|
|
// <i> Defines how many ticks a thread will execute before a thread switch.
|
|
// <i> Default: 5
|
|
#ifndef OS_ROBIN_TIMEOUT
|
|
#define OS_ROBIN_TIMEOUT 5
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// <o>ISR FIFO Queue
|
|
// <4=> 4 entries <8=> 8 entries <12=> 12 entries <16=> 16 entries
|
|
// <24=> 24 entries <32=> 32 entries <48=> 48 entries <64=> 64 entries
|
|
// <96=> 96 entries <128=> 128 entries <196=> 196 entries <256=> 256 entries
|
|
// <i> RTOS Functions called from ISR store requests to this buffer.
|
|
// <i> Default: 16 entries
|
|
#ifndef OS_ISR_FIFO_QUEUE
|
|
#define OS_ISR_FIFO_QUEUE 16
|
|
#endif
|
|
|
|
// <q>Object Memory usage counters
|
|
// <i> Enables object memory usage counters (requires RTX source variant).
|
|
#ifndef OS_OBJ_MEM_USAGE
|
|
#define OS_OBJ_MEM_USAGE 0
|
|
#endif
|
|
|
|
// </h>
|
|
|
|
// <h>Thread Configuration
|
|
// =======================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_THREAD_OBJ_MEM
|
|
#define OS_THREAD_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of user Threads <1-1000>
|
|
// <i> Defines maximum number of user threads that can be active at the same time.
|
|
// <i> Applies to user threads with system provided memory for control blocks.
|
|
#ifndef OS_THREAD_NUM
|
|
#define OS_THREAD_NUM 1
|
|
#endif
|
|
|
|
// <o>Number of user Threads with default Stack size <0-1000>
|
|
// <i> Defines maximum number of user threads with default stack size.
|
|
// <i> Applies to user threads with zero stack size specified.
|
|
#ifndef OS_THREAD_DEF_STACK_NUM
|
|
#define OS_THREAD_DEF_STACK_NUM 0
|
|
#endif
|
|
|
|
// <o>Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8>
|
|
// <i> Defines the combined stack size for user threads with user-provided stack size.
|
|
// <i> Applies to user threads with user-provided stack size and system provided memory for stack.
|
|
// <i> Default: 0
|
|
#ifndef OS_THREAD_USER_STACK_SIZE
|
|
#define OS_THREAD_USER_STACK_SIZE 0
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// <o>Default Thread Stack size [bytes] <96-1073741824:8>
|
|
// <i> Defines stack size for threads with zero stack size specified.
|
|
// <i> Default: 256
|
|
#ifndef OS_STACK_SIZE
|
|
#define OS_STACK_SIZE 0x1000
|
|
#endif
|
|
|
|
// <o>Idle Thread Stack size [bytes] <72-1073741824:8>
|
|
// <i> Defines stack size for Idle thread.
|
|
// <i> Default: 256
|
|
#ifndef OS_IDLE_THREAD_STACK_SIZE
|
|
#define OS_IDLE_THREAD_STACK_SIZE 256
|
|
#endif
|
|
|
|
// <o>Idle Thread TrustZone Module Identifier
|
|
// <i> Defines TrustZone Thread Context Management Identifier.
|
|
// <i> Applies only to cores with TrustZone technology.
|
|
// <i> Default: 0 (not used)
|
|
#ifndef OS_IDLE_THREAD_TZ_MOD_ID
|
|
#define OS_IDLE_THREAD_TZ_MOD_ID 0
|
|
#endif
|
|
|
|
// <q>Stack overrun checking
|
|
// <i> Enables stack overrun check at thread switch.
|
|
// <i> Enabling this option increases slightly the execution time of a thread switch.
|
|
#ifndef OS_STACK_CHECK
|
|
#define OS_STACK_CHECK 1
|
|
#endif
|
|
|
|
// <q>Stack usage watermark
|
|
// <i> Initializes thread stack with watermark pattern for analyzing stack usage.
|
|
// <i> Enabling this option increases significantly the execution time of thread creation.
|
|
#ifndef OS_STACK_WATERMARK
|
|
#define OS_STACK_WATERMARK 0
|
|
#endif
|
|
|
|
// <o>Processor mode for Thread execution
|
|
// <0=> Unprivileged mode
|
|
// <1=> Privileged mode
|
|
// <i> Default: Privileged mode
|
|
#ifndef OS_PRIVILEGE_MODE
|
|
#define OS_PRIVILEGE_MODE 1
|
|
#endif
|
|
|
|
// </h>
|
|
|
|
// <h>Timer Configuration
|
|
// ======================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_TIMER_OBJ_MEM
|
|
#define OS_TIMER_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of Timer objects <1-1000>
|
|
// <i> Defines maximum number of objects that can be active at the same time.
|
|
// <i> Applies to objects with system provided memory for control blocks.
|
|
#ifndef OS_TIMER_NUM
|
|
#define OS_TIMER_NUM 6
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// <o>Timer Thread Priority
|
|
// <8=> Low
|
|
// <16=> Below Normal <24=> Normal <32=> Above Normal
|
|
// <40=> High
|
|
// <48=> Realtime
|
|
// <i> Defines priority for timer thread
|
|
// <i> Default: High
|
|
#ifndef OS_TIMER_THREAD_PRIO
|
|
#define OS_TIMER_THREAD_PRIO 40
|
|
#endif
|
|
|
|
// <o>Timer Thread Stack size [bytes] <0-1073741824:8>
|
|
// <i> Defines stack size for Timer thread.
|
|
// <i> May be set to 0 when timers are not used.
|
|
// <i> Default: 256
|
|
#ifndef OS_TIMER_THREAD_STACK_SIZE
|
|
#define OS_TIMER_THREAD_STACK_SIZE 0x1000
|
|
#endif
|
|
|
|
// <o>Timer Thread TrustZone Module Identifier
|
|
// <i> Defines TrustZone Thread Context Management Identifier.
|
|
// <i> Applies only to cores with TrustZone technology.
|
|
// <i> Default: 0 (not used)
|
|
#ifndef OS_TIMER_THREAD_TZ_MOD_ID
|
|
#define OS_TIMER_THREAD_TZ_MOD_ID 0
|
|
#endif
|
|
|
|
// <o>Timer Callback Queue entries <0-256>
|
|
// <i> Number of concurrent active timer callback functions.
|
|
// <i> May be set to 0 when timers are not used.
|
|
// <i> Default: 4
|
|
#ifndef OS_TIMER_CB_QUEUE
|
|
#define OS_TIMER_CB_QUEUE 16
|
|
#endif
|
|
|
|
// </h>
|
|
|
|
// <h>Event Flags Configuration
|
|
// ============================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_EVFLAGS_OBJ_MEM
|
|
#define OS_EVFLAGS_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of Event Flags objects <1-1000>
|
|
// <i> Defines maximum number of objects that can be active at the same time.
|
|
// <i> Applies to objects with system provided memory for control blocks.
|
|
#ifndef OS_EVFLAGS_NUM
|
|
#define OS_EVFLAGS_NUM 1
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// </h>
|
|
|
|
// <h>Mutex Configuration
|
|
// ======================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_MUTEX_OBJ_MEM
|
|
#define OS_MUTEX_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of Mutex objects <1-1000>
|
|
// <i> Defines maximum number of objects that can be active at the same time.
|
|
// <i> Applies to objects with system provided memory for control blocks.
|
|
#ifndef OS_MUTEX_NUM
|
|
#define OS_MUTEX_NUM 1
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// </h>
|
|
|
|
// <h>Semaphore Configuration
|
|
// ==========================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_SEMAPHORE_OBJ_MEM
|
|
#define OS_SEMAPHORE_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of Semaphore objects <1-1000>
|
|
// <i> Defines maximum number of objects that can be active at the same time.
|
|
// <i> Applies to objects with system provided memory for control blocks.
|
|
#ifndef OS_SEMAPHORE_NUM
|
|
#define OS_SEMAPHORE_NUM 1
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// </h>
|
|
|
|
// <h>Memory Pool Configuration
|
|
// ============================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_MEMPOOL_OBJ_MEM
|
|
#define OS_MEMPOOL_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of Memory Pool objects <1-1000>
|
|
// <i> Defines maximum number of objects that can be active at the same time.
|
|
// <i> Applies to objects with system provided memory for control blocks.
|
|
#ifndef OS_MEMPOOL_NUM
|
|
#define OS_MEMPOOL_NUM 1
|
|
#endif
|
|
|
|
// <o>Data Storage Memory size [bytes] <0-1073741824:8>
|
|
// <i> Defines the combined data storage memory size.
|
|
// <i> Applies to objects with system provided memory for data storage.
|
|
// <i> Default: 0
|
|
#ifndef OS_MEMPOOL_DATA_SIZE
|
|
#define OS_MEMPOOL_DATA_SIZE 0
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// </h>
|
|
|
|
// <h>Message Queue Configuration
|
|
// ==============================
|
|
|
|
// <e>Object specific Memory allocation
|
|
// <i> Enables object specific memory allocation.
|
|
#ifndef OS_MSGQUEUE_OBJ_MEM
|
|
#define OS_MSGQUEUE_OBJ_MEM 0
|
|
#endif
|
|
|
|
// <o>Number of Message Queue objects <1-1000>
|
|
// <i> Defines maximum number of objects that can be active at the same time.
|
|
// <i> Applies to objects with system provided memory for control blocks.
|
|
#ifndef OS_MSGQUEUE_NUM
|
|
#define OS_MSGQUEUE_NUM 1
|
|
#endif
|
|
|
|
// <o>Data Storage Memory size [bytes] <0-1073741824:8>
|
|
// <i> Defines the combined data storage memory size.
|
|
// <i> Applies to objects with system provided memory for data storage.
|
|
// <i> Default: 0
|
|
#ifndef OS_MSGQUEUE_DATA_SIZE
|
|
#define OS_MSGQUEUE_DATA_SIZE 0
|
|
#endif
|
|
|
|
// </e>
|
|
|
|
// </h>
|
|
|
|
// <h>Event Recorder Configuration
|
|
// ===============================
|
|
|
|
// <e>Global Initialization
|
|
// <i> Initialize Event Recorder during 'osKernelInitialize'.
|
|
#ifndef OS_EVR_INIT
|
|
#define OS_EVR_INIT 0
|
|
#endif
|
|
|
|
// <q>Start recording
|
|
// <i> Start event recording after initialization.
|
|
#ifndef OS_EVR_START
|
|
#define OS_EVR_START 1
|
|
#endif
|
|
|
|
// <h>Global Event Filter Setup
|
|
// <i> Initial recording level applied to all components.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_LEVEL
|
|
#define OS_EVR_LEVEL 0x00U
|
|
#endif
|
|
|
|
// <h>RTOS Event Filter Setup
|
|
// <i> Recording levels for RTX components.
|
|
// <i> Only applicable if events for the respective component are generated.
|
|
|
|
// <h>Memory Management
|
|
// <i> Recording level for Memory Management events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_MEMORY_LEVEL
|
|
#define OS_EVR_MEMORY_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Kernel
|
|
// <i> Recording level for Kernel events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_KERNEL_LEVEL
|
|
#define OS_EVR_KERNEL_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Thread
|
|
// <i> Recording level for Thread events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_THREAD_LEVEL
|
|
#define OS_EVR_THREAD_LEVEL 0x05U
|
|
#endif
|
|
|
|
// <h>Generic Wait
|
|
// <i> Recording level for Generic Wait events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_WAIT_LEVEL
|
|
#define OS_EVR_WAIT_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Thread Flags
|
|
// <i> Recording level for Thread Flags events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_THFLAGS_LEVEL
|
|
#define OS_EVR_THFLAGS_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Event Flags
|
|
// <i> Recording level for Event Flags events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_EVFLAGS_LEVEL
|
|
#define OS_EVR_EVFLAGS_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Timer
|
|
// <i> Recording level for Timer events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_TIMER_LEVEL
|
|
#define OS_EVR_TIMER_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Mutex
|
|
// <i> Recording level for Mutex events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_MUTEX_LEVEL
|
|
#define OS_EVR_MUTEX_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Semaphore
|
|
// <i> Recording level for Semaphore events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_SEMAPHORE_LEVEL
|
|
#define OS_EVR_SEMAPHORE_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Memory Pool
|
|
// <i> Recording level for Memory Pool events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_MEMPOOL_LEVEL
|
|
#define OS_EVR_MEMPOOL_LEVEL 0x01U
|
|
#endif
|
|
|
|
// <h>Message Queue
|
|
// <i> Recording level for Message Queue events.
|
|
// <o.0>Error events
|
|
// <o.1>API function call events
|
|
// <o.2>Operation events
|
|
// <o.3>Detailed operation events
|
|
// </h>
|
|
#ifndef OS_EVR_MSGQUEUE_LEVEL
|
|
#define OS_EVR_MSGQUEUE_LEVEL 0x01U
|
|
#endif
|
|
|
|
// </h>
|
|
|
|
// </e>
|
|
|
|
// <h>RTOS Event Generation
|
|
// <i> Enables event generation for RTX components (requires RTX source variant).
|
|
|
|
// <q>Memory Management
|
|
// <i> Enables Memory Management event generation.
|
|
#ifndef OS_EVR_MEMORY
|
|
#define OS_EVR_MEMORY 1
|
|
#endif
|
|
|
|
// <q>Kernel
|
|
// <i> Enables Kernel event generation.
|
|
#ifndef OS_EVR_KERNEL
|
|
#define OS_EVR_KERNEL 1
|
|
#endif
|
|
|
|
// <q>Thread
|
|
// <i> Enables Thread event generation.
|
|
#ifndef OS_EVR_THREAD
|
|
#define OS_EVR_THREAD 1
|
|
#endif
|
|
|
|
// <q>Generic Wait
|
|
// <i> Enables Generic Wait event generation.
|
|
#ifndef OS_EVR_WAIT
|
|
#define OS_EVR_WAIT 1
|
|
#endif
|
|
|
|
// <q>Thread Flags
|
|
// <i> Enables Thread Flags event generation.
|
|
#ifndef OS_EVR_THFLAGS
|
|
#define OS_EVR_THFLAGS 1
|
|
#endif
|
|
|
|
// <q>Event Flags
|
|
// <i> Enables Event Flags event generation.
|
|
#ifndef OS_EVR_EVFLAGS
|
|
#define OS_EVR_EVFLAGS 1
|
|
#endif
|
|
|
|
// <q>Timer
|
|
// <i> Enables Timer event generation.
|
|
#ifndef OS_EVR_TIMER
|
|
#define OS_EVR_TIMER 1
|
|
#endif
|
|
|
|
// <q>Mutex
|
|
// <i> Enables Mutex event generation.
|
|
#ifndef OS_EVR_MUTEX
|
|
#define OS_EVR_MUTEX 1
|
|
#endif
|
|
|
|
// <q>Semaphore
|
|
// <i> Enables Semaphore event generation.
|
|
#ifndef OS_EVR_SEMAPHORE
|
|
#define OS_EVR_SEMAPHORE 1
|
|
#endif
|
|
|
|
// <q>Memory Pool
|
|
// <i> Enables Memory Pool event generation.
|
|
#ifndef OS_EVR_MEMPOOL
|
|
#define OS_EVR_MEMPOOL 1
|
|
#endif
|
|
|
|
// <q>Message Queue
|
|
// <i> Enables Message Queue event generation.
|
|
#ifndef OS_EVR_MSGQUEUE
|
|
#define OS_EVR_MSGQUEUE 1
|
|
#endif
|
|
|
|
// </h>
|
|
|
|
// </h>
|
|
|
|
// Number of Threads which use standard C/C++ library libspace
|
|
// (when thread specific memory allocation is not used).
|
|
#if (OS_THREAD_OBJ_MEM == 0)
|
|
#define OS_THREAD_LIBSPACE_NUM 4
|
|
#else
|
|
#define OS_THREAD_LIBSPACE_NUM OS_THREAD_NUM
|
|
#endif
|
|
|
|
//------------- <<< end of configuration section >>> ---------------------------
|
|
|
|
#endif // RTX_CONFIG_H_
|