mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-22 10:31:56 +02:00 
			
		
		
		
	As originally implemented, setting the AUTOBOOT_KEYED config option will prevent users from breaking into the autoboot script with ctrl-c. Restore that option with a new config symbol. Signed-off-by: Mark Langsdorf <mark.langsdorf@calxeda.com>
		
			
				
	
	
		
			158 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|  * (C) Copyright 2001
 | |
|  * Dave Ellis, SIXNET, dge@sixnetio.com
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| Using autoboot configuration options
 | |
| ====================================
 | |
| 
 | |
| The basic autoboot configuration options are documented in the main
 | |
| U-Boot README. See it for details. They are:
 | |
| 
 | |
|   bootdelay
 | |
|   bootcmd
 | |
|   CONFIG_BOOTDELAY
 | |
|   CONFIG_BOOTCOMMAND
 | |
| 
 | |
| Some additional options that make autoboot safer in a production
 | |
| product are documented here.
 | |
| 
 | |
| Why use them?
 | |
| -------------
 | |
| 
 | |
| The basic autoboot feature allows a system to automatically boot to
 | |
| the real application (such as Linux) without a user having to enter
 | |
| any commands. If any key is pressed before the boot delay time
 | |
| expires, U-Boot stops the autoboot process, gives a U-Boot prompt
 | |
| and waits forever for a command. That's a good thing if you pressed a
 | |
| key because you wanted to get the prompt.
 | |
| 
 | |
| It's not so good if the key press was a stray character on the
 | |
| console serial port, say because a user who knows nothing about
 | |
| U-Boot pressed a key before the system had time to boot. It's even
 | |
| worse on an embedded product that doesn't have a console during
 | |
| normal use. The modem plugged into that console port sends a
 | |
| character at the wrong time and the system hangs, with no clue as to
 | |
| why it isn't working.
 | |
| 
 | |
| You might want the system to autoboot to recover after an external
 | |
| configuration program stops autoboot. If the configuration program
 | |
| dies or loses its connection (modems can disconnect at the worst
 | |
| time) U-Boot will patiently wait forever for it to finish.
 | |
| 
 | |
| These additional configuration options can help provide a system that
 | |
| boots when it should, but still allows access to U-Boot.
 | |
| 
 | |
| What they do
 | |
| ------------
 | |
| 
 | |
|   CONFIG_BOOT_RETRY_TIME
 | |
|   CONFIG_BOOT_RETRY_MIN
 | |
| 
 | |
|   "bootretry" environment variable
 | |
| 
 | |
| 	These options determine what happens after autoboot is
 | |
| 	stopped and U-Boot is waiting for commands.
 | |
| 
 | |
| 	CONFIG_BOOT_RETRY_TIME must be defined to enable the boot
 | |
| 	retry feature. If the environment variable "bootretry" is
 | |
| 	found then its value is used, otherwise the retry timeout is
 | |
| 	CONFIG_BOOT_RETRY_TIME. CONFIG_BOOT_RETRY_MIN is optional and
 | |
| 	defaults to CONFIG_BOOT_RETRY_TIME. All times are in seconds.
 | |
| 
 | |
| 	If the retry timeout is negative, the U-Boot command prompt
 | |
| 	never times out. Otherwise it is forced to be at least
 | |
| 	CONFIG_BOOT_RETRY_MIN seconds. If no valid U-Boot command is
 | |
| 	entered before the specified time the boot delay sequence is
 | |
| 	restarted. Each command that U-Boot executes restarts the
 | |
| 	timeout.
 | |
| 
 | |
| 	If CONFIG_BOOT_RETRY_TIME < 0 the feature is there, but
 | |
| 	doesn't do anything unless the environment variable
 | |
| 	"bootretry" is >= 0.
 | |
| 
 | |
|   CONFIG_AUTOBOOT_KEYED
 | |
|   CONFIG_AUTOBOOT_KEYED_CTRLC
 | |
|   CONFIG_AUTOBOOT_PROMPT
 | |
|   CONFIG_AUTOBOOT_DELAY_STR
 | |
|   CONFIG_AUTOBOOT_STOP_STR
 | |
|   CONFIG_AUTOBOOT_DELAY_STR2
 | |
|   CONFIG_AUTOBOOT_STOP_STR2
 | |
| 
 | |
|   "bootdelaykey"  environment variable
 | |
|   "bootstopkey"	  environment variable
 | |
|   "bootdelaykey2" environment variable
 | |
|   "bootstopkey2"  environment variable
 | |
| 
 | |
| 	These options give more control over stopping autoboot. When
 | |
| 	they are used a specific character or string is required to
 | |
| 	stop or delay autoboot.
 | |
| 
 | |
| 	Define CONFIG_AUTOBOOT_KEYED (no value required) to enable
 | |
| 	this group of options.	CONFIG_AUTOBOOT_DELAY_STR,
 | |
| 	CONFIG_AUTOBOOT_STOP_STR or both should be specified (or
 | |
| 	specified by the corresponding environment variable),
 | |
| 	otherwise there is no way to stop autoboot.
 | |
| 
 | |
| 	CONFIG_AUTOBOOT_PROMPT 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 CONFIG_AUTOBOOT_PROMPT 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. A
 | |
| 	reasonable prompt could be defined as
 | |
| 
 | |
| 		#define CONFIG_AUTOBOOT_PROMPT \
 | |
| 			"autoboot in %d seconds\n",bootdelay
 | |
| 
 | |
| 	If CONFIG_AUTOBOOT_DELAY_STR or "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.
 | |
| 
 | |
| 	If CONFIG_AUTOBOOT_STOP_STR or "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.
 | |
| 
 | |
| 	The string recognition is not very sophisticated. If a
 | |
| 	partial match is detected, the first non-matching character
 | |
| 	is checked to see if starts a new match. There is no check
 | |
| 	for a shorter partial match, so it's best if the first
 | |
| 	character of a key string does not appear in the rest of the
 | |
| 	string.
 | |
| 
 | |
| 	Using the CONFIG_AUTOBOOT_DELAY_STR2 #define or the
 | |
| 	"bootdelaykey2" environment variable and/or the
 | |
| 	CONFIG_AUTOBOOT_STOP_STR2 #define or the "bootstopkey"
 | |
| 	environment variable you can specify a second, alternate
 | |
| 	string (which allows you to have two "password" strings).
 | |
| 
 | |
| 	The CONFIG_AUTOBOOT_KEYED_CTRLC #define 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_ZERO_BOOTDELAY_CHECK
 | |
| 
 | |
| 	If this option is defined, you can stop the autoboot process
 | |
| 	by hitting a key even in that case when "bootdelay" has been
 | |
| 	set to 0. You can set "bootdelay" to a negative value to
 | |
| 	prevent the check for console input.
 | |
| 
 | |
|   CONFIG_RESET_TO_RETRY
 | |
| 
 | |
| 	(Only effective when CONFIG_BOOT_RETRY_TIME is also set)
 | |
| 	After the countdown timed out, the board will be reset to restart
 | |
| 	again.
 |