zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    读书分析和读书步骤的方法
    如何在招聘中挖掘面试人员的能力
    接口测试自动化之Robot Framework
    电商后台系统产品逻辑全解析
    RobotFramework之环境安装、关键字、库详解(三)
    管理学相关系统知识
    软件测试岗位人员离职文档交接
    软件测试人员招聘计划
    测试总结过程中的质量分析报告
    测试人员应该怎么写测试总结?
  • 原文地址:https://www.cnblogs.com/alan666/p/8311989.html
Copyright © 2011-2022 走看看