1)先在common文件夹中新建Cmd_menu.c
2)在Cmd_menu.c中加入下列代码
#include
#include
void main_menu_usage(void)
{
printf("[1] 烧写bootloader到nandflash\r\n");
printf("[2] 烧写Linux Kernel到nandflash\r\n");
printf("[3] 烧写yaffs2文件系统到nandflash\r\n");
printf("[4] 下载程序在SDRAM中运行\r\n");
printf("[5] 设置uboot参数\r\n");
printf("[6] 格式化Nandflash\r\n");
printf("[7] 启动Linux系统\r\n");
printf("[8] 进入Shell模式\r\n");
printf("[9] 重启uboot\r\n");
// if (bBootFrmNORFlash == 1)
// printf("[0] 下载bootloader到NorFlash\r\n");
printf("Enter your selection: ");
}
void menu_shell(void)
{
char c;
char cmd_buf[200];
while(1)
{
main_menu_usage();//打印菜单
c=getc();
printf("%c\n",c);
switch(c)
{
case '1':printf("您按中了1\n");break;
case '2':printf("您按中了2\n");break;
default:printf("您按中了%n\n",c);break;
}
}
}
int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
menu_shell();
return 0;
}
/**************************
U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)
各个参数的意义如下:
name:命令名,非字符串,但在U_BOOT_CMD中用“#”符号转化为字符串
maxargs:命令的最大参数个数
rep:是否自动重复(按Enter键是否会重复执行)
cmd:该命令对应的响应函数
usage:简短的使用说明(字符串)
help:较详细的使用说明(字符串)
******************************/
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 somethine"
);
3)、让加入的Cmd_menu.c文件参与编译
在Makefile中加入COBJS-$(CONFIG_CMD_MENU) += cmd_menu.o
4)、在配置文件中加入宏
#define CONFIG_MENUKEY 1//定义配置菜单
#define DEBUG 1 //打开调试信息
#define CONFIG_BOOTCOMMAND "menu" //将上电自启动设置为menu
5)、加入菜单中相对应的命令参数
以烧写uboot到nandflash为例,case 1:中的内容为:
strcpy(cmd_buf, "usbslave 1 0x30000000; nand erase bios; nand write.jffs2 0x30000000 bios 0x100000");
run_command(cmd_buf, 0);
break;
以上五步就可以打印出菜单了。
|