[U-Boot] [PATCH] omap3: Reduce logic/overo SPL max image size

Tom Rini trini at konsulko.com
Tue May 3 20:43:10 CEST 2016


On Tue, May 03, 2016 at 01:37:41PM -0500, Derald Woods wrote:
> On Sun, May 1, 2016 at 12:09 PM, Derald D. Woods <woods.technical at gmail.com>
> wrote:
> 
> > On 05/01/2016 08:58 AM, Tom Rini wrote:
> >
> >> On Sat, Apr 30, 2016 at 07:12:28PM -0500, Derald D. Woods wrote:
> >>
> >>> On 04/28/2016 06:34 PM, Tom Rini wrote:
> >>>
> >>>> On Thu, Apr 28, 2016 at 05:55:17PM -0500, Adam Ford wrote:
> >>>>
> >>>> I am hoping to look at this tomorrow at work. Any suggested toolchain
> >>>>> you
> >>>>> recommend?
> >>>>>
> >>>> gcc-4.9.x fails (too large), gcc-5.3.x succeeds, gcc-6.x is also likely
> >>>> fine but I haven't started using those SDKs I just made today.
> >>>>
> >>> Hi Tom,
> >>>
> >>> Using gcc-5.3.0, for 'omap3_logic', I get the following:
> >>>
> >>> ---8<------------------------------------------
> >>> arm-cortexa8-linux-gnueabihf-ld.bfd: u-boot-spl section `.data' will
> >>> not fit in region `.sram'
> >>> arm-cortexa8-linux-gnueabihf-ld.bfd: region `.sram' overflowed by 948
> >>> bytes
> >>> ---8<------------------------------------------
> >>>
> >> That's odd, 5.3.1 from debian/unstable works.
> >>
> >> I built the compiler today with crosstool-ng.
> >>>
> >>> gcc version 5.3.0 (crosstool-NG crosstool-ng-1.22.0-134-ge1d494a)
> >>>
> >>> What things could/should be removed, from the configuration, to
> >>> avoid these kinds of things in the future?
> >>>
> >>> I would expect that the default board configuration to be less
> >>> sensitive, in general. I guess I want to know what is the right size
> >>> for an OMAP3 with SPL enabled.
> >>>
> >>> Changing compilers, just for this, can cause quite a ripple on
> >>> projects and the products that are supported by them.
> >>>
> >> So, the first thing to do would be to please try the following patch:
> >>
> >> diff --git a/arch/arm/include/asm/arch-omap3/omap.h
> >> b/arch/arm/include/asm/arch-omap3/omap.h
> >> index bc0e02a..6cef323 100644
> >> --- a/arch/arm/include/asm/arch-omap3/omap.h
> >> +++ b/arch/arm/include/asm/arch-omap3/omap.h
> >> @@ -145,7 +145,7 @@ struct gpio {
> >>     #define NON_SECURE_SRAM_START               0x40208000 /* Works for
> >> GP & EMU */
> >>   #define NON_SECURE_SRAM_END           0x40210000
> >> -#define SRAM_SCRATCH_SPACE_ADDR                0x4020E000
> >> +#define SRAM_SCRATCH_SPACE_ADDR                0x4020F000
> >>     #define LOW_LEVEL_SRAM_STACK                0x4020FFFC
> >>   diff --git a/doc/SPL/README.omap3 b/doc/SPL/README.omap3
> >> index c77ca43..cc54afe 100644
> >> --- a/doc/SPL/README.omap3
> >> +++ b/doc/SPL/README.omap3
> >> @@ -33,8 +33,9 @@ SRAM: 0x40200000 - 0x4020FFFF
> >>   DDR1: 0x80000000 - 0xBFFFFFFF
> >>     Option 1 (SPL only):
> >> -0x40200800 - 0x4020BBFF: Area for SPL text, data and rodata
> >> -0x4020E000 - 0x4020FFFC: Area for the SPL stack.
> >> +0x40200800 - 0x4020EFFF: Area for SPL text, data and rodata
> >> +0x4020F000 - 0x4020FCAF: Area for scratch space (see OMAP_SRAM_SCRATCH*)
> >> +0x4020FCB0 - 0x4020FFFF: Area for the SPL stack
> >>   0x80000000 - 0x8007FFFF: Area for the SPL BSS.
> >>   0x80100000: CONFIG_SYS_TEXT_BASE of U-Boot
> >>   0x80208000 - 0x80307FFF: malloc() pool available to SPL.
> >> @@ -42,6 +43,7 @@ Option 1 (SPL only):
> >>   Option 2 (SPL or X-Loader):
> >>   0x40200800 - 0x4020BBFF: Area for SPL text, data and rodata
> >>   0x4020E000 - 0x4020FFFC: Area for the SPL stack.
> >> +0x4020F000 - 0x4020FCAF: Area for scratch space (see OMAP_SRAM_SCRATCH*)
> >>   0x80008000: CONFIG_SYS_TEXT_BASE of U-Boot
> >>   0x87000000 - 0x8707FFFF: Area for the SPL BSS.
> >>   0x87080000 - 0x870FFFFF: malloc() pool available to SPL.
> >> diff --git a/include/configs/omap3_logic.h b/include/configs/omap3_logic.h
> >> index 6c79643..ed03e07 100644
> >> --- a/include/configs/omap3_logic.h
> >> +++ b/include/configs/omap3_logic.h
> >> @@ -28,13 +28,11 @@
> >>   #define CONFIG_SYS_SPL_MALLOC_START   0x80208000
> >>   #define CONFIG_SYS_SPL_MALLOC_SIZE    0x100000
> >>   -#include <configs/ti_omap3_common.h>
> >>     /* Override default SPL info to minimize empty space and allow BCH8
> >> in SPL */
> >> -#undef CONFIG_SPL_TEXT_BASE
> >> -#undef CONFIG_SPL_MAX_SIZE
> >>   #define CONFIG_SPL_TEXT_BASE   0x40200000
> >> -#define CONFIG_SPL_MAX_SIZE    (SRAM_SCRATCH_SPACE_ADDR -
> >> CONFIG_SPL_TEXT_BASE)
> >> +
> >> +#include <configs/ti_omap3_common.h>
> >>     /* Display CPU and Board information */
> >>   diff --git a/include/configs/omap3_overo.h
> >> b/include/configs/omap3_overo.h
> >> index fbd0c2a..289c8e9 100644
> >> --- a/include/configs/omap3_overo.h
> >> +++ b/include/configs/omap3_overo.h
> >> @@ -10,11 +10,8 @@
> >>   #define CONFIG_NR_DRAM_BANKS  2       /* CS1 may or may not be
> >> populated */
> >>   #define CONFIG_NAND
> >>   -#include <configs/ti_omap3_common.h>
> >> -#undef CONFIG_SPL_MAX_SIZE
> >> -#undef CONFIG_SPL_TEXT_BASE
> >>   #define CONFIG_SPL_TEXT_BASE  0x40200000
> >> -#define CONFIG_SPL_MAX_SIZE    (SRAM_SCRATCH_SPACE_ADDR -
> >> CONFIG_SPL_TEXT_BASE)
> >> +#include <configs/ti_omap3_common.h>
> >>     #define CONFIG_BCH
> >>   diff --git a/include/configs/ti_omap3_common.h
> >> b/include/configs/ti_omap3_common.h
> >> index 32877d1..ffd695f 100644
> >> --- a/include/configs/ti_omap3_common.h
> >> +++ b/include/configs/ti_omap3_common.h
> >> @@ -68,9 +68,17 @@
> >>   /* TWL4030 */
> >>   #define CONFIG_TWL4030_POWER
> >>   -/* SPL */
> >> +/*
> >> + * For SPL we say that our text base is at 0x40200800 for compatibility
> >> + * with HS and GP devices.  We say that the maximum image size is the end
> >> + * of the downloaded image area minus the text base.  If desired the text
> >> + * base can be lowered by individual platforms but the upper bound is a
> >> + * hard limit.
> >> + */
> >> +#ifndef CONFIG_SPL_TEXT_BASE
> >>   #define CONFIG_SPL_TEXT_BASE          0x40200800
> >> -#define CONFIG_SPL_MAX_SIZE            (54 * 1024)
> >> +#endif
> >> +#define CONFIG_SPL_MAX_SIZE            (0x4020F000 -
> >> CONFIG_SPL_TEXT_BASE)
> >>   #define CONFIG_SPL_LDSCRIPT
> >>  "$(CPUDIR)/omap-common/u-boot-spl.lds"
> >>   #define CONFIG_SPL_POWER_SUPPORT
> >>   #define CONFIG_SYS_SPL_ARGS_ADDR      (CONFIG_SYS_SDRAM_BASE + \
> >> diff --git a/include/configs/ti_omap4_common.h
> >> b/include/configs/ti_omap4_common.h
> >> index 586d848..66592f0 100644
> >> --- a/include/configs/ti_omap4_common.h
> >> +++ b/include/configs/ti_omap4_common.h
> >> @@ -143,12 +143,14 @@
> >>         BOOTENV
> >>     /*
> >> - * Defines for SPL
> >> - * It is known that this will break HS devices. Since the current size of
> >> - * SPL is overlapped with public stack and breaking non HS devices to
> >> boot.
> >> - * So moving TEXT_BASE down to non-HS limit.
> >> + * For SPL we set our text base to the start of the download image area
> >> for GP
> >> + * devices.  HS devices will have to define this value instead.  We say
> >> that
> >> + * the maximum image size is the end of the downloaded image area minus
> >> the
> >> + * text base.
> >>    */
> >> +#ifndef
> >>   #define CONFIG_SPL_TEXT_BASE          0x40300000
> >> +#endif
> >>   #define CONFIG_SPL_MAX_SIZE           (0x4030C000 -
> >> CONFIG_SPL_TEXT_BASE)
> >>   #define CONFIG_SPL_DISPLAY_PRINT
> >>   #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"
> >>
> >
> > Okay. That patch allows compilation to complete successfully. But ...
> >
> > ---8<-----------------------------------------------------
> >
> > U-Boot SPL 2016.05-rc3-00012-gfccdb28-dirty (May 01 2016 - 11:50:16)
> > Trying to boot from MMC1
> > Expected Linux image is not found. Trying to start U-boot
> >
> > ---8<-----------------------------------------------------
> >
> > This is likely related to the "[U-Boot] spl_mmc: allow to load raw image"
> > thread that is being discussed now.
> >
> > My SD/MMC card is FAT on the first partition. The 'omap3_logic' board does
> > not use RAW MMC access. So MLO and u-boot.img are simply files on the FAT
> > filesystem.
> >
> > Derald
> >
> >
> 
> Tom,
> 
> Is this patch landing in this release? I saw another patch, for the same
> purpose, on another board applied. Just wondering...

No, this is too invasive as it changes the defaults for all OMAP3
platforms.  The other platform is just making use of the changes you've
already got on omap3_logic.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160503/8721e0cd/attachment.sig>


More information about the U-Boot mailing list