您当前的位置: 首页 > 

韦东山

暂无认证

  • 1浏览

    0关注

    506博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

怎样在uboot上创建菜单(menu)?

韦东山 发布时间:2019-01-16 16:58:35 ,浏览量:1

一、原理

uboot菜单其实就是一个uboot中的命令,和其他的命令没有什么差别。

uboot启动时,如果进入uboot命令模式,先运行这个命令,就会打印出一个菜单界面。在uboot的命令模式,通过键入“menu”命令,同样可以调出这个界面。

在这里插入图片描述

二、操作步骤

1、在uboot的common目录下创建cmd_menu.c, 定义一个uboot cmd:

U_BOOT_CMD(
    menu,    3,    0,    do_menu,
    "menu - display a menu, to select the items to do something\n",
    " - display a menu, to select the items to do something"
);

cmd的名为 menu ,执行的动作是do_menu函数。

实现do_menu:

int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
    tftp_menu_shell();
    return 0;
}

然后继续完善cmd_menu.c,内容如下:

#include 
#include 

#ifdef CONFIG_CMD_MENU

#define USE_TFTP_DOWN        1
#define USE_USB_DOWN         2

extern char console_buffer[];

/*
 * Reads and returns a character from the serial port
 *   - Times out after delay iterations checking for presence of character
 *   - Sets *error_p to UART error bits or - on timeout
 *   - On timeout, sets *error_p to -1 and returns 0
 */
static char awaitkey(unsigned long delay, int* error_p)
{
    int i;
    char c;

    if (delay == -1) {
        while (1) {
            if (tstc()) /* we got a key press    */
                return getc();
        }
    }
    else {        
        for (i = 0; i = 0 && s && !abortboot (bootdelay)) {
# ifdef CONFIG_AUTOBOOT_KEYED
        int prev = disable_ctrlc(1);    /* disable Control C checking */
# endif

# ifndef CFG_HUSH_PARSER
        run_command (s, 0);
# else
        parse_string_outer(s, FLAG_PARSE_SEMICOLON |
                    FLAG_EXIT_FROM_LOOP);
# endif

# ifdef CONFIG_AUTOBOOT_KEYED
        disable_ctrlc(prev);    /* restore Control C checking */
# endif
    }

#ifdef CONFIG_CMD_MENU
    run_command("menu", 0);
#endif

4、修改开发板相关的头文件,这里修改:include/configs/TQ2440.h

增加一行:

#define CONFIG_CMD_MENU 1

然后重新编译uboot,烧写到开发板即可看到uboot 菜单。

-THE END-

关注公众号baiwenkeji第一时间获得嵌入式干货。 技术交流加个人威信13266630429,验证:CSDN博客

关注
打赏
1658827356
查看更多评论
立即登录/注册

微信扫码登录

0.2567s