100 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
|  * (C) Copyright 2011-2012 Pali Rohár <pali.rohar@gmail.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| 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.
 |