Patchwork [U-Boot] SPL binary too large for OMAP4460 OCM

login
register
mail settings
Submitter Lokesh Vutla
Date Sept. 4, 2013, 9:13 a.m.
Message ID <5226F9CD.6060306@ti.com>
Download mbox | patch
Permalink /patch/272504/
State Not Applicable
Delegated to: Tom Rini
Headers show

Comments

Lokesh Vutla - Sept. 4, 2013, 9:13 a.m.
Hi,
On Wednesday 04 September 2013 02:34 PM, bin4ry wrote:
> Am 04.09.2013 10:56, schrieb Sricharan R:
>> On Wednesday 04 September 2013 02:18 PM, Michael Trimarchi wrote:
>>> Hi
>>>
>>> On Wed, Sep 4, 2013 at 10:44 AM, Sricharan R <r.sricharan@ti.com> wrote:
>>>> On Wednesday 04 September 2013 01:01 PM, bin4ry wrote:
>>>>> Hi everybody,
>>>>>
>>>>> I need to add functionality to the SPL code. I tried to implement in a
>>>>> memory-saving way, however, the SPL is about 45 kB after compilation. To
>>>>> get compilation working, I had to set CONFIG_SPL_MAX_SIZE to (45 *
>>>>> 1024). Now, the SPL as well as u-boot won't boot. After the device'
>>>>> (PandaBoard ES - OMAP4460) reset, nothing happens regarding it's output
>>>>> on terminal.
>>>>>
>>>>> My question: is it theoretically possible to to establish a successfully
>>>>> booting SPL with ~45 kB in size for this device? The device'
>>>>> on-chip-memory is 56kB so it could fit in there. If so, what needs to be
>>>>> configured / tuned to get it working? Are there any other features I
>>>>> could omit from the binary to make it smaller?
>>>>>
>>>>> Thanks a lot,
>>>>> -b
>>>>> _______________________________________________
>>>>> U-Boot mailing list
>>>>> U-Boot@lists.denx.de
>>>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>>>
>>>>  Do you have a Secure device or GP ?
>>>>
>>> if it is Pandaboard? No he has not. I have increased up to 40Kb and it
>>> works with serial boot and
>>> sdcard/emmc boot.
>>  Sorry i missed to read PANDA. So it is anyways GP.
>>  and you changed the CONFIG_SPL_TEXT_BASE as well right ?
>>
>> Regards,
>>  Sricharan
> First off, sorry for double-posting to this list.
> 
> No, the PandaBoard is no HS but a GP device.
> 
> This is my configuration:
> 
> /* Defines for SPL */
> #define CONFIG_SPL
> #define CONFIG_SPL_TEXT_BASE        0x40303000
> #define CONFIG_SPL_MAX_SIZE        (45 * 1024)
> #define CONFIG_SPL_STACK        LOW_LEVEL_SRAM_STACK
> 
> The MLO binary has 46094 Bytes. Actually I should have enough space
> (from 0x40300000 - 0x4030bfff -> ~49 kB). However, the device does not
> start. Right now I am reviewing the code to check, whether it is because
> of the code and not because of the size that makes u-boot does not start.
Just for testing you can try the following diff:
The start address where the Image is downloaded is changed
and now the max size is ~46KB.


Thanks and regards,
Lokesh
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>

Patch

diff --git a/arch/arm/include/asm/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h
index 3823a37..7c98360 100644
--- a/arch/arm/include/asm/arch-omap4/omap.h
+++ b/arch/arm/include/asm/arch-omap4/omap.h
@@ -109,7 +109,7 @@  struct s32ktimer {
  * Non-secure RAM starts at 0x40300000 for GP devices. But we keep SRAM_BASE
  * at 0x40304000(EMU base) so that our code works for both EMU and GP
  */
-#define NON_SECURE_SRAM_START	0x40304000
+#define NON_SECURE_SRAM_START	0x40300000
 #define NON_SECURE_SRAM_END	0x4030E000	/* Not inclusive */
 #define SRAM_SCRATCH_SPACE_ADDR	NON_SECURE_SRAM_START
 /* base address for indirect vectors (internal boot mode) */
diff --git a/include/configs/omap4_common.h b/include/configs/omap4_common.h
index e9f2383..5177313 100644
--- a/include/configs/omap4_common.h
+++ b/include/configs/omap4_common.h
@@ -250,8 +250,8 @@ 
 /* Defines for SPL */
 #define CONFIG_SPL
 #define CONFIG_SPL_FRAMEWORK
-#define CONFIG_SPL_TEXT_BASE		0x40304350
-#define CONFIG_SPL_MAX_SIZE		(38 * 1024)
+#define CONFIG_SPL_TEXT_BASE		0x40300000
+#define CONFIG_SPL_MAX_SIZE		0x4030C000 - CONFIG_SPL_TEXT_BASE
 #define CONFIG_SPL_STACK		CONFIG_SYS_INIT_SP_ADDR
 #define CONFIG_SPL_DISPLAY_PRINT