[U-Boot] [PATCH] omap3: Reduce logic/overo SPL max image size
Derald Woods
woods.technical at gmail.com
Tue May 3 20:37:41 CEST 2016
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...
Derald
>
> As this will allow for boards to bring themselves to the maximum binary
>> size for GP parts on OMAP3. It's too late in the release cycle and
>> needs broad testing, but giving it a whirl on omap3_logic would be a
>> good start. Next, are you also using falcon mode? FAT and EXT2/3/4 fs
>> support?
>>
>> Part of the problem is that the defaults bring in a lot of wide ranging
>> support right now and we need to move things to Kconfig to make it easy
>> to turn those things off. The various partition table types shouldn't
>> be too hard to migrate and for moving all Kconfigs, I'm just going to do
>> that since there can be a bit of churn that makes those patches hard to
>> apply.
>>
>> Thanks!
>>
>>
>
--
Derald D. Woods
More information about the U-Boot
mailing list