Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / U-boot启动菜单实现

1、实现原理向U-boot中添加命令bootmenu(实现菜单),并设置U-boot自启动参数为该命令,改变U-boot启动延时为1,则U-boot启动后就运行该命令。2、实现过程(1)、在common目录下新增bootmenu.c文件,代码如下:#include <common.h>#include <command.h>
static char waitconsoleinput(unsigned long delay)
{
    int i;
    if (-1 == delay) {
        while (1) {
            if(tstc()){
                return getc();
            }
        }
    }
    else {     
        for (i = 0; i < delay; i++) {
            if(tstc()){
                return getc();
            }
            udelay(10*1000);/*时间快的话自己调整下*/
        }
    }    return 0;
}
void menu_usage(void)
{
    printf(" =========Menu for XXX========= ");
    printf(" ");
    printf("[1] download Linux(zImage) and boot kernel ");
    printf("[2] Reset ");
    printf("[q] Exit ");
    printf(" ");
    printf("Please Input: ");
}void menu_shell(void)
{
    char c;
    char cmdbuf[128];    while (1)
    {
        menu_usage();
        c = waitconsoleinput(-1);
        switch (c)
        {
        case "1":
            strcpy(cmdbuf, "tftp 0x20008000 zImage; go 0x20008000");
            run_command(cmdbuf, 0);
            break;
        case "r":
            strcpy(cmdbuf, "reset");
            run_command(cmdbuf, 0);
            break;
        case "q":
            return; 
        };
    };
}int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
    menu_shell();
    return 0;
}U_BOOT_CMD(
    bootmenu, 1, 0, do_menu,
    "Boot Menu",
    "U-boot Boot Menu "
);(2)、修改common目录下的Makefile文件
添加如下:
COBJS-y += bootmenu.o(3)、修改环境变量A、修改源码板子头文件
includeconfigsxxx.h(板子头文件),添加如下内容:#define CONFIG_BOOTDELAY 1
#define CONFIG_BOOTCOMMAND    "bootmenu"B、启动U-boot后进到控制台来手工修改$ setenv bootcmd bootmenu$ setenv bootdelay 1$ saveenv相关阅读:U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm