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.
#
# SPDX-License-Identifier: Apache-2.0
#

menu "Compile and Link Features"

menu "Linker Options"
config HAS_FLASH_LOAD_OFFSET
	bool
	help
	This option is selected by targets having a FLASH_LOAD_OFFSET
	and FLASH_LOAD_SIZE.

if !HAS_DTS
config FLASH_LOAD_OFFSET
	hex "Kernel load offset"
	default 0
	depends on HAS_FLASH_LOAD_OFFSET
	help
	This option specifies the byte offset from the beginning of flash that
	the kernel should be loaded into. Changing this value from zero will
	affect the Zephyr image's link, and will decrease the total amount of
	flash available for use by application code.

	If unsure, leave at the default value 0.

config FLASH_LOAD_SIZE
	hex "Kernel load size"
	default 0
	depends on HAS_FLASH_LOAD_OFFSET
	help
	If non-zero, this option specifies the size, in bytes, of the flash
	area that the Zephyr image will be allowed to occupy.  If zero, the
	image will be able to occupy from the FLASH_LOAD_OFFSET to the end of
	the device.

	If unsure, leave at the default value 0.
endif

config TEXT_SECTION_OFFSET
	hex "TEXT section offset"
	default 0
	help
	This sets and offset before the text section and allows booting images
	with custom headers that are inserted at the beginning of the image.

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
	board.

	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 CUSTOM_RODATA_LD
	bool "Include custom-rodata.ld"
	default n
	help
	Include a customized linker script fragment for inserting additional
	data and linker directives into the rodata section.

config CUSTOM_RWDATA_LD
	bool "Include custom-rwdata.ld"
	default n
	help
	Include a customized linker script fragment for inserting additional
	data and linker directives into the data section.

config CUSTOM_SECTIONS_LD
	bool "Include custom-sections.ld"
	default n
	help
	Include a customized linker script fragment for inserting additional
	arbitrary sections.

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.

endmenu

menu "Compiler Options"
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 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
	predefined 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.

endmenu

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 KERNEL_BIN_NAME
	string "The kernel binary name"
	default "zephyr"
	help
	This option sets the name of the generated kernel binary.

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_time_stamp records the time kernel begins
	executing, while __main_time_stamp records when main() begins executing,
	and __idle_time_stamp 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 board may have to do extra work to ensure a proper startup.

config BOOTLOADER_CONTEXT_RESTORE
	bool
	prompt "Boot loader has context restore support"
	default y
	depends on SYS_POWER_DEEP_SLEEP && BOOTLOADER_CONTEXT_RESTORE_SUPPORTED
	help
	This option signifies that the target has a bootloader
	that restores CPU context upon resuming from deep sleep
	power state.

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