This section defines the general system configuration parameters supported by
rtems/confdefs.h
.
CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
should only be defined
if the application is providing their own complete set of configuration
tables.
CONFIGURE_EXECUTIVE_RAM_WORK_AREA
is the base
address of the RTEMS RAM Workspace. By default, this value
is NULL indicating that the BSP is to determine the location
of the RTEMS RAM Workspace.
CONFIGURE_UNIFIED_WORK_AREAS
configures RTEMS to use a
single memory pool for the RTEMS Workspace and C Program Heap. If not
defined, there will be separate memory pools for the RTEMS Workspace and
C Program Heap. Having separate pools does have some advantages in the
event a task blows a stack or writes outside its memory area. However,
in low memory systems the overhead of the two pools plus the potential
for unused memory in either pool is very undesirable.
In high memory environments, this is desirable when you want to use the RTEMS "unlimited" objects option. You will be able to create objects until you run out of all available memory rather then just until you run out of RTEMS Workspace.
CONFIGURE_MICROSECONDS_PER_TICK
is the length
of time between clock ticks. By default, this is set to
10000 microseconds.
CONFIGURE_TICKS_PER_TIMESLICE
is the length
of the timeslice quantum in ticks for each task. By
default, this is 50.
CONFIGURE_MAXIMUM_PRIORITY
is the maximum numeric priority
of any task in the system and one less that the number of priority levels
in the system. The numerically greatest priority is the logically lowest
priority in the system and will thus be used by the IDLE task. Valid values
for this configuration parameter must be one (1) less than than a power
of two (2) between 4 and 256 inclusively. In other words, valid values
are 3, 7, 31, 63, 127, and 255. Reducing the number of priorities in the
system reduces the amount of memory allocated from the RTEMS Workspace.
By default, RTEMS supports 256 priority levels ranging from 0 to 255 so
the default value for this field is 255.
CONFIGURE_MINIMUM_STACK_SIZE
is set to the number of bytes
the application wants the minimum stack size to be for every task or
thread in the system. By default, this is set to the recommended minimum
stack size for this processor.
CONFIGURE_INTERRUPT_STACK_SIZE
is set to the
size of the interrupt stack. The interrupt stack size is
usually set by the BSP but since this memory may be allocated
from the RTEMS Ram Workspace, it must be accounted for. The
default for this field is the configured minimum stack size. [NOTE:
In some BSPs, changing this constant does NOT change the
size of the interrupt stack, only the amount of memory
reserved for it.] If not specified, the interrupt stack
will be of minimum size. The default value is the configured
minimum stack size.
CONFIGURE_TASK_STACK_ALLOCATOR
may point to a user provided routine to allocate task stacks.
The default value for this field is NULL which indicates that
task stacks will be allocated from the RTEMS Workspace.
CONFIGURE_TASK_STACK_DEALLOCATOR
may point to a user provided routine to free task stacks.
The default value for this field is NULL which indicates that
task stacks will be allocated from the RTEMS Workspace.
CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
indicates whether RTEMS should zero the RTEMS Workspace and
C Program Heap as part of its initialization. If set to
TRUE, the Workspace is zeroed. Otherwise, it is not.
Unless overridden by the BSP, the default value for this
field is FALSE.
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE
is a helper macro
which is used to assist in computing the total amount of memory
required for message buffers. Each message queue will have its
own configuration with maximum message size and maximum number of
pending messages. The interface for this macro is as follows:
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(max_messages, size_per)
Where max_messages
is the maximum number of pending messages
and size_per
is the size in bytes of the user message.
CONFIGURE_MESSAGE_BUFFER_MEMORY
is set to the number of
bytes the application requires to be reserved for pending message queue
buffers. This value should include memory for all buffers across
all APIs. The default value is 0.
The following illustrates how the help macro
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE
can be used to assist in
calculating the message buffer memory required. In this example, there
are two message queues used in this application. The first message
queue has maximum of 24 pending messages with the message structure
defined by the type one_message_type
. The other message queue
has maximum of 500 pending messages with the message structure defined
by the type other_message_type
.
#define CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE \ (CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \ 24, sizeof(one_message_type) + \ CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( \ 500, sizeof(other_message_type) \ )
CONFIGURE_MEMORY_OVERHEAD
is set to the number of
kilobytes the application wishes to add to the requirements calculated
by rtems/confdefs.h
. The default value is 0.
CONFIGURE_EXTRA_TASK_STACKS
is set to the number of
bytes the applications wishes to add to the task stack requirements
calculated by rtems/confdefs.h
. This parameter is very important.
If the application creates tasks with stacks larger then the
minimum, then that memory is NOT accounted for by rtems/confdefs.h
.
The default value is 0.
NOTE: The required size of the Executive RAM Work Area is calculated
automatically when using the rtems/confdefs.h
mechanism.
Copyright © 1988-2008 OAR Corporation