340 lines
10 KiB
Plaintext
340 lines
10 KiB
Plaintext
# Kconfig - kernel configuration options
|
|
|
|
#
|
|
# Copyright (c) 2014-2015 Wind River Systems, Inc.
|
|
#
|
|
# 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
|
|
#
|
|
# http://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.
|
|
#
|
|
|
|
config KERNEL_V2
|
|
bool
|
|
prompt "Unified Kernel"
|
|
default n
|
|
|
|
choice
|
|
prompt "Kernel Type"
|
|
default MICROKERNEL
|
|
|
|
config NANOKERNEL
|
|
bool "Nano Kernel"
|
|
|
|
config MICROKERNEL
|
|
bool "Micro Kernel"
|
|
|
|
endchoice
|
|
|
|
menu "General Kernel Options"
|
|
|
|
config SYS_CLOCK_TICKS_PER_SEC
|
|
int
|
|
prompt "System tick frequency (in ticks/second)"
|
|
default 100
|
|
help
|
|
This option specifies the frequency of the system clock in Hz.
|
|
|
|
config SYS_CLOCK_HW_CYCLES_PER_SEC
|
|
int "System clock's h/w timer frequency"
|
|
help
|
|
This option specifies the frequency of the hardware timer used for the
|
|
system clock (in Hz). This option is set by the board's Kconfig file
|
|
and the user should generally avoid modifying it via the menu configuration.
|
|
|
|
config SYS_CLOCK_EXISTS
|
|
bool
|
|
# omit prompt to signify a "hidden" option
|
|
default y
|
|
default n if (SYS_CLOCK_TICKS_PER_SEC = 0)
|
|
help
|
|
This option specifies that the kernel lacks timer support.
|
|
|
|
config INIT_STACKS
|
|
bool
|
|
prompt "Initialize stack areas"
|
|
default n
|
|
help
|
|
This option instructs the kernel to initialize stack areas with a
|
|
known value (0xaa) before they are first used, so that the high
|
|
water mark can be easily determined. This applies to the stack areas
|
|
for both tasks and fibers, as well as for the microkernel server's command
|
|
stack.
|
|
|
|
config XIP
|
|
bool
|
|
prompt "Execute in place"
|
|
help
|
|
This option allows the kernel to operate with its text and read-only
|
|
sections residing in ROM (or similar read-only memory). Not all boards
|
|
support this option so it must be used with care; you must also
|
|
supply a linker command file when building your image. Enabling this
|
|
option increases both the code and data footprint of the image.
|
|
|
|
|
|
config RING_BUFFER
|
|
bool
|
|
prompt "Enable ring buffers"
|
|
default n
|
|
help
|
|
Enable usage of ring buffers. Similar to nanokernel FIFOs but manage
|
|
their own buffer memory and can store arbitrary data. For optimal
|
|
performance, use buffer sizes that are a power of 2.
|
|
|
|
config KERNEL_EVENT_LOGGER
|
|
bool
|
|
prompt "Enable kernel event logger features"
|
|
default n
|
|
select RING_BUFFER
|
|
help
|
|
This feature enables the usage of the profiling logger. Provides the
|
|
logging of sleep events (either entering or leaving low power conditions),
|
|
context switch events, interrupt events, boot events and a method to
|
|
collect these event messages.
|
|
|
|
config KERNEL_EVENT_LOGGER_BUFFER_SIZE
|
|
int
|
|
prompt "Kernel event logger buffer size"
|
|
default 128
|
|
depends on KERNEL_EVENT_LOGGER
|
|
help
|
|
Buffer size in 32-bit words.
|
|
|
|
config KERNEL_EVENT_LOGGER_DYNAMIC
|
|
bool
|
|
prompt "Kernel event logger dynamic enabling"
|
|
default n
|
|
depends on KERNEL_EVENT_LOGGER
|
|
help
|
|
If enabled, kernel event logger is not logging any data to the ring buffer
|
|
It is up to the application to set the appropriate flags to enable/disable the
|
|
logging of each event type.
|
|
|
|
config KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP
|
|
bool
|
|
prompt "Kernel event logger custom timestamp"
|
|
default n
|
|
depends on KERNEL_EVENT_LOGGER
|
|
help
|
|
This flag enables the possibility to set the timer function to be used to
|
|
populate kernel event logger timestamp. This has to be done at runtime by
|
|
calling sys_k_event_logger_set_timer and providing the function callback.
|
|
|
|
config THREAD_MONITOR
|
|
bool
|
|
prompt "Task and fiber monitoring [EXPERIMENTAL]"
|
|
default n
|
|
help
|
|
This option instructs the kernel to maintain a list of all tasks
|
|
and fibers (excluding those that have not yet started or have
|
|
already terminated).
|
|
|
|
config KERNEL_INIT_PRIORITY_OBJECTS
|
|
int
|
|
prompt "Kernel objects initialization priority"
|
|
default 30
|
|
help
|
|
Kernel objects use this priority for initialization. This
|
|
priority needs to be higher than minimal default initialization
|
|
priority.
|
|
|
|
config KERNEL_INIT_PRIORITY_DEFAULT
|
|
int
|
|
prompt "Default init priority"
|
|
default 40
|
|
help
|
|
Defaut minimal init priority for each init level.
|
|
|
|
config KERNEL_INIT_PRIORITY_DEVICE
|
|
int
|
|
prompt "Default init priority for device drivers"
|
|
default 50
|
|
help
|
|
Device driver, that depends on common components, such as
|
|
interrupt controller, but does not depend on other devices,
|
|
uses this init priority.
|
|
|
|
config APPLICATION_INIT_PRIORITY
|
|
int
|
|
prompt "Default init priority for application level drivers"
|
|
default 90
|
|
help
|
|
This priority level is for end-user drivers such as sensors and display
|
|
which have no inward dependencies.
|
|
|
|
menu "Kernel event logging points"
|
|
depends on KERNEL_EVENT_LOGGER
|
|
|
|
config KERNEL_EVENT_LOGGER_CONTEXT_SWITCH
|
|
bool
|
|
prompt "Context switch event logging point"
|
|
default n
|
|
depends on KERNEL_EVENT_LOGGER
|
|
help
|
|
Enable the context switch event messages.
|
|
|
|
config KERNEL_EVENT_LOGGER_INTERRUPT
|
|
bool
|
|
prompt "Interrupt event logging point"
|
|
default n
|
|
depends on KERNEL_EVENT_LOGGER
|
|
help
|
|
Enable interrupt event messages. These messages provide the following
|
|
information: The time when interrupts occur.
|
|
|
|
config KERNEL_EVENT_LOGGER_SLEEP
|
|
bool
|
|
prompt "Sleep event logging point"
|
|
default n
|
|
depends on KERNEL_EVENT_LOGGER && ((MICROKERNEL && SYS_POWER_MANAGEMENT) || NANOKERNEL)
|
|
help
|
|
Enable low power condition event messages. These messages provide the
|
|
following information:
|
|
|
|
- When the CPU went to sleep mode.
|
|
- When the CPU woke up.
|
|
- The ID of the interrupt that woke the CPU up.
|
|
endmenu
|
|
|
|
menu "Security Options"
|
|
|
|
config STACK_CANARIES
|
|
bool
|
|
prompt "Compiler stack canaries"
|
|
default n
|
|
help
|
|
This option enables compiler stack canaries support kernel functions.
|
|
|
|
If stack canaries are supported by the compiler, it will emit
|
|
extra code that inserts a canary value into the stack frame when
|
|
a function is entered and validates this value upon exit.
|
|
Stack corruption (such as that caused by buffer overflow) results
|
|
in a fatal error condition for the running entity.
|
|
Enabling this option can result in a significant increase
|
|
in footprint and an associated decrease in performance.
|
|
|
|
If stack canaries are not supported by the compiler, enabling this
|
|
option has no effect.
|
|
endmenu
|
|
|
|
endmenu
|
|
|
|
if !KERNEL_V2
|
|
source "kernel/nanokernel/Kconfig"
|
|
endif
|
|
|
|
if KERNEL_V2
|
|
source "kernel/unified/Kconfig"
|
|
endif
|
|
|
|
if MICROKERNEL && !KERNEL_V2
|
|
source "kernel/microkernel/Kconfig"
|
|
endif
|
|
|
|
menu "Power Management"
|
|
config SYS_POWER_MANAGEMENT
|
|
bool
|
|
prompt "Power management"
|
|
default n
|
|
help
|
|
This option enables the board to implement extra power management
|
|
policies whenever the kernel becomes idle. The kernel informs the
|
|
power management subsystem of the number of ticks until the next kernel
|
|
timer is due to expire.
|
|
|
|
menu "Power Management Features"
|
|
depends on SYS_POWER_MANAGEMENT
|
|
|
|
config SYS_POWER_LOW_POWER_STATE
|
|
bool
|
|
prompt "Low power state"
|
|
default n
|
|
depends on MICROKERNEL && SYS_POWER_MANAGEMENT && SYS_POWER_LOW_POWER_STATE_SUPPORTED
|
|
help
|
|
This option enables the kernel to interface with a power manager
|
|
application. This permits the system to enter a custom CPU low power
|
|
state when the kernel becomes idle. The low power state could be any of
|
|
the CPU low power states supported by the processor. Generally the one
|
|
saving most power.
|
|
|
|
config SYS_POWER_DEEP_SLEEP
|
|
bool
|
|
prompt "Deep sleep state"
|
|
default n
|
|
depends on MICROKERNEL && SYS_POWER_MANAGEMENT && SYS_POWER_DEEP_SLEEP_SUPPORTED
|
|
help
|
|
This option enables the kernel to interface with a power manager
|
|
application. This permits the system to enter a Deep sleep state
|
|
supported by the SOC where the system clock is turned off while RAM is
|
|
retained. This state would be entered when the kernel becomes idle for
|
|
extended periods and would have a high wake latency. Resume would be
|
|
from the reset vector same as cold boot. The interface allows
|
|
restoration of states that were saved at the time of suspend.
|
|
|
|
config DEVICE_POWER_MANAGEMENT
|
|
bool
|
|
prompt "Device power management"
|
|
default n
|
|
depends on MICROKERNEL && SYS_POWER_MANAGEMENT
|
|
help
|
|
This option enables the device power management interface. The
|
|
interface consists of hook functions implemented by device drivers
|
|
that get called by the power manager application when the system
|
|
is going to suspend state or resuming from suspend state. This allows
|
|
device drivers to do any necessary power management operations
|
|
like turning off device clocks and peripherals. The device drivers
|
|
may also save and restore states in these hook functions.
|
|
|
|
config TICKLESS_IDLE
|
|
bool
|
|
prompt "Tickless idle"
|
|
default y
|
|
depends on MICROKERNEL || KERNEL_V2 || \
|
|
NANOKERNEL_TICKLESS_IDLE_SUPPORTED
|
|
help
|
|
This option suppresses periodic system clock interrupts whenever the
|
|
kernel becomes idle. This permits the system to remain in a power
|
|
saving state for extended periods without having to wake up to
|
|
service each tick as it occurs.
|
|
|
|
As a policy, an architecture should always provide support for tickless in
|
|
the microkernel. If an architecture also provides support for nanokernel
|
|
systems, it must select the NANOKERNEL_TICKLESS_IDLE_SUPPORTED kconfig
|
|
option.
|
|
|
|
config TICKLESS_IDLE_THRESH
|
|
int
|
|
prompt "Tickless idle threshold"
|
|
default 3
|
|
depends on TICKLESS_IDLE
|
|
help
|
|
This option enables clock interrupt suppression when the kernel idles
|
|
for only a short period of time. It specifies the minimum number of
|
|
ticks that must occur before the next kernel timer expires in order
|
|
for suppression to happen.
|
|
|
|
endmenu
|
|
|
|
config MDEF
|
|
bool
|
|
prompt "Use MDEF files for statically configured kernel objects"
|
|
depends on KERNEL_V2 || MICROKERNEL
|
|
default y
|
|
help
|
|
Using an MDEF file can help the startup time of the application since
|
|
the objects it lists are statically allocated and initialized, and may
|
|
also reduce code size if no subsystem uses the initialization routines.
|
|
|
|
Disabling this option can reduce the compilation time slightly.
|
|
|
|
In doubt, select 'y'.
|
|
|
|
endmenu
|