• uboot中的快捷菜单的制作说明


    转自:http://blog.csdn.net/qq_21792169/article/details/50041365
    新建一个名为:cmd_menu.c的文件,放到common目录下,修改同目录下的Makefile文件,加入编译选项:
    COBJS-$(CONFIG_CMD_MENU) += cmd_menu.o

    编写cmd_menu.c的内容:
    定义一个uboot cmd:
    1. U_BOOT_CMD(
    2.     menu, 3, 0, do_menu,
    3.     "menu - display a menu, to select the items to do something ",
    4.     " - display a menu, to select the items to do something"
    5. );

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

    实现do_menu

    1. int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
    2. {
    3.     menu_shell();
    4.     return 0;
    5. }

     

    这里调用menu_shell函数

    1. void menu_shell(void)
    2. {
    3.     char cmd_buf[200];
    4.     while (1)
    5.     {
    6.           main_menu_usage(); //打印菜单
    7.           c = awaitkey(-1, NULL);
    8.           printf("%c ", c);
    9.           switch (c)
    10.           {
    11.                 case '1': //输入‘1’执行的动作
    12.                 {
    13.                     .....
    14.                     break;
    15.                 }

    16.                 case '2': //输入‘2’执行的动作
    17.                 {
    18.                     ..... 
    19.                     break;
    20.                 }

    21.                 case '3': //输入‘3’执行的动作
    22.                 {
    23.                     .....
    24.                     break;
    25.                 }
    26.                 .....
    27.                 ....
    28.           } 
    29.     }
    30. }

     

    menu_shell就是一个while循环,调用main_menu_usage打印菜单,然后awaitkey,再switch输入的键值,
    执行相应的case

    我的main_menu_usage如下:

    1. void main_menu_usage(void)
    2. {
    3.     printf("[1] 烧写bootloader到nandflash ");
    4.     printf("[2] 烧写Linux Kernel到nandflash ");
    5.     printf("[3] 烧写yaffs2文件系统到nandflash ");
    6.     printf("[4] 下载程序在SDRAM中运行 ");
    7.     printf("[5] 设置uboot参数 ");
    8.     printf("[6] 格式化Nandflash ");
    9.     printf("[7] 启动Linux系统 ");
    10.     printf("[8] 进入Shell模式 ");
    11.     printf("[9] 重启uboot ");
    12.     if (bBootFrmNORFlash == 1)
    13.         printf("[0] 下载bootloader到NorFlash ");
    14.     printf("Enter your selection: ");
    15. }

     

    以烧写uboot到nandflash为例,case 1:中的内容为:

    1. strcpy(cmd_buf, "usbslave 1 0x30000000; nand erase bios; nand write.jffs2 0x30000000 bios 0x100000");
    2. run_command(cmd_buf, 0);
    3. break;

     

    按照这个依次写每个case

    main.c中调用menu命令:
    main_loop函数中在abortboot (bootdelay) 结束后加入:

    1. #ifdef CONFIG_CMD_MENU
    2.     run_command("menu", 0);
    3. #endif
  • 相关阅读:
    SQL一条语句统计记录总数及各状态数
    火狐登录国际账户
    HTML基础笔记
    增强for、lambda for、stream 遍历List 结束方法 or 跳过循环本次循环
    nginx
    前端问题总结
    Node.js
    Actuator
    ssh免密登录实现及Python实现
    【Mac渗透测试】之SQL注入Demo
  • 原文地址:https://www.cnblogs.com/alan666/p/8311989.html
Copyright © 2020-2023  润新知