好的~,文件是common/cmd_menu.c,全部代码如下
#include <command.h>
#include <common.h>
extern char console_buffer[CFG_CBSIZE];
static char awaitkey(unsigned long delay,int* error_p)
{
int i;
if (delay==-1)
{
while(1)
{
if(tstc())
return getc();
}
}
else
{
for(i=0;i<delay;i++)
{if(tstc())
return getc();
udelay(10*1000);
}
}
if(error_p)
*error_p=-1;
return 0;
}
void menu_usage(void)
{
printf("\r\n--this is my U-BOOT menu by tftp\r\n");
printf("[1] download u-boot.bin to nand flash\n");
printf("[2] download Linux's uimage to nand flash\n");
printf("[3] download the image of yaffs2 to nand falsh\n");
printf("[4] boot the system\n");
printf("[5] set parameters for tftp\n");
printf("[6] reset\n");
printf("[q] quite back to the commanded line\n");
printf("Enter your select:");
}
void menu_shell(void)
{
char c;
char cmd_buf[200];
while(1)
{
menu_usage();
c=awaitkey(-1,NULL);
printf("%c\n",c);
switch (c)
{
case '5':
{
char param_buf1[25];
char param_buf2[25];
char param_buf3[25];
printf("Enter the TFTP Server(PC) IP address:(xxx.xxx.xxx.xxx)\n");
readline(NULL);
strcpy(param_buf1,console_buffer);
sprintf(cmd_buf, "setenv serverip %s",param_buf1);
run_command(cmd_buf, 0);
printf("Enter the SKY2440/TQ2440 IP address:(xxx.xxx.xxx.xxx)\n");
readline(NULL);
strcpy(param_buf2,console_buffer);
sprintf(cmd_buf, "setenv ipaddr %s",param_buf2);
run_command(cmd_buf, 0);
printf("Enter the Mask IP address:(xxx.xxx.xxx.xxx)\n");
readline(NULL);
strcpy(param_buf3,console_buffer);
sprintf(cmd_buf, "setenv netmask %s",param_buf3);
run_command(cmd_buf, 0);
printf("Save TFTP IP parameters?(y/n)\n");
if (getc() == 'y' )
{
printf("y");
getc() == '\r';
printf("\n");
sprintf(cmd_buf, "saveenv");
run_command(cmd_buf, 0);
}
else
{
printf("Not Save it!!!\n");
}
break;
}
case '6':
run_command("reset",0);
break;
case 'q':
case 'Q':
return;
break;
}
}
}
int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
menu_shell();
return 0;
}
U_BOOT_CMD(menu,1,0,do_menu,"menu - test\n"," - display a menu, to select the items to do something"); |