void main_menu_usage(void)
{
printf("\r\n##### ok6410 Bootloader #####\r\n");
printf("[u] Download u-boot\r\n");
printf("[k] Download Linux kernel\r\n");
//printf("[y] Download YAFFS image\r\n");
printf("[c] Download cramfs image\r\n");
//printf("[d] Download to SDRAM & Run\r\n");
printf("[b] Boot the system\r\n");
printf("[f] Format the Nand Flash\r\n");
printf("[s] Set the boot parameters\r\n");
printf("[r] Reboot u-boot\r\n");
printf("[q] Quit from menu\r\n");
printf("Enter your selection: ");
}
void MainMenu()
{
char c;
char cmd_buf[256];
char name_buf[20];
char val_buf[256];
while (1)
{
main_menu_usage(); //输出菜单的函数
c = getc(); //获取输入的字符
printf("%c\n", c);
switch (c)
{
case 'u': //烧写uboot
printf("nand erase nand and write uboot \n");
strcpy(cmd_buf, "dnw c0008000 ; nand erase 0 100000 ; nand write 0xc0008000 0 100000");
printf("%s \n",cmd_buf);
run_command(cmd_buf, 0);
break;
case 'k': //烧写kernel
//先设定环境变量
strcpy(cmd_buf,"setenv bootargs \"root=/dev/mtdblock2 console=ttySAC0,115200\"“);
run_command(cmd_buf,0);
run_command("saveenv",0);
strcpy(cmd_buf, "dnw c0008000; nand erase 100000 300000 ; nand write.e 0xc0008000 100000 300000");
printf("%s \n",cmd_buf);
run_command(cmd_buf, 0);
break;
case 'c': //烧写cramfs文件系统
strcpy(cmd_buf, "dnw 0xc0008000; nand erase 400000 5000000 ; nand write.e 0xc0008000 400000 5000000");
printf("%s \n",cmd_buf);
run_command(cmd_buf, 0);
strcpy(cmd_buf, "setenv bootargs \"root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200\"");
printf("%s \n",cmd_buf);
run_command(cmd_buf, 0);
strcpy(cmd_buf, "saveenv");
printf("%s \n",cmd_buf);
run_command(cmd_buf, 0);
break;
case 'b': //bootm 重启
printf("Booting Linux ...\n");
strcpy(cmd_buf, "nand read 0xc0008000 0x100000 0x300000;bootm 0xc0008000");
printf("%s\n",cmd_buf);
run_command(cmd_buf, 0);
break;
case 'f': //format flash
strcpy(cmd_buf, "nand scrub");
printf("%s\n",cmd_buf);
run_command(cmd_buf, 0);
break;
case 's': //更改环境参数
param_menu_shell(); 这部分函数需要自己写 :)
break;
case 'q': //退出菜单
return;
break;
}
}
}
4)、加入参数修改的菜单函数
|