[U-Boot] SPL framework re-design

Wolfgang Denk wd at denx.de
Mon Jun 27 11:27:28 CEST 2011


Dear Aneesh,

In message <4E0804DC.8090805 at ti.com> you wrote:
>
> >> +spl:	$(TIMESTAMP_FILE) $(VERSION_FILE) depend
> >> +	$(MAKE) -C spl/ all
> >> +
> >>    $(obj)mmc_spl/u-boot-mmc-spl.bin:	mmc_spl
> >
> > The mmc_spl/ is suppoed to be moved into spl/, isn't it?
> 
> This patch was intended only as a prototype for the new directory
> structure. I didn't bother to touch the existing stuff.

I see.

> >> --- /dev/null
> >> +++ b/spl/Makefile
> >> @@ -0,0 +1,94 @@
> >> +#
> >> +# (C) Copyright 2011 Daniel Schwierzeck, daniel.schwierzeck at googlemail.com.
> >
> > Really???
> 
> I copied Daniel's Makefile and started from there.

I guess the only real part that was left from the old file is the GPL
header...

> > As Mike mentioned, we can eventually directly include the OBJSs here
> > and omit the building of libraries?
> 
> I can't seem to find a mail from Mike on this thread. Did I miss any
> mail?

I can find it either.  I don't know what I had in mind then.

> Do you mean re-using equivalent libraries from the normal U-Boot
> without re-compiling them?

There are actually two different topics here:

- The first is how to link all the objects in the spl/ tree together.
  As I understand, you proposal was to link all objects in each of the
  subdirectories into a library, and then link all the libraries
  together.

  Instead of doing this, we could as well just maintain a list of
  objects and then link all these together directly, without creating
  libraries first.

- The other topic is if to build new object files, and where.  At the
  moment we have two situations:

  * Some files are built with special options such that unneeded code
    gets commented out using respecive #ifdef's / #ifndef's.  We can
    probably get rid of (most of ?) these #ifdef's / #ifndef's when
    properly using -ffunction-sections / --gc-sections

    Why should we then recompile the code?

  * Some files (start.S) really need different code.  Here the
    questions is more how and where to recompile using proper options.
    I would be glad if we could get rid of the symlinking.  Maybe we
    can add respective build rules to the original Makefiles (see also
    proposal by Ilya,
    http://article.gmane.org/gmane.comp.boot-loaders.u-boot/102033 ),
    eventually just using a different suffix, say ".splo" instead of
    ".o"?

> > allow for vendor directories (where "BOARDDIR = $(VENDOR)/$(BOARD)").
> 
> I didn't want to make the directory structure any longer than required.
> But I can add this if required.

It will be needed.

> > Hm... can we try to do without the symlinks?
> 
> Well. I think it's difficult. Most of my hardware initialization such
> as clock init, SDRAM init etc need to know under what context it
> is getting executed. The context can be:
> 1. SPL
> 2. Regular U-Boot executing from NOR flash
> 3. Regular U-Boot executing from SDRAM
> etc.

Agreed - we need another, independent set of object files.  But cannot
we create these in the existent source tree?

> If you want to do away with symlinks, I would propose going with
> Daniel's approach. This uses /spl as a remote building directory, but
> do not create any symlinks.

Yes, this is an improvement over the current situation - but Ilya's
question is a good one: why do we need the pl/ subtree in the first
place?


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"You shouldn't make my toaster angry." - Household security explained
in "Johnny Quest"


More information about the U-Boot mailing list