Merge branch 'u-boot/master' into 'u-boot-arm/master'
Conflicts: drivers/video/exynos_fb.c
This commit is contained in:
115
doc/README.bootmenu
Normal file
115
doc/README.bootmenu
Normal file
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* (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.
|
||||
@@ -156,6 +156,14 @@ To use this, put something like this in your board header file:
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS "fdtcontroladdr=10000\0"
|
||||
|
||||
Build:
|
||||
|
||||
After board configuration is done, fdt supported u-boot can be build in two ways:
|
||||
1) build the default dts which is defined from CONFIG_DEFAULT_DEVICE_TREE
|
||||
$ make
|
||||
2) build the user specified dts file
|
||||
$ make DEVICE_TREE=<dts-file-name>
|
||||
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
@@ -51,7 +51,9 @@ struct menu;
|
||||
* menu_create() - Creates a menu handle with default settings
|
||||
*/
|
||||
struct menu *menu_create(char *title, int timeout, int prompt,
|
||||
void (*item_data_print)(void *));
|
||||
void (*item_data_print)(void *),
|
||||
char *(*item_choice)(void *),
|
||||
void *item_choice_data);
|
||||
|
||||
/*
|
||||
* menu_item_add() - Adds or replaces a menu item
|
||||
@@ -63,6 +65,11 @@ int menu_item_add(struct menu *m, char *item_key, void *item_data);
|
||||
*/
|
||||
int menu_default_set(struct menu *m, char *item_key);
|
||||
|
||||
/*
|
||||
* menu_default_choice() - Set *choice to point to the default item's data
|
||||
*/
|
||||
int menu_default_choice(struct menu *m, void **choice);
|
||||
|
||||
/*
|
||||
* menu_get_choice() - Returns the user's selected menu entry, or the
|
||||
* default if the menu is set to not prompt or the timeout expires.
|
||||
|
||||
Reference in New Issue
Block a user