uboot中的快捷菜单的制作说明 【转】

简介:
 
在uboot中加入快捷操作菜单的方法非常简单,在论坛发布的uboot201003V1.1的源码包里已经包含了菜单的源码
http://www.xcembed.com/bbs/viewthread.php?tid=19&page=1&extra=#pid32
这个菜单其实就是一个uboot中的命令,uboot启动时,如果进入下载模式,就先运行这个命令。命令的执行内容就是通过串口打印出一个菜单,等待输入数字,再执行相应的动作。

新建一个名为: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\n",
  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\n", 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\r\n");
  4.     printf("[2] 烧写Linux Kernel到nandflash\r\n");
  5.     printf("[3] 烧写yaffs2文件系统到nandflash\r\n");
  6.     printf("[4] 下载程序在SDRAM中运行\r\n");
  7.     printf("[5] 设置uboot参数\r\n");
  8.     printf("[6] 格式化Nandflash\r\n");
  9.     printf("[7] 启动Linux系统\r\n");
  10.     printf("[8] 进入Shell模式\r\n");
  11.     printf("[9] 重启uboot\r\n");
  12.     if (bBootFrmNORFlash == 1)
  13.         printf("[0] 下载bootloader到NorFlash\r\n");
  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

 

编译uboot下载到FLASH中就能看到菜单了









本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/4800852.html,如需转载请自行联系原作者

目录
打赏
0
相关文章
Unity 之 关于UnityHub无法打开项目的问题(弹出Unity启动界面有退回到Hub选择工程界面)
弹出Unity启动界面有退回到Hub选择工程界面方案一:万能的重启大法;方案二:未开启许可证;方案三:终极奥义 -- 弃用Hub
3425 0
Unity 之 关于UnityHub无法打开项目的问题(弹出Unity启动界面有退回到Hub选择工程界面)
微信小游戏制作工具中的键盘插件的使用
微信小游戏制作工具中的键盘插件的使用
576 0
【Android开发日常】一文弄懂桌面图标快捷菜单 & 桌面小组件
开发可以定义快捷方式,以便在应用中执行特定操作。 这些快捷方式可在受支持的启动器或助理(如 Google 助理)中显示,方便用户快速启动应用中的常见任务或推荐任务。 通过本文你还将了解一些可提升快捷方式效果的最佳做法。
1279 1
手麻系统源码,C# .net 桌面软件,采用下拉式汉化菜单,界面友好,实用性强
提供手术病人检索、手术申请、手术安排、急诊手术,查看手术申请单、查看手术通知单,填写病人术前会诊记录、谈话记录、麻醉记录,器械准备、手术记录、附加手术、器械清点及术后护理信息等功能。 提供手术查询、手术报表查询、术后信息统计等查询功能。
195 0
手麻系统源码,C# .net 桌面软件,采用下拉式汉化菜单,界面友好,实用性强
在微信小游戏制作工具中实现各种效果和功能的按钮
在游戏设计中有一个名词叫“反馈”,大体就是指当玩家在进行游戏时,游戏所给予玩家的一些东西,比如常见的在点击按钮时,按钮会变换颜色,或进行缩放,或播放音效等等。总之,不论玩家在游戏中进行任何的操作,游戏都应该给予玩家一个合理的反馈。让玩家能够明白他的操作所获得的结果是什么。
494 0
Camtasia2023专业的电脑屏幕录制编辑软件
Camtasia 2023是TechSmith出品的一款屏幕录像和编辑的软件,可轻松录制和分享高质量的截屏视频,提供所需的工具和功能。功能强大的视频编辑器,通过记录您的屏幕活动和网络摄像头流,帮助您创建具有专业外观的截屏视频。软件提供了强大的屏幕录像、视频的剪辑和编辑、视频菜单制作、视频剧场和视频播放功能等,它能在任何颜色模式下轻松地记录屏幕动作,包括影像、音效、鼠标移动的轨迹,解说声音等等,另外,它还具有及时播放和编辑压缩的功能,可对视频片段进行剪接、添加转场效果。
241 0
Sibelius软件2023最新免费版五线谱编辑吉他谱编辑工具
Sibelius软件2023最新免费版五线谱编辑吉他谱编辑工具
236 0
Camtasia Studio2023免费版电脑屏幕录像和编辑软件
作为一个自媒体人,每天都要录制编辑视频,选择一个好的视频编辑工具就是大家首先面临的一个难题,选择一个好工具,可以起到事半功倍的效果,大大提高工作效率。视频编辑非常多,今天COCO玛奇朵给大家说的是一款功能强大、又容易上手的软件,它就是Camtasia 2023。Camtasia2023是一款录屏和剪辑合一的软件,重要的是操作方便,即便是第一次上手,简单实践一下就顺手了。除此之外,Camtasia还有很多动画效果,比如说跳动、按比例放大等,可以说用它来做视频的录屏与编辑,会让视频的质量提高数倍, Camtasia 2023下载:http://t.csdn.cn/hTNuf
231 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等