|  | /* | 
|  | * (C) Copyright 2001 | 
|  | * Dave Ellis, SIXNET, dge@sixnetio.com | 
|  | * | 
|  | * See file CREDITS for list of people who contributed to this | 
|  | * project. | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU General Public License as | 
|  | * published by the Free Software Foundation; either version 2 of | 
|  | * the License, or (at your option) any later version. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the | 
|  | * GNU General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU General Public License | 
|  | * along with this program; if not, write to the Free Software | 
|  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
|  | * MA 02111-1307 USA | 
|  | */ | 
|  |  | 
|  | 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_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. | 
|  | If "%d" is included, it is replaced by the number of seconds | 
|  | remaining before autoboot will start, but it does not count | 
|  | down the seconds. "autoboot in %d seconds\n" is a reasonable | 
|  | prompt. | 
|  |  | 
|  | 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). | 
|  |  | 
|  | 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. |