[U-Boot-Users] Compile-time flash dependencies (was: PATCH: RPXlite configuration fixes)

Yuli Barcohen yuli at arabellasw.com
Tue Jun 7 09:49:54 CEST 2005


>>>>> Wolfgang Denk writes:

    Yuli> It's what I'm trying to do. I'd like to clarify "increasing
    Yuli> the code size" concern which appears from time to time on the
    Yuli> list. As we all know, U-Boot occupies entire flash sector (or
    Yuli> several sectors). So, IMHO, if the increase does not require
    Yuli> additional sector, the increase

    Wolfgang> You assume that there is flash on a board. There are
    Wolfgang> boards which use a 128 kB ROM, and still are able to use a
    Wolfgang> decent set of features.  Of course this requires
    Wolfgang> optimization, and omitting some stuff. It's not a matter
    Wolfgang> of using an additional sector or not, it's as simple as
    Wolfgang> works or does not work.

But we're discussing only "environment in flash" case. All the rest is
unchanged. The CFG_ENV_SECT_SIZE is relevant for flash only, isn't it?
Also, if CFG_ENV_SECT_SIZE is defined, the existing mechanism will
work. I'd suggest any changes only for the case when CFG_ENV_SECT_SIZE
is undefined so the programmer always can chose between compile-time and
run-time approaches.

    Yuli> should not be a problem. Even if you're concerned about RAM
    Yuli> size, I'm not sure U-Boot size can be an issue. In most cases,
    Yuli> there is at least 8MB of RAM, so if U-Boot is 170K or 200K
    Yuli> should not make any difference. I personally never had such an
    Yuli> issue with our customers. In

    Wolfgang> I do, and I will strictly look at the code size. The rules
    Wolfgang> are well known.

    Yuli> cases when such a difference is critical, current method
    Yuli> (compile-time CFG_ENV_SECT_SIZE) can be used. In any case, I
    Yuli> believe that run-time vs compile-time code size difference can
    Yuli> be 2-3K in the worst case.

    Wolfgang> Maybe. Then it's 2-3k which can be saved, and shall be
    Wolfgang> saved.

So look at the saveenv code (in common/env_flash.c). The following
definition:

#if defined(CFG_ENV_SECT_SIZE) && (CFG_ENV_SECT_SIZE > CFG_ENV_SIZE)
	ulong	flash_offset;
	uchar	env_buffer[CFG_ENV_SECT_SIZE];
#else

allocates CFG_ENV_SECT_SIZE bytes on stack, in many cases this is
256KB. So we don't care for RAM data size but fight for every byte of
code size? Anyway, nobody is forced to use new mechanism if and when I
develop it. Also, I see no reason why U-Boot should be less convenient
or less flexible than, say, PlanetCore.

Unrelated question, also regarding the environment. It looks like
CFG_ENV_IS_EMBEDDED is unnecessary because ENV_IS_EMBEDDED is calculated
and used. What do you think?

-- 
========================================================================
 Yuli Barcohen       | Phone +972-9-765-1788 |  Software Project Leader
 yuli at arabellasw.com | Fax   +972-9-765-7494 | Arabella Software, Israel
========================================================================





More information about the U-Boot mailing list