[U-Boot] [PATCH] ARM: atmel: at91sam9m10g45ek: enable SPL

Bo Shen voice.shen at atmel.com
Mon Jan 19 02:38:01 CET 2015


Hi Heiko,

On 01/16/2015 07:35 PM, Heiko Schocher wrote:
> Hello Bo
>
> Am 16.01.2015 03:53, schrieb Bo Shen:
>> Supports boot up from NAND flash with software ECC eanbled.
>> And supports boot up from SD/MMC card with FAT file system.
>>
>> As the boot from SD/MMC card with FAT file system, the BSS
>> segment is too big to fit into SRAM, so, use the lds to put
>> it into SDRAM. So, we need to initialize the SDRAM as soon
>> as possible. Borrow the low level init code from
>> <arm/arm/cpu/armv7/lowlevel_init.S> for this purpose.
>>
>> As there is a little change, which need lowlevel init, so
>> also change taurus board based on at91sam9260, corvus board
>> based on at91sam9g45.
>> (CONFIG_SPL_STACK is replaced by CONFIG_SYS_INIT_SP_ADDR)
>>
>> Signed-off-by: Bo Shen <voice.shen at atmel.com>
>> ---
>>
>>   arch/arm/Kconfig                                |  1 +
>>   arch/arm/cpu/arm926ejs/at91/Makefile            |  4 ++
>>   arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S | 37 ++++++++++++
>>   arch/arm/cpu/at91-common/spl_at91.c             |  7 +--
>>   arch/arm/cpu/at91-common/u-boot-spl-arm9.lds    | 48 +++++++++++++++
>>   board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 80
>> +++++++++++++++++++++++++
>>   configs/at91sam9m10g45ek_mmc_defconfig          |  5 +-
>>   configs/at91sam9m10g45ek_nandflash_defconfig    |  5 +-
>>   include/configs/at91sam9m10g45ek.h              | 65
>> ++++++++++++++++++++
>>   include/configs/corvus.h                        |  7 ++-
>>   include/configs/taurus.h                        |  7 ++-
>>   11 files changed, 256 insertions(+), 10 deletions(-)
>>   create mode 100644 arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
>>   create mode 100644 arch/arm/cpu/at91-common/u-boot-spl-arm9.lds
>
> Acked-by: Heiko Schocher <hs at denx.de>

Thanks.

> but it does not boot on the corvus board ... please add this fix to
> your patch:
>
> diff --git a/include/configs/corvus.h b/include/configs/corvus.h
> index efc8ce5..dc25d95 100644
> --- a/include/configs/corvus.h
> +++ b/include/configs/corvus.h
> @@ -90,7 +90,7 @@
>   #define CONFIG_SYS_SDRAM_SIZE          0x08000000
>
>   #ifdef CONFIG_SPL_BUILD
> -#define CONFIG_SYS_INIT_SP_ADDR                0x310000
> +#define CONFIG_SYS_INIT_SP_ADDR                (16 * 1024)
>   #else
>   #define CONFIG_SYS_INIT_SP_ADDR \
>          (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE)
>
>
> Tested your patch also on the taurus board, there it boots fine!
>
> so, after you fixed the corvus board, you can add my:
> Tested-by: Heiko Schocher <hs at denx.de>

Thanks, I will add this fix into next version.

> Thanks! And one question ...
>
> [...]
>> diff --git a/arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
>> b/arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
>> new file mode 100644
>> index 0000000..f1b2ec9
>> --- /dev/null
>> +++ b/arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
>> @@ -0,0 +1,37 @@
>> +/*
>> + * A lowlevel_init function that sets up the stack to call a C
>> function to
>> + * perform further init.
>> + *
>> + * (C) Copyright 2010
>> + * Texas Instruments, <www.ti.com>
>> + *
>> + * Author :
>> + *    Aneesh V    <aneesh at ti.com>
>> + *
>> + * SPDX-License-Identifier:    GPL-2.0+
>> + */
>> +
>> +#include <asm-offsets.h>
>> +#include <config.h>
>> +#include <linux/linkage.h>
>> +
>> +ENTRY(lowlevel_init)
>> +    /*
>> +     * Setup a temporary stack
>> +     */
>> +    ldr    sp, =CONFIG_SYS_INIT_SP_ADDR
>
> Could we use here a new define (saying CONFIG_SYS_INIT_SP_LOWLEVEL)?
>
> Benefit would be, we can setup first the stack in sram, and after RAM
> init, which is done with your patch very early, we can set the stack
> with CONFIG_SYS_INIT_SP_ADDR into RAM!
>
> With using CONFIG_SYS_INIT_SP_ADDR here, the stack gets set twice
> to CONFIG_SYS_INIT_SP_ADDR ... I just try to get SPL on an atsam9260
> based board working with only 4k sram ... so it would be nice to
> have stack also optionally in RAM ... but we have problems with the
> debugger adapter on the board ... so I have to wait some more days to
> try this part ...

   This just for the at91sam9260 based boards, not for others. Or else, 
we also need to add this definition for other boards. Can you do the 
following check?

#ifdef CONFIG_SYS_INIT_SP_LOWLEVEL
	ldr	sp, =CONFIG_SYS_INIT_SP_LOWLEVEL
#else
	ldr	sp, =CONFIG_SYS_INIT_SP_ADDR
#endif

   If it is acceptable, can you add through your patches, as I my patch 
nowhere will use it.

> bye,
> Heiko

Best Regards,
Bo Shen



More information about the U-Boot mailing list