254 lines
7.5 KiB
Plaintext
254 lines
7.5 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.
|
|
#
|
|
|
|
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 platform'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 n if (SYS_CLOCK_TICKS_PER_SEC = 0)
|
|
default y
|
|
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 platforms
|
|
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 EVENT_LOGGER
|
|
bool
|
|
prompt "Enable event logger"
|
|
default n
|
|
select RING_BUFFER
|
|
help
|
|
Enable event logging feature. Allow the usage of a ring buffer to
|
|
transmit event messages with a single interface to collect them.
|
|
|
|
config KERNEL_EVENT_LOGGER
|
|
bool
|
|
prompt "Enable kernel event logger features"
|
|
default n
|
|
select EVENT_LOGGER
|
|
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_INIT_PRIORITY_DEFAULT
|
|
int
|
|
prompt "Default init priority"
|
|
help
|
|
Defaut minimal init priority for each init level.
|
|
|
|
config KERNEL_INIT_PRIORITY_DEVICE
|
|
int
|
|
prompt "Default init priority for device drivers"
|
|
help
|
|
Device driver, that depends on common components, such as
|
|
interrupt controller, but does not depend on other devices,
|
|
uses this init priority.
|
|
|
|
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 && ADVANCED_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
|
|
source "kernel/nanokernel/Kconfig"
|
|
|
|
config ADVANCED_POWER_MANAGEMENT
|
|
bool
|
|
prompt "Advanced power management"
|
|
default n
|
|
help
|
|
This option enables the platform to implement extra power management
|
|
policies whenever the kernel becomes idle. The kernel invokes
|
|
_sys_power_save_idle() to inform the power management subsystem of the
|
|
number of ticks until the next kernel timer is due to expire.
|
|
|
|
menu "Advanced Power Management Features"
|
|
depends on ADVANCED_POWER_MANAGEMENT
|
|
|
|
config ADVANCED_IDLE
|
|
bool
|
|
prompt "Advanced idle state"
|
|
default n
|
|
depends on MICROKERNEL && ADVANCED_POWER_MANAGEMENT && ADVANCED_IDLE_SUPPORTED
|
|
help
|
|
This option enables the kernel to interface to a custom advanced idle
|
|
power saving manager. This permits the system to enter a custom
|
|
power saving state when the kernel becomes idle for extended periods,
|
|
and then to restore the system to its previous state (rather than
|
|
booting up from scratch) when the kernel is re-activated.
|
|
|
|
config ADV_IDLE_STACK_SIZE
|
|
int
|
|
prompt "Advanced idle state stack size"
|
|
default 16
|
|
depends on ADVANCED_IDLE
|
|
help
|
|
This option defines the size of the separate stack used during the
|
|
system state check while the booting up. A separate stack is used
|
|
to avoid memory corruption on the system re-activation from power
|
|
down mode. The stack size must be large enough to hold the return
|
|
address (4 bytes) and the _AdvIdleCheckSleep() stack frame.
|
|
|
|
config TICKLESS_IDLE
|
|
bool
|
|
prompt "Tickless idle"
|
|
default y
|
|
depends on MICROKERNEL || 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
|
|
|
|
if MICROKERNEL
|
|
source "kernel/microkernel/Kconfig"
|
|
endif
|