[U-Boot] [PATCH] ARM: atmel: at91sam9m10g45ek: enable SPL
Heiko Schocher
hs at denx.de
Fri Jan 16 12:35:55 CET 2015
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>
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! 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 ...
bye,
Heiko
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
More information about the U-Boot
mailing list