123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /*
- * (C) Copyright 2011-2012 Pali Rohár <pali.rohar@gmail.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
- */
- ANSI terminal bootmenu command
- The "bootmenu" command uses U-Boot menu interfaces and provides
- a simple mechanism for creating menus with different boot items.
- The cursor keys "Up" and "Down" are used for navigation through
- the items. Current active menu item is highlighted and can be
- selected using the "Enter" key. The selection of the highlighted
- menu entry invokes an U-Boot command (or a list of commands)
- associated with this menu entry.
- The "bootmenu" command interprets ANSI escape sequencies, so
- an ANSI terminal is required for proper menu rendering and item
- selection.
- The assembling of the menu is done via a set of environment variables
- "bootmenu_<num>" and "bootmenu_delay", i.e.:
- bootmenu_delay=<delay>
- bootmenu_<num>="<title>=<commands>"
- <delay> is the autoboot delay in seconds, after which the first
- menu entry will be selected automatically
- <num> is the boot menu entry number, starting from zero
- <title> is the text of the menu entry shown on the console
- or on the boot screen
- <commands> are commands which will be executed when a menu
- entry is selected
- (title and commands are separated by first appearance of '='
- character in the environment variable)
- First (optional) argument of the "bootmenu" command is a delay specifier
- and it overrides the delay value defined by "bootmenu_delay" environment
- variable. If the environment variable "bootmenu_delay" is not set or if
- the argument of the "bootmenu" command is not specified, the default delay
- will be CONFIG_BOOTDELAY. If delay is 0, no menu entries will be shown on
- the console (or on the screen) and the command of the first menu entry will
- be called immediately. If delay is less then 0, bootmenu will be shown and
- autoboot will be disabled.
- Bootmenu always adds menu entry "U-Boot console" at the end of all menu
- entries specified by environment variables. When selecting this entry
- the bootmenu terminates and the usual U-Boot command prompt is presented
- to the user.
- Example environment:
- setenv bootmenu_0 Boot 1. kernel=bootm 0x82000000 # Set first menu entry
- setenv bootmenu_1 Boot 2. kernel=bootm 0x83000000 # Set second menu entry
- setenv bootmenu_2 Reset board=reset # Set third menu entry
- setenv bootmenu_3 U-Boot boot order=boot # Set fourth menu entry
- bootmenu 20 # Run bootmenu with autoboot delay 20s
- The above example will be rendered as below
- (without decorating rectangle):
- ┌──────────────────────────────────────────┐
- │ │
- │ *** U-Boot Boot Menu *** │
- │ │
- │ Boot 1. kernel │
- │ Boot 2. kernel │
- │ Reset board │
- │ U-Boot boot order │
- │ U-Boot console │
- │ │
- │ Hit any key to stop autoboot: 20 │
- │ Press UP/DOWN to move, ENTER to select │
- │ │
- └──────────────────────────────────────────┘
- Selected menu entry will be highlighted - it will have inverted
- background and text colors.
- To enable the "bootmenu" command add following definitions to the
- board config file:
- #define CONFIG_CMD_BOOTMENU
- #define CONFIG_MENU
- To run the bootmenu at startup add these additional definitions:
- #define CONFIG_AUTOBOOT_KEYED
- #define CONFIG_BOOTDELAY 30
- #define CONFIG_MENU_SHOW
- When you intend to use the bootmenu on color frame buffer console,
- make sure to additionally define CONFIG_CFB_CONSOLE_ANSI in the
- board config file.
|