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

Detlev Zundel
2011-05-02T15:31:15Z

Hi Alexander,

> Dear Wolfgang,
>
> Am Mittwoch, 27. April 2011, 21:08:50 schrieb Wolfgang Denk:
>> In message <201104271759.11818.alexander.stein@systec-electronic.com> you
> wrote:
>> > Setting stdin, stdout and stderr takes a lot of time (IIRC ~500ms). Which
>> > IMO is useless on a bootloader without LCD support.
>>
>> Statements like this are completely worhtless if you don;t tell
>> exactly on which architecture and board, and with which exact version
>> of U-Boot such numbers have been measured.
>
> 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 ;)

Cheers
Detlev

--
I can understand that things like user-level libraries have to take crazy people
into account, but the kernel internal libraries definitely do not.
-- Linus Torvalds
--
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