[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