[U-Boot] [u-boot-release] [PATCH 2/3] armv8: ls1088a: SPL size reduction
York Sun
york.sun at nxp.com
Tue Aug 29 17:49:25 UTC 2017
On 08/29/2017 10:36 AM, Sumit Garg wrote:
>> -----Original Message-----
>> From: York Sun
>> Sent: Tuesday, August 29, 2017 9:25 PM
>> To: Sumit Garg <sumit.garg at nxp.com>; u-boot at lists.denx.de
>> Cc: Prabhakar Kushwaha <prabhakar.kushwaha at nxp.com>; Ruchika Gupta
>> <ruchika.gupta at nxp.com>
>> Subject: Re: [u-boot-release] [PATCH 2/3] armv8: ls1088a: SPL size reduction
>>
>> On 08/29/2017 12:02 AM, Sumit Garg wrote:
>>> Using changes in this patch we were able to reduce approx 8k size of
>>> u-boot-spl.bin image. Following is breif description of changes to
>>> reduce SPL size:
>>> 1. Changes in board/freescale/ls1088a/Makefile to remove
>>> compilation of eth.c and cpld.c in case of SPL build.
>>> 2. Changes in board/freescale/ls1088a/ls1088a.c to keep
>>> board_early_init_f funcations in case of SPL build.
>>> 3. Changes in ls1088a_common.h & ls1088ardb.h to remove driver
>>> specific macros due to which static data was being compiled in
>>> case of SPL build.
>>> 4. Enable CONFIG_SYS_DCACHE_OFF in case of SPL build as DCACHE is
>>> not being enabled in case of SPL image but was compiled in to
>>> add redundant code.
>>>
>>> Signed-off-by: Sumit Garg <sumit.garg at nxp.com>
>>> ---
>>>
>>> Dependent on ls1088 base SD boot target. Also dependent on ls1088 QPSI
>>> secure boot target.
>>>
>>> board/freescale/ls1088a/Makefile | 4 +++-
>>> board/freescale/ls1088a/ls1088a.c | 14 ++++++++------
>>> include/configs/ls1088a_common.h | 20 ++++++++++++++++++++
>>> include/configs/ls1088ardb.h | 20 ++++++++++++++++++++
>>> 4 files changed, 51 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/board/freescale/ls1088a/Makefile
>>> b/board/freescale/ls1088a/Makefile
>>> index bdcce9e..0e15031 100644
>>> --- a/board/freescale/ls1088a/Makefile
>>> +++ b/board/freescale/ls1088a/Makefile
>>> @@ -5,6 +5,8 @@
>>> #
>>>
>>> obj-y += ls1088a.o
>>> +obj-y += ddr.o
>>> +ifndef CONFIG_SPL_BUILD
>>> obj-$(CONFIG_TARGET_LS1088ARDB) += eth_ls1088ardb.o
>>> obj-$(CONFIG_TARGET_LS1088AQDS) += eth_ls1088aqds.o -obj-y += ddr.o
>>> +endif
>>> diff --git a/board/freescale/ls1088a/ls1088a.c
>>> b/board/freescale/ls1088a/ls1088a.c
>>> index 1860f9c..1c28ab4 100644
>>> --- a/board/freescale/ls1088a/ls1088a.c
>>> +++ b/board/freescale/ls1088a/ls1088a.c
>>> @@ -24,6 +24,13 @@
>>>
>>> DECLARE_GLOBAL_DATA_PTR;
>>>
>>> +int board_early_init_f(void)
>>> +{
>>> + fsl_lsch3_early_init_f();
>>> + return 0;
>>> +}
>>> +
>>> +#if !defined(CONFIG_SPL_BUILD)
>>> unsigned long long get_qixis_addr(void)
>>> {
>>> unsigned long long addr;
>>> @@ -324,12 +331,6 @@ int board_init(void)
>>> return 0;
>>> }
>>>
>>> -int board_early_init_f(void)
>>> -{
>>> - fsl_lsch3_early_init_f();
>>> - return 0;
>>> -}
>>> -
>>> void detail_board_ddr_info(void)
>>> {
>>> puts("\nDDR ");
>>> @@ -404,3 +405,4 @@ int ft_board_setup(void *blob, bd_t *bd)
>>> return 0;
>>> }
>>> #endif
>>> +#endif /* defined(CONFIG_SPL_BUILD) */
>>> diff --git a/include/configs/ls1088a_common.h
>>> b/include/configs/ls1088a_common.h
>>> index 63b69f8..fb4c852 100644
>>> --- a/include/configs/ls1088a_common.h
>>> +++ b/include/configs/ls1088a_common.h
>>> @@ -7,6 +7,20 @@
>>> #ifndef __LS1088_COMMON_H
>>> #define __LS1088_COMMON_H
>>>
>>> +/* SPL build */
>>> +#ifdef CONFIG_SPL_BUILD
>>> +#define SPL_NO_BOARDINFO
>>> +#define SPL_NO_QIXIS
>>> +#define SPL_NO_PCI
>>> +#define SPL_NO_ENV
>>> +#define SPL_NO_RTC
>>> +#define SPL_NO_USB
>>> +#define SPL_NO_SATA
>>> +#define SPL_NO_QSPI
>>> +#define SPL_NO_IFC
>>> +#define CONFIG_SYS_DCACHE_OFF
>>
>> How much space can you save with data cache off? I prefer to leave the cache
>> on. Cache is used if PPA is loaded in SPL stage for boost booting speed.
>>
>> York
>
> As we discussed earlier too, dcache was not enabled in SPL for our layerscape platforms.
That was a mistake when SPL targets were added. It should be enabled.
As I said, if you load PPA in SPL, cache will be enabled for EL2. You
didn't do it because booting performance is not a concern. If you enable
falcon boot, this is required.
>
> Also we do need more space (approx.. 6KB) on OCRAM for header. As currently we are only supporting
> single key in header (Max Size: 4KB) for validation. But actual use-case requires SRK table (8 keys) in
> header (Size: 10KB).
>
> Total Available OCRAM for SPL image and header: 88KB
>
> Current SPL image size with GCC 5.4.1 tool-chain: 84KB
> Current SPL header size with GCC 5.4.1 tool-chain: 4KB
>
> Required SPL header size with GCC 5.4.1 tool-chain: 10KB
>
> So we need to reduce SPL image size by 6KB more.
>
I understand the difficulty to fit secure boot into OCRAM. Please try
GCC 6. It has better optimization.
York
More information about the U-Boot
mailing list