您的位置:首页 > 其它

关于uboot之U盘启动——上课笔记2

2012-07-11 10:18 232 查看
对于在上课笔记1中提到的两个问题:
1、uboot输入指令后从U盘启动内核
2、按着一个按键,打开电源时,不需要输入指令uboot就可以启动内核

一、解决方法如下:
在目录 /ben/u-boot-1.3.4/include/configs中的文件xyd2440.h中添加如下宏定义:
//自己定义从U盘中启动,打开相应的开关

#define CONFIG_CMD_FAT 1

#define CONFIG_CMD_USB 1

#define CONFIG_DOS_PARTITION 1

#define CONFIG_USB_STORAGE 1

#define CONFIG_USB_UHCI 1

#define CONFIG_USB_OHCI 1

#define CONFIG_SUPPORT_VFAT 1

#define CONFIG_DEDICE_DEREGISTER 1

二、解决方法如下:
在目录 /ben/u-boot-1.3.4/common/中的main.c中添加如下代码:
设置按键的gpio口以及判断是否有按键按下,如有按键按下这执行从u盘启动的命令usb start; fatload usb 0 32000000 uImage; bootm 0x32000000 注意自定义的函数mymain()应放在函数main_loop中的延时读秒的函数之后,如果不知道何时读秒完成的话可以在程序中插入打印语句putchar('11\n');进行判断。

/****************************** press any key to boot kernel define by ruanbanmao ************************************/
//查看开发板的原理图获知按键是由哪个gpio口控制的以及这个gpio口的的地址

#define GPGCON (*(volatile unsigned *)0x56000060)

#define GPGDAT (*(volatile unsigned *)0x56000064)

#define GPGUP (*(volatile unsigned *)0x56000068)

char press_anykey(void)

{

char key = 0;

GPGCON = GPGCON&0xfffffffc; // Set GPG0 output

GPGUP = GPGUP&0xfffffffe; // Enable GPGUP
//According different key;

if ((GPGDAT&0x1) == 0)

key = 1;

return key;

}
/**************************************************** 判断是按键是否被按下 *************************************************************/

void mymain(void)

{

char cmd_buf[256];

char c;

char a=1;

//printf ("K1:usb start;fatload usb 0 32000000 uImage; bootm 0x32000000\n");

printf("\n\n******************************************************************************\n");

printf(" **hit key [1] Download Linux kernel from usb,hit any key to continue** \n");

printf("******************************************************************************\n");

while(a)

{

c = press_anykey(); //判断是否有按键被按下

if(c==1)

{

strcpy(cmd_buf,"usb start;fatload usb 0 32000000 uImage; bootm 0x32000000");

run_command (cmd_buf, 0);
}

else

{

a=0;

}

}

}
/****************************************************************************************************************
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: