Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1254198
  • 博文数量: 479
  • 博客积分: 12240
  • 博客等级: 上将
  • 技术积分: 4999
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-24 17:12
文章分类

全部博文(479)

文章存档

2014年(1)

2013年(1)

2012年(1)

2011年(95)

2010年(177)

2009年(167)

2008年(16)

2007年(21)

分类: 嵌入式

2009-10-14 21:26:59

修改U-Boot启动延迟bootdelay的粒度

默认情况下,U-Boot的bootdelay参数,默认是以秒为单位的,如可以设置延时为1秒钟。在要求快速启动的场合,1秒钟也是很长的时间,但是如果将bootdelay的值设置为0,则无法进入U-Boot的命令界面,无法进行更多的设置。

为了解决这个问题,只有修改延时粒度了,可以将延时粒度修改为1毫秒,这样将bootdelay的值设置为1的时候,延迟也就只有1毫秒了。
修改common/main.c文件,找到static __inline__ int abortboot(int bootdelay)函数,并找到如下代码进行修改:

        while ((bootdelay > 0) && (!abort)) {
                int i;

                --bootdelay;
                /* delay 100 * 10ms */                              //默认延时100X10ms=1秒
                for (i=0; !abort && i<100; ++i) {
                        if (tstc()) {   /* we got a key press   */
                                abort  = 1;     /* don't auto boot      */
                                bootdelay = 0;  /* no more delay        */
# ifdef CONFIG_MENUKEY
                                menukey = getc();
# else
                                (void) getc();  /* consume input        */
# endif
                                break;
                        }
                        //udelay(10000);                            //默认延时10ms
                        udelay(10);                                 //ABING,修改为10us,加上循环就是100X10us=1ms
                }

                printf("\b\b\b%2d ", bootdelay);
        }


阅读(3242) | 评论(0) | 转发(0) |
0

上一篇:U-Boot引导内核的参数

下一篇:Boot过程显示

给主人留下些什么吧!~~