From: Andreas Dannenberg <dannenberg@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC 06/11] armV7R: K3: am654: Allow using SPL BSS pre-relocation
Date: Thu, 16 May 2019 15:54:49 -0500 [thread overview]
Message-ID: <20190516205454.22150-7-dannenberg@ti.com> (raw)
In-Reply-To: <20190516205454.22150-1-dannenberg@ti.com>
In order to be able to use more advanced driver functionality which often
relies on having BSS initialized during early boot prior to relocation
several things need to be in place:
1) Memory needs to be available for BSS to use. For this, we locate BSS
at the top of the MCU SRAM area, with the stack starting right below
it,
2) We need to zero-initialize BSS ourselves which will we do during
board_init_f(),
3) We would also like to skip the implicit zero-initialization as part of
SPL relocation, so that already initialized variables will carry over
post-relocation. We will do this with a separate commit by turning on
the respective CONFIG option.
In this commit we also clean up the assignment of the initial SP address
as part of the refactoring, taking into account the pre-decrement post-
increment nature in which the SP is used on ARM.
Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
---
arch/arm/mach-k3/am6_init.c | 7 +++++++
include/configs/am65x_evm.h | 25 +++++++++++++++++++++++--
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-k3/am6_init.c b/arch/arm/mach-k3/am6_init.c
index 60a580305d..22477efa5b 100644
--- a/arch/arm/mach-k3/am6_init.c
+++ b/arch/arm/mach-k3/am6_init.c
@@ -78,6 +78,13 @@ void board_init_f(ulong dummy)
#ifdef CONFIG_CPU_V7R
setup_k3_mpu_regions();
+
+ /*
+ * When running SPL on R5 we are using SRAM for BSS to have global
+ * data etc. working prior to relocation. Since this means we need
+ * to self-manage BSS, clear that section now.
+ */
+ memset(__bss_start, 0, __bss_end - __bss_start);
#endif
/* Init DM early in-order to invoke system controller */
diff --git a/include/configs/am65x_evm.h b/include/configs/am65x_evm.h
index b043bf886b..cff60a8444 100644
--- a/include/configs/am65x_evm.h
+++ b/include/configs/am65x_evm.h
@@ -19,6 +19,29 @@
#define CONFIG_SYS_SDRAM_BASE1 0x880000000
/* SPL Loader Configuration */
+#ifdef CONFIG_TARGET_AM654_A53_EVM
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SPL_TEXT_BASE + \
+ CONFIG_SYS_K3_NON_SECURE_MSRAM_SIZE)
+#else
+/*
+ * Maximum size in memory allocated to the SPL BSS. Keep it as tight as
+ * possible (to allow the build to go through), as this directly affects
+ * our memory footprint. The less we use for BSS the more we have available
+ * for everything else.
+ */
+#define CONFIG_SPL_BSS_MAX_SIZE 0x5000
+/*
+ * Link BSS to be within SPL in a dedicated region located near the top of
+ * the MCU SRAM, this way making it available also before relocation. Note
+ * that we are not using the actual top of the MCU SRAM as there is a memory
+ * location filled in by the boot ROM that we want to read out without any
+ * interference from the C context.
+ */
+#define CONFIG_SPL_BSS_START_ADDR (CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX -\
+ CONFIG_SPL_BSS_MAX_SIZE)
+/* Set the stack right below the SPL BSS section */
+#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SPL_BSS_START_ADDR
+#endif
#ifdef CONFIG_SYS_K3_SPL_ATF
#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "tispl.bin"
@@ -29,8 +52,6 @@
#endif
#define CONFIG_SPL_MAX_SIZE CONFIG_SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE
-#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SPL_TEXT_BASE + \
- CONFIG_SYS_K3_NON_SECURE_MSRAM_SIZE - 4)
#define CONFIG_SYS_BOOTM_LEN SZ_64M
--
2.17.1
next prev parent reply other threads:[~2019-05-16 20:54 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-16 20:54 [U-Boot] [RFC 00/11] SYSFW Loader for TI K3 family SoCs using FS Loader Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 01/11] mmc: k3_arasan: Allow driver to probe without PDs specified Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 02/11] spl: Allow skipping clearing BSS during relocation Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 03/11] spl: mmc: Export function to get device index Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 04/11] misc: fs_loader: Allow initializing blkdev using platform data Andreas Dannenberg
2019-05-21 5:40 ` Chee, Tien Fong
2019-05-21 18:37 ` dannenberg at ti.com
2019-05-16 20:54 ` [U-Boot] [RFC 05/11] arm: K3: Introduce System Firmware loader framework Andreas Dannenberg
2019-05-21 5:21 ` Chee, Tien Fong
2019-05-21 18:42 ` dannenberg at ti.com
2019-05-21 5:41 ` Chee, Tien Fong
2019-05-16 20:54 ` Andreas Dannenberg [this message]
2019-05-16 20:54 ` [U-Boot] [RFC 07/11] armv7R: K3: am654: Use full malloc implementation in SPL Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 08/11] armV7R: K3: am654: Load SYSFW binary and config from boot media Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 09/11] armv7R: dts: k3: am654: Update for loading SYSFW from MMC Andreas Dannenberg
2019-05-21 5:40 ` Chee, Tien Fong
2019-05-21 18:53 ` dannenberg at ti.com
2019-05-16 20:54 ` [U-Boot] [RFC 10/11] configs: am65x_evm_r5: All sysfw to be loaded via MMC Andreas Dannenberg
2019-05-16 20:54 ` [U-Boot] [RFC 11/11] configs: am65x_hs_evm_r5: " Andreas Dannenberg
2019-05-17 11:24 ` [U-Boot] [RFC 00/11] SYSFW Loader for TI K3 family SoCs using FS Loader Tom Rini
2019-05-21 19:04 ` Andreas Dannenberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190516205454.22150-7-dannenberg@ti.com \
--to=dannenberg@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox