[U-Boot] [RFC] Two sets of experimental Kconfig patches
Masahiro Yamada
yamada.m at jp.panasonic.com
Tue Jun 24 12:24:26 CEST 2014
Hi Tom,
On Fri, 30 May 2014 13:24:08 -0400
Tom Rini <trini at ti.com> wrote:
> On Tue, May 27, 2014 at 04:32:50PM +0900, Masahiro Yamada wrote:
>
> > Hi.
> >
> > I've posted two sets of Kconfig RFC patches: "RFCv2a" and "RFCv2b"
>
> These are all certainly some thought experiments worth pursuing, so
> thanks for taking the time.
>
> >
> > The difference from v1 is that
> > Full U-boot image, SPL and TPL share a single defconfig
> > and "make config" is done in one-shot.
> >
> > This approach dates back to Simon's following comments:
> >
> > On Thu, 20 Mar 2014 19:15:30 -0700
> > Simon Glass <sjg at chromium.org> wrote:
> >
> > > > But, our situation is a little more complicated.
> > > > We need to generate 3 images at most: main image, SPL and TPL.
> > > > And each of them can have a different set of CONFIGs.
> > > >
> > > > For example, we can describe a board header file like this:
> > > >
> > > > #if defined(CONFIG_TPL_BUILD)
> > > > # define CONFIG_FOO 100
> > > > #elif defined(CONFIG_SPL_BUILD)
> > > > # define CONFIG_FOO 50
> > > > #else
> > > > # define CONFIG_FOO 10
> > > > # define CONFIG_BAR
> > > > #endif
> > >
> > > I wonder if we should drop this, and require that all have the same
> > > options? That would involve requiring that board config files are not
> > > permitted to use #ifdef CONFIG_SPL or #ifdef CONFIG_TPL.
> > >
> > > Does that seem like a bad restriction? The advantage is that we only
> > > need one defconfig for each board. It seems to me that things are
> > > going to get really painful if we have three different configs.
> > >
> > > Of course, this doesn't preclude #ifdefs in the Makefiles or actual
> > > source code, but we already have SPL-specific feature options.
> > >
> > > I'm not 100% clear on the constraints here.
> >
> >
> > In my opition, this approach might work, but will be painful.
> >
> > Anyway I just wanted to see what would happen
> > if multiple binary images had a single defconfig in common.
> >
> > We will have to duplicate many configs with CONFIG_SPL_
> > and CONFIG_TPL_ prefixes.
> >
> > For example,
> > - CONFIG_SYS_TEXT_BASE (text base for the full image)
> > - CONFIG_SPL_TEXT_BASE (text base for SPL)
> > - CONFIG_TPL_TEXT_BASE (text base for TPL)
> >
> > - CONFIG_OF_CONTROL (enables OF control for the full image)
> > - CONFIG_SPL_OF_CONTROL (enables OF control for SPL)
> > - CONFIG_TPL_OF_CONTROL (enables OF control for TPL)
> >
> > Probably I will not adopt this approach, but your comments
> > are welcome.
>
> The biggest pro I see with this approach is that we don't add more
> complication to the process. I often run into "why does make board_name
> not work?". However, this will also prevent us from doing some of the
> cleanup and restructuring that we need to do. There's too much
> duplicated code between SPL/TPL and "normal" U-Boot that we want to fix.
> And there are times where a much smaller but more "normal" U-Boot-as-SPL
> would be handy. I think in the long run we need to live with this
> "problem". Perhaps we can come up with a little Makefile-magic along
> the lines of a fullconfig_fooboard rule that would:
> mkdir fooboard
> if exists fooboard_spl_config, make O=fooboard/spl fooboard_spl_config
> if exists fooboard_tpl_config, make O=fooboard/tpl fooboard_tpl_config
> make O=fooboard/main fooboard_config
>
> And maybe throw an 'all' in after the config target, maybe not.
I have posted v3.
In v3, I added CONFIG_SUBIMAGES for "generic" sub-image framework.
It takes the form of:
CONFIG_SUBIMAGES="img1_output_dir:img1_defconfig,img2_output_dir:img2_defconfig"
If it is defined the "main" U-Boot,
it also does "make defconfig" based on img1_defconfig and create img1_output/.config etc.
For instance, configs/C29XPCIE_NAND_defconfig has
CONFIG_SUBIMAGES="spl:C29XPCIE_NAND_spl_defconfig,tpl:C29XPCIE_NAND_tpl_defconfig"
We are still depending on the SPL/TPL framework ( = CONFIG_SPL, CONFIG_TPL,
CONFIG_SPL_BUILD, CONFIG_TPL_BUILD).
But I think it worth refactoring code to rip off them sometime.
Best Regards
Masahiro Yamada
More information about the U-Boot
mailing list