u-boot-2011.03在TQ2440上的移植(9)--TFTP下载菜单制作

1、在common文件夹下添加tftp_menu.c, 内容如下:

#include <common.h>
#include <command.h>

static char awaitkey(unsigned long delay, int* error_p)
{
 int i;
 char c;
 if (delay == -1)
 {
  while (1)
  {
   if (tstc()) /* we got a key press */
   return getc();
  }
 }
 else
 {       
  for (i = 0; i < delay; i++)
  {
   if (tstc()) /* we got a key press */
   return getc();
   udelay (10*1000);
  }
 }
 if (error_p)
 *error_p = -1;
 
 return 0;
}

void main_menu_usage(void)
{
 printf("/r/n---u-boot-tftp-menu---/r/n");
 printf("[1] u-boot.bin --> Nand Flash/r/n");
 printf("[2] Linux(uImage) --> Nand Flash/r/n");
 printf("[3] yaffs2 --> Nand Flash/r/n");
 printf("[4] Linux(uImage) --> Ram & Run/r/n");
 printf("[5] System Restart/r/n");
 printf("[q] quite menu/r/n");
}

void menu_shell(void)
{
 char c;
 char cmd_buf[200];

 while (1)
 {
  main_menu_usage();
  c = awaitkey(-1, NULL);
  printf("%c/n", c);
  switch (c)
  {
   case '1':
   {
    strcpy(cmd_buf, "tftp 0x32000000 u-boot.bin; nand erase 0x0 0x40000; nand write 0x32000000 0x0 0x40000");
    run_command(cmd_buf, 0);
    break;
   }
   case '2':
   {
    strcpy(cmd_buf, "tftp 0x32000000 uImage; nand erase 0x200000 0x500000; nand write 0x32000000 0x200000 0x500000");
    run_command(cmd_buf, 0);
    break;
   }
   case '3':
   {
    strcpy(cmd_buf, "tftp 0x32000000 fs.yaffs2; nand erase 0x500000; nand write.yaffs2 0x32000000 0x500000 $(filesize)");
    run_command(cmd_buf, 0);
    break;
   }
   case '4':
   {
    strcpy(cmd_buf, "tftp 0x32000000 uImage; bootm 0x32000000");
    run_command(cmd_buf, 0);
    break;
   }
   case '5':
   {
    strcpy(cmd_buf, "reset");
    run_command(cmd_buf, 0);
    break;
   }
   case 'q':
   {
    return;   
    break;
   }
  }
 }
}

int do_menu (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
    menu_shell();
    return 0;
}

U_BOOT_CMD(
 tftp_menu, 1, 0, do_menu,
 "Download Menu",
 "U-boot Download Menu by Hotips/n"
);

 

2、修改common下同目录cmd_menu.c的Makefile文件

vi common/Makefile 添加如下一行

COBJS-y += tftp_menu.o

 

3、make后下载到板子Nandflash 地址0处

启动uboot进入控制台后,输入命令tftp_menu进入菜单如下

[SMDK2440]# tftp_menu

---u-boot-tftp-menu---

[1] u-boot.bin --> Nand Flash
[2] Linux(uImage) -->Nand Flash
[3] yaffs2 --> Nand Flash
[4] Linux(uImage) --> Ram & Run
[5] System Restart
[q] quite menu

 

4、TFTP工具的使用

Tftpd32可以从网址:http://tftpd32.jounin.net下载,解压后运行如下图:

 

Current Directory 为存放要下载的image的目录

Server interface 为电脑即服务器的ip地址

点击Show Dir如果看见存放在Current Directory路径,证明Tftp已经可用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值