[U-Boot] [PATCH 4/4] davinci: omapl138-lcdk: enable driver-model in SPL

Bartosz Golaszewski brgl at bgdev.pl
Wed May 29 13:23:03 UTC 2019


śr., 29 maj 2019 o 15:04 Adam Ford <aford173 at gmail.com> napisał(a):
>
> On Wed, May 29, 2019 at 4:40 AM Bartosz Golaszewski <brgl at bgdev.pl> wrote:
> >
> > wt., 28 maj 2019 o 17:05 Adam Ford <aford173 at gmail.com> napisał(a):
> > >
> > > On Tue, May 28, 2019 at 2:58 AM Bartosz Golaszewski <brgl at bgdev.pl> wrote:
> > > >
> > > > From: Bartosz Golaszewski <bgolaszewski at baylibre.com>
> > > >
> > > > Enable CONFIG_SPL_DM and enable the driver model for serial by defining
> > > > an appropriate device in the board file for da850-lcdk.
> > > >
> > > > Signed-off-by: Bartosz Golaszewski <bgolaszewski at baylibre.com>
> > > > ---
> > > >  board/davinci/da8xxevm/omapl138_lcdk.c | 16 ++++++++++++++++
> > > >  configs/omapl138_lcdk_defconfig        |  5 +++++
> > > >  2 files changed, 21 insertions(+)
> > > >
> > > > diff --git a/board/davinci/da8xxevm/omapl138_lcdk.c b/board/davinci/da8xxevm/omapl138_lcdk.c
> > > > index 156d61d9fb..b20747ba01 100644
> > > > --- a/board/davinci/da8xxevm/omapl138_lcdk.c
> > > > +++ b/board/davinci/da8xxevm/omapl138_lcdk.c
> > > > @@ -15,6 +15,8 @@
> > > >  #include <asm/arch/hardware.h>
> > > >  #include <asm/ti-common/davinci_nand.h>
> > > >  #include <asm/io.h>
> > > > +#include <ns16550.h>
> > > > +#include <dm/platdata.h>
> > > >  #include <linux/errno.h>
> > > >  #include <asm/mach-types.h>
> > > >  #include <asm/arch/davinci_misc.h>
> > > > @@ -369,3 +371,17 @@ int board_mmc_init(bd_t *bis)
> > > >  }
> > > >  #endif
> > > >  #endif
> > > > +
> > > > +#ifdef CONFIG_SPL_BUILD
> > > > +static const struct ns16550_platdata serial_pdata = {
> > > > +       .base = DAVINCI_UART2_BASE,
> > > > +       .reg_shift = 2,
> > > > +       .clock = 228000000,
> > > > +       .fcr = UART_FCR_DEFVAL,
> > > > +};
> > > > +
> > > > +U_BOOT_DEVICE(omapl138_uart) = {
> > > > +       .name = "ns16550_serial",
> > > > +       .platdata = &serial_pdata,
> > > > +};
> > > > +#endif
> > > > diff --git a/configs/omapl138_lcdk_defconfig b/configs/omapl138_lcdk_defconfig
> > > > index b375da50df..f53a51321c 100644
> > > > --- a/configs/omapl138_lcdk_defconfig
> > > > +++ b/configs/omapl138_lcdk_defconfig
> > > > @@ -33,10 +33,13 @@ CONFIG_CMD_MTDPARTS=y
> > > >  CONFIG_CMD_DIAG=y
> > > >  CONFIG_CMD_UBI=y
> > > >  CONFIG_OF_CONTROL=y
> > > > +CONFIG_SPL_OF_CONTROL=y
> > >
> > > If SPL_OF_CONTROL is being added, why do you need to manually add the
> > > stuff above for the serial port?  Checkout the da850-evm-u-boot.dtsi
> > > file.  I adds the device tree entries for the serial port to appear in
> > > the SPL DTB.
> > >
> > > See http://git.denx.de/?p=u-boot.git;a=commit;h=f7c1d53605d9ec528abacda9ba1763c67221fc88
> > >
> >
> > I tried to follow the example from this patch but for some reason
> > adding u-boot,dm-spl; to the soc at 1c00000 node in
> > da850-lcdk-u-boot.dtsi results in the final image being reported as
> > corrupted by the aisimage tool:
> >
> > [...]
> >   COPY    spl/u-boot-spl.dtb
> >   CC      spl/common/spl/spl.o
> >   LD      spl/common/spl/built-in.o
> >   CC      spl/lib/display_options.o
> >   LD      spl/lib/built-in.o
> >   LD      spl/u-boot-spl
> >   OBJCOPY spl/u-boot-spl-nodtb.bin
> >   CAT     spl/u-boot-spl-dtb.bin
> >   COPY    spl/u-boot-spl.bin
> >   MKIMAGE spl/u-boot-spl.ais
> > Error: -  AIS Image corrupted
> >   CAT     u-boot.ais
> >   CFGCHK  u-boot.cfg
> >
> > The image doen't boot (or at least there's nothing on the console).
> >
> > I'm not sure what's causing it. Any idea?
>
> I got the same 'AIS Image corrupted' message if the SPL + DTB image is
> too large.
>
> I enabled SPL_SYS_MALLOC_SIMPLE along with USE_TINY_PRINTF reduced my code size:
> (see commit c4fa049a121457ff38b74daac32e18d7afbd4538)
>     Original:
>       text    data     bss     dec     hex filename
>       20760    1216      80   22056    5628 spl/u-boot-spl
>
>     Tiny Printf
>        text    data     bss     dec     hex filename
>       17947    1216      80   19243    4b2b spl/u-boot-spl
>
>     Malloc Simple + Tiny Printf
>        text    data     bss     dec     hex filename
>       15187     176      28   15391    3c1f spl/u-boot-spl
>
> I think you can also setup CONFIG_SPL_SYS_THUMB_BUILD to also reduce
> size.  The DA850 evm has that and CONFIG_SYS_THUMB_BUILD set to shrink
> U-Boot.
> I just ran some checks and disabling CONFIG_SPL_SYS_THUMB_BUILD makes
> the u-boot-spl file overflow the space requirements.  With it enabled,
> it builds
>   text    data     bss     dec     hex filename
> 24356    1144      24   25524    63b4 spl/u-boot-spl
>
> For U-Boot proper, the difference between CONFIG_SYS_THUMB_BUILD and
> not using it is
>
> with CONFIG_SYS_THUMB_BUILD
>    text    data     bss     dec     hex filename
>  324147   19700   58256 402103   622b7 u-boot
>
> (not using it)
>    text    data     bss     dec     hex filename
>  423167   19700   58248 501115   7a57b u-boot
>

Even with THUMB and other code shrinking options I still get the same
error. In fact I even disabled MMC support in SPL just to see if it'll
work and I still get the same error despite the size of the resulting
SPL image being well within limit:

   text    data     bss     dec     hex filename
  19269    3692    1368   24329    5f09 spl/u-boot-spl

as opposed to

   text    data     bss     dec     hex filename
  27766    4008    1368   33142    8176 spl/u-boot-spl

with MMC in SPL.

Also this error pops up only when extending the soc node of the device
tree. If I do this:

/ {
    aliases {
        i2c0 = &i2c0;
    };

    foo {
        compatible = "foo";
    };

    bar {
        compatible = "bar";
    };
};

It builds fine. I think the culprit is somewhere else here.

Bart

> So the size is about 25% smaller with it enabled.
>
> Unrelated to size, but something you want to consider is to increase
> your available malloc pool size to accommodate the device tree stuff
> once you've managed to shrink the code.  For da850evm,
> SPL_SYS_MALLOC_F_LEN = 0x800
>
> adam
>
> >
> > Bart
> >
> > >
> > > >  CONFIG_DEFAULT_DEVICE_TREE="da850-lcdk"
> > > > +CONFIG_SPL_OF_PLATDATA=y
> > > >  CONFIG_ENV_IS_IN_NAND=y
> > > >  CONFIG_NET_RANDOM_ETHADDR=y
> > > >  CONFIG_DM=y
> > > > +CONFIG_SPL_DM=y
> > > >  CONFIG_DM_I2C=y
> > > >  CONFIG_DM_I2C_COMPAT=y
> > > >  CONFIG_SYS_I2C_DAVINCI=y
> > > > @@ -53,8 +56,10 @@ CONFIG_SPI_FLASH_STMICRO=y
> > > >  CONFIG_SPI_FLASH_WINBOND=y
> > > >  CONFIG_MII=y
> > > >  CONFIG_DRIVER_TI_EMAC=y
> > > > +CONFIG_SPECIFY_CONSOLE_INDEX=y
> > > >  CONFIG_DM_SERIAL=y
> > > >  CONFIG_SYS_NS16550=y
> > > >  CONFIG_SPI=y
> > > >  CONFIG_DAVINCI_SPI=y
> > > >  CONFIG_USE_TINY_PRINTF=y
> > > > +# CONFIG_SPL_OF_LIBFDT is not set
> > > > --
> > > > 2.21.0
> > > >


More information about the U-Boot mailing list