u-boot-2011.03在TQ2440上的移植(9)--TFTP下载菜单制作
2011-03-23 09:22
411 查看
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已经可用。
#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已经可用。
相关文章推荐
- u-boot-2011.03在TQ2440上的移植(8)--支持下载yaffs2文件系统
- u-boot-2011.03在TQ2440上的移植(11)--支持USB下载
- 移植u-boot-2010.03 --- 使用tftp下载并运行内核
- u-boot-2011.03在mini2440/micro2440上的移植(八)——结束语及资源下载
- u-boot-2011.03在TQ2440上的移植(1)--建立自己的demo板
- u-boot2010.03 移植篇(四)-----支持DM9000,实现tftp下载
- u-boot-2011.03在TQ2440上的移植(2)--初始化时钟
- u-boot-2011.03在TQ2440上的移植(5)—实现Nand/Nor 双启动
- u-boot2010.03 移植篇(四)-----支持DM9000,实现tftp下载
- u-boot2010.03 移植篇(四)-----支持DM9000,实现tftp下载
- u-boot2010.03 移植篇(四)-----支持DM9000,实现tftp下载
- u-boot-2011.03在TQ2440上的移植(3)--支持norflash启动 .
- U-boot-200908在FL2440上的移植(四)--用nfs和tftp下载
- u-boot-2011.03在TQ2440上的移植(3)--支持norflash启动
- u-boot-2011.03在TQ2440上的移植(4)--支持nandflash启动
- u-boot-2011.03在TQ2440上的移植(6)--支持dm9000x网卡
- u-boot-2011.03在mini2440/micro2440上的移植(六)——支持yaffs下载
- u-boot移植第五弹——2013.10u-boot通过tftp下载到内存中运行
- u-boot-2011.03在TQ2440上的移植(7)--机器码配对
- u-boot-2011.03在TQ2440上的移植(10)--支持串口xmodem协议