天嵌 ARM开发社区

 找回密码
 注册
查看: 2716|回复: 2

关于uboot添加命令问题

[复制链接]
愤怒的羊羔 发表于 2012-4-23 15:38:12 | 显示全部楼层 |阅读模式
给uboot-1.1.6添加了个menu菜单(菜单也就只有退出和reset有用)之后,menu命令可用,但用help menu时就出现no help available,而且只用help时就没有任何响应了,小弟新手,望高手指点啊~~~~
[img]C:\Documents and Settings\yan\桌面\1.JPG
embedsky_lhh 发表于 2012-4-23 17:37:27 | 显示全部楼层
建议贴下声明menu命令时的代码看下
回复

使用道具 举报

 楼主| 愤怒的羊羔 发表于 2012-4-23 21:15:46 | 显示全部楼层
好的~,文件是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");
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-8-15 20:54 , Processed in 2.040658 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表