Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

# Kconfig - miscellany 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.
#


menu "Cryptography"
source "lib/crypto/tinycrypt/Kconfig"
endmenu

menu "Compile and Link Features"

config  KERNEL_BIN_NAME
	string "The kernel binary name"
	default "zephyr"
	help
	This option sets the name of the generated kernel binary.

config  HAVE_CUSTOM_LINKER_SCRIPT
	prompt "Custom linker scripts provided"
	def_bool n
	help
	Set this option if you have a custom linker script which needed to
	be define in CUSTOM_LINKER_SCRIPT.

config  CUSTOM_LINKER_SCRIPT
	string "Path to custom linker script"
	default ""
	depends on HAVE_CUSTOM_LINKER_SCRIPT
	help
	Path to the linker script to be used instead of the one define by the
	platform.

	The linker script must be based on a version provided by Zephyr since
	the kernel can expect a certain layout/certain regions.

	This is useful when an application needs to add sections into the
	linker script and avoid having to change the script provided by
	Zephyr.

config CROSS_COMPILE
	string "Cross-compiler tool prefix"
	help
	Same as running 'make CROSS_COMPILE=prefix-' but stored for
	default make runs in this kernel build directory.  You don't
	need to set this unless you want the configured kernel build
	directory to select the cross-compiler automatically.

config  GDB_INFO
        bool
        prompt "Task-aware debugging with GDB"
        default n
        help
          This option enables the kernel to collect additional information
          during interrupts, exceptions, and context switches. This information
          is required for task-aware debugging with GDB.

config LINK_WHOLE_ARCHIVE
	bool "Allow linking with --whole-archive"
	default n
	help
	This options allows linking external libraries with the
	--whole-archive option to keep all symbols.

config  COMPILER_OPT
	string
	prompt "Custom compiler options"
	default ""
	help
	This option is a free-form string that is passed to the compiler
	when building all parts of a project (i.e. kernel).
	The compiler options specified by this string supplement the
	pre-defined set of compiler supplied by the build system,
	and can be used to change compiler optimization, warning and error
	messages, and so on.

config TOOLCHAIN_VARIANT
	string "Cross-compiler variant name"
	help
	For optimized compilers with reduced features, specify the name
	of the variant.

config CPLUSPLUS
	bool "Enable C++ support for the application"
	default n
	help
	This option enables the use of applications built with C++.

choice
prompt "C Library"
default MINIMAL_LIBC

config MINIMAL_LIBC
	bool
	prompt "Build minimal c library"
	help
	Build integrated minimal c library. This integrated library is available
	to support kernel functionality and test cases. It is not designed to be
	used with applications. For applications, please use an external C
	library such as newlib.

config NEWLIB_LIBC
	bool
	prompt "Build with newlib c library"
	help
	Build with newlib library. The newlib library is expected to be
	part of the SDK in this case.

endchoice


config MINIMAL_LIBC_EXTENDED
	bool "Build additional libc functions [EXPERIMENTAL]"
	default n
	depends on MINIMAL_LIBC
	help
	This option enables building some optional libc functions that
        are not used directly by the kernel but can be used in applications.
        The option adds the following functions: strtoul, strtol, atoi,
        strncasecmp.
	Warning: Use the above functions only for testing, if you need to
        use any of the functions in an application you probably should be
        linking against a full lib c implementation instead.


endmenu

menu "Debugging Options"

config  DEBUG
	bool "Build kernel with debugging enabled"
	default n
	help
	Build a kernel suitable for debugging.  Right now, this option
	only disables optimization, more debugging variants can be selected
	from here to allow more debugging.

config  TASK_DEBUG
	bool
	prompt "Task debugging [EXPERIMENTAL]"
	default n
	help
	This option allows execution of all tasks (with the exception of
	essential system tasks) to be suspended so that debugging operations
	can be performed.

config STACK_USAGE
	bool "Generate stack usage information"
	default n
	help
	Generate  an extra file that specifies the maximum amount of stack used,
	on a per-function basis.

config PRINTK
	bool
	prompt "Send printk() to console"
	depends on CONSOLE_HAS_DRIVER
	default y
	help
	This option directs printk() debugging output to the supported
	console device, rather than suppressing the generation
	of printk() output entirely. Output is sent immediately, without
	any mutual exclusion or buffering.

config STDOUT_CONSOLE
	bool
	prompt "Send stdout to console"
	depends on CONSOLE_HAS_DRIVER
	default n
	help
	This option directs standard output (e.g. printf) to the console
	device, rather than suppressing it entirely.

config EARLY_CONSOLE
	bool
	prompt "Send stdout at the earliest stage possible"
	default n
	help
	This option will enable stdout as early as possible, for debugging
	purpose. For instance, in case of STDOUT_CONSOLE being set it will
	initialize its driver earlier than normal, in order to get the stdout
	sent through the console at the earliest stage possible.

config ASSERT
	bool
	prompt "Enable __ASSERT() macro"
	default n
	help
	This enables the __ASSERT() macro in the kernel code. If an assertion
	fails, the calling thread is put on an infinite tight loop. Since
	enabling this adds a significant footprint, it should only be enabled
	in a non-production system.

config ASSERT_LEVEL
	int
	prompt "__ASSERT() level"
	default 1
	depends on ASSERT
	help
	This option specifies the assertion level used by the __ASSERT()
	macro. It can be set to one of three possible values:

	Level 0: off
	Level 1: on + warning in every file that includes __assert.h
	Level 2: on + no warning

config DEBUG_TRACING_KERNEL_OBJECTS
	bool
	prompt "Debug tracing object"
	default n
	help
	This option enable the feature for tracing kernel objects. This option
	is for debug purposes and increase the memory footprint of the kernel.

source "misc/debug/Kconfig"

endmenu

menu "Logging Options"

config SYS_LOG
	bool
	prompt "Enable Logging"
	depends on PRINTK || STDOUT_CONSOLE
	default n
	help
	  Global switch for logging, when turned off log calls will not be
	  executed.

config SYS_LOG_SHOW_TAGS
	bool
	prompt "Prepend level tags to logs"
	depends on SYS_LOG
	default y
	help
	  Prefixes all log lines with an identifier to the log level submitted in
	  the C code.

config SYS_LOG_SHOW_COLOR
	bool
	prompt "Use colored logs"
	depends on SYS_LOG
	default n
	help
	  Use color in the logs. This requires an ANSI capable terminal.

config SYS_LOG_DEFAULT_LEVEL
	int
	prompt "Default log level"
	depends on SYS_LOG
	default 0
	range 0 4
	help
	  Sets log level for modules which don't specify it explicitly. When
	  set to 0 it means log wont be activated for those modules.
	  Levels are:
	  0 OFF, do not write by default
	  1 ERROR, default to only write SYS_LOG_ERR
	  2 WARNING, default to write SYS_LOG_WRN in adition to previous level
	  3 INFO, default to write SYS_LOG_INF in adition to previous levels
	  4 DEBUG, default to write SYS_LOG_DBG in adition to previous levels

config SYS_LOG_OVERRIDE_LEVEL
	int
	prompt "Override lowest log level"
	depends on SYS_LOG
	default 0
	range 0 4
	help
	  Forces a minimum log level for all modules. Modules use their
	  specified level if it is greater than this option, otherwise they use
	  the level specified by this option instead of their default or
	  whatever was manually set.
	  Levels are:
	  0 OFF, do not override
	  1 ERROR, override to write SYS_LOG_ERR
	  2 WARNING, override to write SYS_LOG_WRN in adition to previous level
	  3 INFO, override to write SYS_LOG_INF in adition to previous levels
	  4 DEBUG, override to write SYS_LOG_DBG in adition to previous levels

endmenu

menu "System Monitoring Options"

config  PERFORMANCE_METRICS
	bool
	prompt "Enable performance metrics [EXPERIMENTAL]"
	default n
	help
	Enable Performance Metrics.

config  BOOT_TIME_MEASUREMENT
	bool
	prompt "Boot time measurements [EXPERIMENTAL]"
	default n
	depends on PERFORMANCE_METRICS
	help
	This option enables the recording of timestamps during system start
	up. The global variable __start_tsc records the time kernel begins
	executing, while __main_tsc records when main() begins executing,
	and __idle_tsc records when the CPU becomes idle. All values are
	recorded in terms of CPU clock cycles since system reset.

config  CPU_CLOCK_FREQ_MHZ
	int
	prompt "CPU CLock Frequency in MHz"
	default 20
	depends on BOOT_TIME_MEASUREMENT
	help
	This option specifies the CPU Clock Frequency in MHz in order to
	convert Intel RDTSC timestamp to microseconds.

endmenu

menu "Boot Options"

config IS_BOOTLOADER
        bool "Act as a bootloader"
        default n
        depends on XIP
	depends on ARM
        help
        This option indicates that Zephyr will act as a bootloader to execute
        a separate Zephyr image payload.

config BOOTLOADER_SRAM_SIZE
        int "SRAM reserved for when Zephyr acts as a bootloader"
        default 16
        depends on !XIP || IS_BOOTLOADER
	depends on ARM
        help
        This option specifies the amount of SRAM (measure in kB) reserved for
        when Zephyr is to act as a bootloader.

config BOOTLOADER_KEXEC
	bool
	prompt "Boot using Linux kexec() system call"
	depends on X86
	default n
	help
	This option signifies that Linux boots the kernel using kexec system call
	and utility. This method is used to boot the kernel over the network.

config BOOTLOADER_UNKNOWN
	bool
	prompt "Generic boot loader support"
	default n
	depends on X86
	help
	This option signifies that the target has a generic bootloader
	or that it supports multiple ways of booting and it isn't clear
	at build time which method is to be used. When this option is enabled
	the platform may have to do extra work to ensure a proper startup.

config REBOOT
	bool "Reboot functionality"
	default n
	select SYSTEM_CLOCK_DISABLE
	help
	Enable the sys_reboot() API. Enabling this can drag in other subsystems
	needed to perform a "safe" reboot (e.g. SYSTEM_CLOCK_DISABLE, to stop the
	system clock before issuing a reset).
endmenu