[U-Boot] [PATCH 1/2] imx8: Jump from alias to OCRAM address at SPL init

Oleksandr Suvorov oleksandr.suvorov at toradex.com
Fri Jul 12 11:20:00 UTC 2019


On Fri, 12 Jul 2019 at 12:34, Ye Li <ye.li at nxp.com> wrote:
>
> When running SPL on iMX8, the A core starts at address 0
> which is a alias to OCRAM 0x100000.
> The alias only map first 96KB of OCRAM, so this require the
> SPL size can't beyond 96KB. But when using SPL DM, the size increase
> significantly and may exceed 96KB.
> So to fix the problem, we will change SPL linker address to OCRAM
> address 0x100000. And then jump to the absolute address not the PC relative
> address for entering OCRAM.
>
> Signed-off-by: Ye Li <ye.li at nxp.com>

Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov at toradex.com>

> ---
>  arch/arm/Kconfig                       |  1 +
>  arch/arm/include/asm/arch-imx8/boot0.h | 21 +++++++++++++++++++++
>  2 files changed, 22 insertions(+)
>  create mode 100644 arch/arm/include/asm/arch-imx8/boot0.h
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 01ff57c..6ea21b7 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -755,6 +755,7 @@ config ARCH_IMX8
>         select ARM64
>         select DM
>         select OF_CONTROL
> +       select ENABLE_ARM_SOC_BOOT0_HOOK
>
>  config ARCH_IMX8M
>         bool "NXP i.MX8M platform"
> diff --git a/arch/arm/include/asm/arch-imx8/boot0.h b/arch/arm/include/asm/arch-imx8/boot0.h
> new file mode 100644
> index 0000000..5ce781a
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-imx8/boot0.h
> @@ -0,0 +1,21 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright 2019 NXP
> + */
> +
> +#if defined(CONFIG_SPL_BUILD)
> +       /*
> +        * We use absolute address not PC relative address to jump.
> +        * When running SPL on iMX8, the A core starts at address 0, a alias to OCRAM 0x100000,
> +        * our linker address for SPL is from 0x100000. So using absolute address can jump to
> +        * the OCRAM address from the alias.
> +        * The alias only map first 96KB of OCRAM, so this require the SPL size can't beyond 96KB.
> +        * But when using SPL DM, the size increase significantly and may exceed 96KB.
> +        * That's why we have to jump to OCRAM.
> +        */
> +
> +       ldr     x0, =reset
> +       br      x0
> +#else
> +       b       reset
> +#endif
> --
> 2.7.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot



-- 
Best regards
Oleksandr Suvorov

Toradex AG
Altsagenstrasse 5 | 6048 Horw/Luzern | Switzerland | T: +41 41 500
4800 (main line)


More information about the U-Boot mailing list