mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
ddf56bc7e3
Many System on Chip(SoC) solutions are complex with multiple processors on the same die dedicated to either general purpose of specialized functions. Many examples do exist in today's SoCs from various vendors. Typical examples are micro controllers such as an ARM M3/M0 doing a offload of specific function such as event integration or power management or controlling camera etc. Traditionally, the responsibility of loading up such a processor with a firmware and communication has been with a High Level Operating System(HLOS) such as Linux. However, there exists classes of products where Linux would need to expect services from such a processor or the delay of Linux and operating system being able to load up such a firmware is unacceptable. To address these needs, we need some minimal capability to load such a system and ensure it is started prior to an Operating System(Linux or any other) is started up. NOTE: This is NOT meant to be a solve-all solution, instead, it tries to address certain class of SoCs and products that need such a solution. A very simple model is introduced here as part of the initial support that supports microcontrollers with internal memory (no MMU, no execution from external memory, or specific image format needs). This basic framework can then (hopefully) be extensible to other complex SoC processor support as need be. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Nishanth Menon <nm@ti.com> Acked-by: Simon Glass <sjg@chromium.org>
661 lines
16 KiB
Text
661 lines
16 KiB
Text
menu "Command line interface"
|
|
|
|
config HUSH_PARSER
|
|
bool "Use hush shell"
|
|
select SYS_HUSH_PARSER
|
|
help
|
|
This option enables the "hush" shell (from Busybox) as command line
|
|
interpreter, thus enabling powerful command line syntax like
|
|
if...then...else...fi conditionals or `&&' and '||'
|
|
constructs ("shell scripts").
|
|
|
|
If disabled, you get the old, much simpler behaviour with a somewhat
|
|
smaller memory footprint.
|
|
|
|
config SYS_HUSH_PARSER
|
|
bool
|
|
help
|
|
Backward compatibility.
|
|
|
|
config SYS_PROMPT
|
|
string "Shell prompt"
|
|
default "=> "
|
|
help
|
|
This string is displayed in the command line to the left of the
|
|
cursor.
|
|
|
|
menu "Autoboot options"
|
|
|
|
config AUTOBOOT_KEYED
|
|
bool "Stop autobooting via specific input key / string"
|
|
default n
|
|
help
|
|
This option enables stopping (aborting) of the automatic
|
|
boot feature only by issuing a specific input key or
|
|
string. If not enabled, any input key will abort the
|
|
U-Boot automatic booting process and bring the device
|
|
to the U-Boot prompt for user input.
|
|
|
|
config AUTOBOOT_PROMPT
|
|
string "Autoboot stop prompt"
|
|
depends on AUTOBOOT_KEYED
|
|
default "Autoboot in %d seconds\\n"
|
|
help
|
|
This string is displayed before the boot delay selected by
|
|
CONFIG_BOOTDELAY starts. If it is not defined there is no
|
|
output indicating that autoboot is in progress.
|
|
|
|
Note that this define is used as the (only) argument to a
|
|
printf() call, so it may contain '%' format specifications,
|
|
provided that it also includes, sepearated by commas exactly
|
|
like in a printf statement, the required arguments. It is
|
|
the responsibility of the user to select only such arguments
|
|
that are valid in the given context.
|
|
|
|
config AUTOBOOT_ENCRYPTION
|
|
bool "Enable encryption in autoboot stopping"
|
|
depends on AUTOBOOT_KEYED
|
|
default n
|
|
|
|
config AUTOBOOT_DELAY_STR
|
|
string "Delay autobooting via specific input key / string"
|
|
depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
|
|
help
|
|
This option delays the automatic boot feature by issuing
|
|
a specific input key or string. If CONFIG_AUTOBOOT_DELAY_STR
|
|
or the environment variable "bootdelaykey" is specified
|
|
and this string is received from console input before
|
|
autoboot starts booting, U-Boot gives a command prompt. The
|
|
U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
|
|
used, otherwise it never times out.
|
|
|
|
config AUTOBOOT_STOP_STR
|
|
string "Stop autobooting via specific input key / string"
|
|
depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
|
|
help
|
|
This option enables stopping (aborting) of the automatic
|
|
boot feature only by issuing a specific input key or
|
|
string. If CONFIG_AUTOBOOT_STOP_STR or the environment
|
|
variable "bootstopkey" is specified and this string is
|
|
received from console input before autoboot starts booting,
|
|
U-Boot gives a command prompt. The U-Boot prompt never
|
|
times out, even if CONFIG_BOOT_RETRY_TIME is used.
|
|
|
|
config AUTOBOOT_KEYED_CTRLC
|
|
bool "Enable Ctrl-C autoboot interruption"
|
|
depends on AUTOBOOT_KEYED && !AUTOBOOT_ENCRYPTION
|
|
default n
|
|
help
|
|
This option allows for the boot sequence to be interrupted
|
|
by ctrl-c, in addition to the "bootdelaykey" and "bootstopkey".
|
|
Setting this variable provides an escape sequence from the
|
|
limited "password" strings.
|
|
|
|
config AUTOBOOT_STOP_STR_SHA256
|
|
string "Stop autobooting via SHA256 encrypted password"
|
|
depends on AUTOBOOT_KEYED && AUTOBOOT_ENCRYPTION
|
|
help
|
|
This option adds the feature to only stop the autobooting,
|
|
and therefore boot into the U-Boot prompt, when the input
|
|
string / password matches a values that is encypted via
|
|
a SHA256 hash and saved in the environment.
|
|
|
|
endmenu
|
|
|
|
comment "Commands"
|
|
|
|
menu "Info commands"
|
|
|
|
config CMD_BDI
|
|
bool "bdinfo"
|
|
default y
|
|
help
|
|
Print board info
|
|
|
|
config CMD_CONSOLE
|
|
bool "coninfo"
|
|
default y
|
|
help
|
|
Print console devices and information.
|
|
|
|
config CMD_CPU
|
|
bool "cpu"
|
|
help
|
|
Print information about available CPUs. This normally shows the
|
|
number of CPUs, type (e.g. manufacturer, architecture, product or
|
|
internal name) and clock frequency. Other information may be
|
|
available depending on the CPU driver.
|
|
|
|
config CMD_LICENSE
|
|
bool "license"
|
|
help
|
|
Print GPL license text
|
|
|
|
endmenu
|
|
|
|
menu "Boot commands"
|
|
|
|
config CMD_BOOTD
|
|
bool "bootd"
|
|
default y
|
|
help
|
|
Run the command stored in the environment "bootcmd", i.e.
|
|
"bootd" does the same thing as "run bootcmd".
|
|
|
|
config CMD_BOOTM
|
|
bool "bootm"
|
|
default y
|
|
help
|
|
Boot an application image from the memory.
|
|
|
|
config CMD_ELF
|
|
bool "bootelf, bootvx"
|
|
default y
|
|
help
|
|
Boot an ELF/vxWorks image from the memory.
|
|
|
|
config CMD_GO
|
|
bool "go"
|
|
default y
|
|
help
|
|
Start an application at a given address.
|
|
|
|
config CMD_RUN
|
|
bool "run"
|
|
default y
|
|
help
|
|
Run the command in the given environment variable.
|
|
|
|
config CMD_IMI
|
|
bool "iminfo"
|
|
default y
|
|
help
|
|
Print header information for application image.
|
|
|
|
config CMD_IMLS
|
|
bool "imls"
|
|
default y
|
|
help
|
|
List all images found in flash
|
|
|
|
config CMD_XIMG
|
|
bool "imxtract"
|
|
default y
|
|
help
|
|
Extract a part of a multi-image.
|
|
|
|
endmenu
|
|
|
|
menu "Environment commands"
|
|
|
|
config CMD_EXPORTENV
|
|
bool "env export"
|
|
default y
|
|
help
|
|
Export environments.
|
|
|
|
config CMD_IMPORTENV
|
|
bool "env import"
|
|
default y
|
|
help
|
|
Import environments.
|
|
|
|
config CMD_EDITENV
|
|
bool "editenv"
|
|
default y
|
|
help
|
|
Edit environment variable.
|
|
|
|
config CMD_SAVEENV
|
|
bool "saveenv"
|
|
default y
|
|
help
|
|
Save all environment variables into the compiled-in persistent
|
|
storage.
|
|
|
|
config CMD_ENV_EXISTS
|
|
bool "env exists"
|
|
default y
|
|
help
|
|
Check if a variable is defined in the environment for use in
|
|
shell scripting.
|
|
|
|
endmenu
|
|
|
|
menu "Memory commands"
|
|
|
|
config CMD_MEMORY
|
|
bool "md, mm, nm, mw, cp, cmp, base, loop"
|
|
default y
|
|
help
|
|
Memeory commands.
|
|
md - memory display
|
|
mm - memory modify (auto-incrementing address)
|
|
nm - memory modify (constant address)
|
|
mw - memory write (fill)
|
|
cp - memory copy
|
|
cmp - memory compare
|
|
base - print or set address offset
|
|
loop - initinite loop on address range
|
|
|
|
config CMD_CRC32
|
|
bool "crc32"
|
|
default y
|
|
help
|
|
Compute CRC32.
|
|
|
|
config LOOPW
|
|
bool "loopw"
|
|
help
|
|
Infinite write loop on address range
|
|
|
|
config CMD_MEMTEST
|
|
bool "memtest"
|
|
help
|
|
Simple RAM read/write test.
|
|
|
|
config CMD_MX_CYCLIC
|
|
bool "mdc, mwc"
|
|
help
|
|
mdc - memory display cyclic
|
|
mwc - memory write cyclic
|
|
|
|
config CMD_MEMINFO
|
|
bool "meminfo"
|
|
help
|
|
Display memory information.
|
|
|
|
endmenu
|
|
|
|
menu "Device access commands"
|
|
|
|
config CMD_DM
|
|
bool "dm - Access to driver model information"
|
|
depends on DM
|
|
default y
|
|
help
|
|
Provides access to driver model data structures and information,
|
|
such as a list of devices, list of uclasses and the state of each
|
|
device (e.g. activated). This is not required for operation, but
|
|
can be useful to see the state of driver model for debugging or
|
|
interest.
|
|
|
|
config CMD_DEMO
|
|
bool "demo - Demonstration commands for driver model"
|
|
depends on DM
|
|
help
|
|
Provides a 'demo' command which can be used to play around with
|
|
driver model. To use this properly you will need to enable one or
|
|
both of the demo devices (DM_DEMO_SHAPE and DM_DEMO_SIMPLE).
|
|
Otherwise you will always get an empty list of devices. The demo
|
|
devices are defined in the sandbox device tree, so the easiest
|
|
option is to use sandbox and pass the -d point to sandbox's
|
|
u-boot.dtb file.
|
|
|
|
config CMD_LOADB
|
|
bool "loadb"
|
|
default y
|
|
help
|
|
Load a binary file over serial line.
|
|
|
|
config CMD_LOADS
|
|
bool "loads"
|
|
default y
|
|
help
|
|
Load an S-Record file over serial line
|
|
|
|
config CMD_FLASH
|
|
bool "flinfo, erase, protect"
|
|
default y
|
|
help
|
|
NOR flash support.
|
|
flinfo - print FLASH memory information
|
|
erase - FLASH memory
|
|
protect - enable or disable FLASH write protection
|
|
|
|
config CMD_ARMFLASH
|
|
depends on FLASH_CFI_DRIVER
|
|
bool "armflash"
|
|
help
|
|
ARM Ltd reference designs flash partition access
|
|
|
|
config CMD_NAND
|
|
bool "nand"
|
|
help
|
|
NAND support.
|
|
|
|
config CMD_SF
|
|
bool "sf"
|
|
help
|
|
SPI Flash support
|
|
|
|
config CMD_SPI
|
|
bool "sspi"
|
|
help
|
|
SPI utility command.
|
|
|
|
config CMD_I2C
|
|
bool "i2c"
|
|
help
|
|
I2C support.
|
|
|
|
config CMD_USB
|
|
bool "usb"
|
|
help
|
|
USB support.
|
|
|
|
config CMD_FPGA
|
|
bool "fpga"
|
|
default y
|
|
help
|
|
FPGA support.
|
|
|
|
config CMD_REMOTEPROC
|
|
bool "remoteproc"
|
|
depends on REMOTEPROC
|
|
help
|
|
Support for Remote Processor control
|
|
endmenu
|
|
|
|
|
|
menu "Shell scripting commands"
|
|
|
|
config CMD_ECHO
|
|
bool "echo"
|
|
default y
|
|
help
|
|
Echo args to console
|
|
|
|
config CMD_ITEST
|
|
bool "itest"
|
|
default y
|
|
help
|
|
Return true/false on integer compare.
|
|
|
|
config CMD_SOURCE
|
|
bool "source"
|
|
default y
|
|
help
|
|
Run script from memory
|
|
|
|
config CMD_SETEXPR
|
|
bool "setexpr"
|
|
default y
|
|
help
|
|
Evaluate boolean and math expressions and store the result in an env
|
|
variable.
|
|
Also supports loading the value at a memory location into a variable.
|
|
If CONFIG_REGEX is enabled, setexpr also supports a gsub function.
|
|
|
|
endmenu
|
|
|
|
menu "Network commands"
|
|
|
|
config CMD_NET
|
|
bool "bootp, tftpboot"
|
|
select NET
|
|
default y
|
|
help
|
|
Network commands.
|
|
bootp - boot image via network using BOOTP/TFTP protocol
|
|
tftpboot - boot image via network using TFTP protocol
|
|
|
|
config CMD_TFTPPUT
|
|
bool "tftp put"
|
|
help
|
|
TFTP put command, for uploading files to a server
|
|
|
|
config CMD_TFTPSRV
|
|
bool "tftpsrv"
|
|
help
|
|
Act as a TFTP server and boot the first received file
|
|
|
|
config CMD_RARP
|
|
bool "rarpboot"
|
|
help
|
|
Boot image via network using RARP/TFTP protocol
|
|
|
|
config CMD_DHCP
|
|
bool "dhcp"
|
|
help
|
|
Boot image via network using DHCP/TFTP protocol
|
|
|
|
config CMD_NFS
|
|
bool "nfs"
|
|
default y
|
|
help
|
|
Boot image via network using NFS protocol.
|
|
|
|
config CMD_PING
|
|
bool "ping"
|
|
help
|
|
Send ICMP ECHO_REQUEST to network host
|
|
|
|
config CMD_CDP
|
|
bool "cdp"
|
|
help
|
|
Perform CDP network configuration
|
|
|
|
config CMD_SNTP
|
|
bool "sntp"
|
|
help
|
|
Synchronize RTC via network
|
|
|
|
config CMD_DNS
|
|
bool "dns"
|
|
help
|
|
Lookup the IP of a hostname
|
|
|
|
config CMD_LINK_LOCAL
|
|
bool "linklocal"
|
|
help
|
|
Acquire a network IP address using the link-local protocol
|
|
|
|
endmenu
|
|
|
|
menu "Misc commands"
|
|
|
|
config CMD_TIME
|
|
bool "time"
|
|
help
|
|
Run commands and summarize execution time.
|
|
|
|
# TODO: rename to CMD_SLEEP
|
|
config CMD_MISC
|
|
bool "sleep"
|
|
default y
|
|
help
|
|
Delay execution for some time
|
|
|
|
config CMD_TIMER
|
|
bool "timer"
|
|
help
|
|
Access the system timer.
|
|
|
|
config CMD_SETGETDCR
|
|
bool "getdcr, setdcr, getidcr, setidcr"
|
|
depends on 4xx
|
|
default y
|
|
help
|
|
getdcr - Get an AMCC PPC 4xx DCR's value
|
|
setdcr - Set an AMCC PPC 4xx DCR's value
|
|
getidcr - Get a register value via indirect DCR addressing
|
|
setidcr - Set a register value via indirect DCR addressing
|
|
|
|
config CMD_SOUND
|
|
bool "sound"
|
|
depends on SOUND
|
|
help
|
|
This provides basic access to the U-Boot's sound support. The main
|
|
feature is to play a beep.
|
|
|
|
sound init - set up sound system
|
|
sound play - play a sound
|
|
|
|
endmenu
|
|
|
|
menu "Boot timing"
|
|
|
|
config BOOTSTAGE
|
|
bool "Boot timing and reporting"
|
|
help
|
|
Enable recording of boot time while booting. To use it, insert
|
|
calls to bootstage_mark() with a suitable BOOTSTAGE_ID from
|
|
bootstage.h. Only a single entry is recorded for each ID. You can
|
|
give the entry a name with bootstage_mark_name(). You can also
|
|
record elapsed time in a particular stage using bootstage_start()
|
|
before starting and bootstage_accum() when finished. Bootstage will
|
|
add up all the accumated time and report it.
|
|
|
|
Normally, IDs are defined in bootstage.h but a small number of
|
|
additional 'user' IDs can be used but passing BOOTSTAGE_ID_ALLOC
|
|
as the ID.
|
|
|
|
Calls to show_boot_progress() wil also result in log entries but
|
|
these will not have names.
|
|
|
|
config BOOTSTAGE_REPORT
|
|
bool "Display a detailed boot timing report before booting the OS"
|
|
depends on BOOTSTAGE
|
|
help
|
|
Enable output of a boot time report just before the OS is booted.
|
|
This shows how long it took U-Boot to go through each stage of the
|
|
boot process. The report looks something like this:
|
|
|
|
Timer summary in microseconds:
|
|
Mark Elapsed Stage
|
|
0 0 reset
|
|
3,575,678 3,575,678 board_init_f start
|
|
3,575,695 17 arch_cpu_init A9
|
|
3,575,777 82 arch_cpu_init done
|
|
3,659,598 83,821 board_init_r start
|
|
3,910,375 250,777 main_loop
|
|
29,916,167 26,005,792 bootm_start
|
|
30,361,327 445,160 start_kernel
|
|
|
|
config BOOTSTAGE_USER_COUNT
|
|
hex "Number of boot ID numbers available for user use"
|
|
default 20
|
|
help
|
|
This is the number of available user bootstage records.
|
|
Each time you call bootstage_mark(BOOTSTAGE_ID_ALLOC, ...)
|
|
a new ID will be allocated from this stash. If you exceed
|
|
the limit, recording will stop.
|
|
|
|
config CMD_BOOTSTAGE
|
|
bool "Enable the 'bootstage' command"
|
|
depends on BOOTSTAGE
|
|
help
|
|
Add a 'bootstage' command which supports printing a report
|
|
and un/stashing of bootstage data.
|
|
|
|
config BOOTSTAGE_FDT
|
|
bool "Store boot timing information in the OS device tree"
|
|
depends on BOOTSTAGE
|
|
help
|
|
Stash the bootstage information in the FDT. A root 'bootstage'
|
|
node is created with each bootstage id as a child. Each child
|
|
has a 'name' property and either 'mark' containing the
|
|
mark time in microsecond, or 'accum' containing the
|
|
accumulated time for that bootstage id in microseconds.
|
|
For example:
|
|
|
|
bootstage {
|
|
154 {
|
|
name = "board_init_f";
|
|
mark = <3575678>;
|
|
};
|
|
170 {
|
|
name = "lcd";
|
|
accum = <33482>;
|
|
};
|
|
};
|
|
|
|
Code in the Linux kernel can find this in /proc/devicetree.
|
|
|
|
config BOOTSTAGE_STASH
|
|
bool "Stash the boot timing information in memory before booting OS"
|
|
depends on BOOTSTAGE
|
|
help
|
|
Some OSes do not support device tree. Bootstage can instead write
|
|
the boot timing information in a binary format at a given address.
|
|
This happens through a call to bootstage_stash(), typically in
|
|
the CPU's cleanup_before_linux() function. You can use the
|
|
'bootstage stash' and 'bootstage unstash' commands to do this on
|
|
the command line.
|
|
|
|
config BOOTSTAGE_STASH_ADDR
|
|
hex "Address to stash boot timing information"
|
|
default 0
|
|
help
|
|
Provide an address which will not be overwritten by the OS when it
|
|
starts, so that it can read this information when ready.
|
|
|
|
config BOOTSTAGE_STASH_SIZE
|
|
hex "Size of boot timing stash region"
|
|
default 4096
|
|
help
|
|
This should be large enough to hold the bootstage stash. A value of
|
|
4096 (4KiB) is normally plenty.
|
|
|
|
endmenu
|
|
|
|
menu "Power commands"
|
|
config CMD_PMIC
|
|
bool "Enable Driver Model PMIC command"
|
|
depends on DM_PMIC
|
|
help
|
|
This is the pmic command, based on a driver model pmic's API.
|
|
Command features are unchanged:
|
|
- list - list pmic devices
|
|
- pmic dev <id> - show or [set] operating pmic device (NEW)
|
|
- pmic dump - dump registers
|
|
- pmic read address - read byte of register at address
|
|
- pmic write address - write byte to register at address
|
|
The only one change for this command is 'dev' subcommand.
|
|
|
|
config CMD_REGULATOR
|
|
bool "Enable Driver Model REGULATOR command"
|
|
depends on DM_REGULATOR
|
|
help
|
|
This command is based on driver model regulator's API.
|
|
User interface features:
|
|
- list - list regulator devices
|
|
- regulator dev <id> - show or [set] operating regulator device
|
|
- regulator info - print constraints info
|
|
- regulator status - print operating status
|
|
- regulator value <val] <-f> - print/[set] voltage value [uV]
|
|
- regulator current <val> - print/[set] current value [uA]
|
|
- regulator mode <id> - print/[set] operating mode id
|
|
- regulator enable - enable the regulator output
|
|
- regulator disable - disable the regulator output
|
|
|
|
The '-f' (force) option can be used for set the value which exceeds
|
|
the limits, which are found in device-tree and are kept in regulator's
|
|
uclass platdata structure.
|
|
|
|
endmenu
|
|
|
|
menu "Security commands"
|
|
config CMD_TPM
|
|
bool "Enable the 'tpm' command"
|
|
depends on TPM
|
|
help
|
|
This provides a means to talk to a TPM from the command line. A wide
|
|
range of commands if provided - see 'tpm help' for details. The
|
|
command requires a suitable TPM on your board and the correct driver
|
|
must be enabled.
|
|
|
|
config CMD_TPM_TEST
|
|
bool "Enable the 'tpm test' command"
|
|
depends on CMD_TPM
|
|
help
|
|
This provides a a series of tests to confirm that the TPM is working
|
|
correctly. The tests cover initialisation, non-volatile RAM, extend,
|
|
global lock and checking that timing is within expectations. The
|
|
tests pass correctly on Infineon TPMs but may need to be adjusted
|
|
for other devices.
|
|
|
|
endmenu
|
|
|
|
endmenu
|