[U-Boot] BSS footprint of FAT very high - SPL issues

Albert ARIBAUD albert.aribaud at free.fr
Tue Feb 1 08:04:45 CET 2011


Le 01/02/2011 06:23, Aneesh V a écrit :
> Dear Wolfgang,
>
> I had been working on creating an MMC SPL for OMAP4. OMAP boards
> typically support booting from the FAT partition of a removable SD/MMC
> card. So, we need to have FAT support in the SPL. But I am having some
> difficulties in adding FAT support to SPL.
>
> BSS footprint of fat.c is very high. It has three buffers each of size
> 64KB. To workaround this problem I have done something like below(The
> way x-loader works around this problem today).
> CONFIG_SYS_SPL_FAT_BUFFER_BASE is in SDRAM.Is this ok?
>
> Also, I was wondering why we need 3 such scratch buffers in this
> implementation. I do not understand this code. But I was wondering if we
> could work with just one 64K buffer?
>
> ---
> +#ifdef CONFIG_PRELOADER
> +__u8 *get_vfatname_block = (__u8 *)CONFIG_SYS_SPL_FAT_BUFFER_BASE;
> +#else
>    __attribute__ ((__aligned__ (__alignof__ (dir_entry))))
>    __u8 get_vfatname_block[MAX_CLUSTSIZE];
> +#endif
>
> .
> .
> .
>
> +#ifdef CONFIG_PRELOADER
> +__u8 *get_dentfromdir_block = (__u8 *)CONFIG_SYS_SPL_FAT_BUFFER_BASE +
> +                               MAX_CLUSTSIZE;
> +#else
>    __attribute__ ((__aligned__ (__alignof__ (dir_entry))))
>    __u8 get_dentfromdir_block[MAX_CLUSTSIZE];
> +#endif
> +

I'd like to make sure I understand the issue. Do these three BSS 
variables occupy space in the U-Boot binary? If they do, then *that* 
must be fixed rather than allocating a fixed address for them. In ARM 
achitectures, the linker file makes sure the BSS is at the end of the 
image and is not loadable, so the ELF to bin conversion just skips them. 
Maybe the linker file you're using here does not do this?

> Best regards,
> Aneesh

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list