RFC: Support for U-Boot phases in Kconfig

Simon Glass sjg at chromium.org
Wed Aug 11 14:58:45 CEST 2021


Hi Grant,

On Wed, 11 Aug 2021 at 03:58, Grant Likely <grant.likely at secretlab.ca> wrote:
>
> On Mon, Aug 9, 2021 at 8:11 PM Tom Rini <trini at konsulko.com> wrote:
> >
> > On Sat, Aug 07, 2021 at 04:23:36PM -0600, Simon Glass wrote:
> > > Comments welcome!
> >
> > I think what this is really showing is that Yamada-san was right.  All
> > the games we need to do so that "make fooboard_config all" results in
> > building the N stages needed was the wrong track.  Taking
> > khadas-edge-v-rk3399 as an example, if we had instead of
> > khadas-edge-v-rk3399_defconfig but khadas-edge-v-rk3399_tpl_defconfig
> > khadas-edge-v-rk3399_spl_defconfig and khadas-edge-v-rk3399_config, each
> > of which could set CONFIG_TPL, CONFIG_SPL or neither.  Then yes, to
> > build u-boot-rockchip.bin you would need to pass in the separately build
> > TPL and SPL stages.  But, that's true of so so many other platforms.  To
> > pick another example, imx8mm_evk doesn't function without other
> > binaries.  If in theory to build khadas-edge-v-rk3399 you had to do
> > something like:
> > $ export CROSS_COMPILE=aarch64-linux-
> > $ make O=obj/tpl khadas-edge-v-rk3399_tpl_config all
> > $ make O=obj/spl khadas-edge-v-rk3399_spl_config all
> > $ make O=obj/khadas-edge-v-rk3399 TPL=obj/tpl/u-boot.bin \
> >     SPL=obj/spl/u-boot.bin khadas-edge-v-rk3399_config all
> >
> > But it also meant that we didn't need to duplicate so so many Kconfig
> > options and most of our obj rules would just be:
> > obj-$(CONFIG_FOO) += foo.o
> >
> > would be a win.
>
> Oh! I quite like this. Simpler indeed. With all the different
> components that need to be pulled in to build a bootable image, each
> of the various U-Boot stages would just be another configuration that
> needs to be built and included in the result.

Have you looked at binman? It is designed to put images together,
using the various U-Boot phases and anything else about.

>
> I've already been playing with a top level build tool that starts with
> the U-Boot config and chooses the correct configuration of TFA, OPTEE,
> and any other binaries needed. Basically it is a top level Makefile
> that includes the U-Boot config and then passes make targets through
> to the right build directories. This could effectively be the same
> thing; start with the board config, and then filter it when going into
> each stages build directory with O= as you have above.
>
> If you want to look I've got the repo published here:
>
> https://gitlab.arm.com/systemready/u-boot-tfa-build/
>
> g.


More information about the U-Boot mailing list