[U-Boot] boot-up time optimization. Where to start?

Detlev Zundel
2011-05-02T16:19:24Z

Hi Alexander,

[...]

>> > Ok, let me be more precise on this.
>> > We used U-Boot v2010.09 on a custom board running on an I.MX35 (ARM1136).
>> > We noticed the following code snippet took relatively long.
>> >
>> >>From common/console.c in console_init_r(void):
>> >> /* Setting environment variables */
>> >> for (i = 0; i < 3; i++) {
>> >>
>> >> setenv(stdio_names[i], stdio_devices[i]->name);
>> >>
>> >> }
>> >
>> > We added PIN toggling around this part of code and measured something
>> > >100ms. A collegue said it was ~100ms, I remembered ~500ms. Dunno who is
>> > right.
>>
>> It doesn't really matter who is right - 100ms is way off for setting
>> these variables. Looking into common/cmd_nvedit.c, these variables have
>> a special handling and there are ifdef's involved, so its not
>> straightforward to read. You should really find out, where in there the
>> time is spent for your board and fix the problem ;)
>
> Our 'fix' was removing the stated lines at all.

That is not a fix but simply ignoring a problem. Maybe if you find out
why these lines have such an unexpected run-time, you will solve more
problems also.

We have a mantra here on the mailing list, so let me introduce you to
it:

Solve the problems one by one in the order that you encounter them.
Every ignored problem will come back later and catch you. Really, it
will.

Now repeat after me ;)

Cheers
Detlev

--
There is no need to be rigid in carrying out policies about what changes
to install. To do a good job of maintaining Emacs doesn't require acting
like government bureaucrats.
-- Richard Stallman <E1MIx3Y-0005iZ-OH@fencepost.gnu.org>
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de