You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by pk...@apache.org on 2022/11/03 21:23:03 UTC
[incubator-nuttx] branch master updated: xtensa/esp32s2: Move linker scripts to folder common to all boards
This is an automated email from the ASF dual-hosted git repository.
pkarashchenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new a5d3a6b126 xtensa/esp32s2: Move linker scripts to folder common to all boards
a5d3a6b126 is described below
commit a5d3a6b1265c2abde1824d89741b08fac6c69ed1
Author: Lucas Saavedra Vaz <lu...@espressif.com>
AuthorDate: Thu Nov 3 14:16:23 2022 -0300
xtensa/esp32s2: Move linker scripts to folder common to all boards
---
boards/xtensa/esp32s2/common/scripts/.gitignore | 1 +
.../scripts/esp32s2_mcuboot.ld | 2 +-
.../scripts/esp32s2_memory.ld} | 17 +-
.../scripts/esp32s2_peripherals.ld | 2 +-
.../scripts/esp32s2_rom.ld | 4 +
.../scripts/esp32s2_sections.ld} | 14 +-
.../esp32s2/esp32s2-saola-1/scripts/.gitignore | 1 -
.../esp32s2/esp32s2-saola-1/scripts/Make.defs | 27 ++-
.../esp32s2-saola-1/scripts/esp32s2_iram.ld | 184 ---------------------
.../xtensa/esp32s2/esp32s2-saola-1/src/Make.defs | 17 --
10 files changed, 43 insertions(+), 226 deletions(-)
diff --git a/boards/xtensa/esp32s2/common/scripts/.gitignore b/boards/xtensa/esp32s2/common/scripts/.gitignore
new file mode 100644
index 0000000000..0fa3d8108a
--- /dev/null
+++ b/boards/xtensa/esp32s2/common/scripts/.gitignore
@@ -0,0 +1 @@
+/*.ld.tmp
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_mcuboot.ld b/boards/xtensa/esp32s2/common/scripts/esp32s2_mcuboot.ld
similarity index 99%
rename from boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_mcuboot.ld
rename to boards/xtensa/esp32s2/common/scripts/esp32s2_mcuboot.ld
index a459692c36..2abdcfaf51 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_mcuboot.ld
+++ b/boards/xtensa/esp32s2/common/scripts/esp32s2_mcuboot.ld
@@ -1,5 +1,5 @@
/****************************************************************************
- * boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_mcuboot.ld
+ * boards/xtensa/esp32s2/common/scripts/esp32s2_mcuboot.ld
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2.template.ld b/boards/xtensa/esp32s2/common/scripts/esp32s2_memory.ld
similarity index 91%
rename from boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2.template.ld
rename to boards/xtensa/esp32s2/common/scripts/esp32s2_memory.ld
index b08bf71634..9c30cba1ff 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2.template.ld
+++ b/boards/xtensa/esp32s2/common/scripts/esp32s2_memory.ld
@@ -1,17 +1,13 @@
/****************************************************************************
- * boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2.template.ld
- * ESP32S2 Linker Script Memory Layout
+ * boards/xtensa/esp32s2/common/scripts/esp32s2_memory.ld
+ * ESP32-S2 Linker Script Memory Layout
*
* This file describes the memory layout (memory blocks) as virtual
* memory addresses.
*
- * esp32s2.common.ld contains output sections to link compiler output
+ * esp32s2_sections.ld contains output sections to link compiler output
* into these memory blocks.
*
- * NOTE: That this is not the actual linker script but rather a "template"
- * for the elf32_out.ld script. This template script is passed through
- * the C preprocessor to include selected configuration options.
- *
****************************************************************************/
#include <nuttx/config.h>
@@ -135,3 +131,10 @@ MEMORY
rtc_data_seg(RW) : org = 0x3ff9e000, len = 0x2000
}
+#if CONFIG_ESP32S2_RUN_IRAM
+ REGION_ALIAS("default_rodata_seg", dram0_0_seg);
+ REGION_ALIAS("default_code_seg", iram0_0_seg);
+#else
+ REGION_ALIAS("default_rodata_seg", drom0_0_seg);
+ REGION_ALIAS("default_code_seg", irom0_0_seg);
+#endif /* CONFIG_ESP32S2_RUN_IRAM */
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_peripherals.ld b/boards/xtensa/esp32s2/common/scripts/esp32s2_peripherals.ld
similarity index 94%
rename from boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_peripherals.ld
rename to boards/xtensa/esp32s2/common/scripts/esp32s2_peripherals.ld
index 62f5f970cb..7af47ffe1e 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_peripherals.ld
+++ b/boards/xtensa/esp32s2/common/scripts/esp32s2_peripherals.ld
@@ -1,5 +1,5 @@
/****************************************************************************
- * boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_peripherals.ld
+ * boards/xtensa/esp32s2/common/scripts/esp32s2_peripherals.ld
****************************************************************************/
PROVIDE ( UART0 = 0x3f400000 );
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_rom.ld b/boards/xtensa/esp32s2/common/scripts/esp32s2_rom.ld
similarity index 99%
rename from boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_rom.ld
rename to boards/xtensa/esp32s2/common/scripts/esp32s2_rom.ld
index 25db27c30b..098093bbd2 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_rom.ld
+++ b/boards/xtensa/esp32s2/common/scripts/esp32s2_rom.ld
@@ -1,3 +1,7 @@
+/****************************************************************************
+ * boards/xtensa/esp32s2/common/scripts/esp32s2_rom.ld
+ ****************************************************************************/
+
/**
* ESP32-S2 ROM address table (except symbols from libgcc and libc)
* Generated for ROM with MD5sum: 0a2c7ec5109c17884606d23b47045796
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_flash.ld b/boards/xtensa/esp32s2/common/scripts/esp32s2_sections.ld
similarity index 96%
rename from boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_flash.ld
rename to boards/xtensa/esp32s2/common/scripts/esp32s2_sections.ld
index fa4823e32e..d466cddee9 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_flash.ld
+++ b/boards/xtensa/esp32s2/common/scripts/esp32s2_sections.ld
@@ -1,5 +1,5 @@
/****************************************************************************
- * boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_flash.ld
+ * boards/xtensa/esp32s2/common/scripts/esp32s2_sections.ld
****************************************************************************/
/* Default entry point: */
@@ -47,7 +47,7 @@ SECTIONS
*(.entry.text)
*(.init.literal)
*(.init)
- } > iram0_0_seg
+ } >iram0_0_seg
.iram0.text :
{
@@ -59,12 +59,12 @@ SECTIONS
. = ALIGN(4) + 16;
_iram_text = ABSOLUTE(.);
- } > iram0_0_seg
+ } >iram0_0_seg
.dram0_reserved_for_iram (NOLOAD):
{
. = ORIGIN(dram0_0_seg) + _iram_text - _iram_start;
- } > dram0_0_seg
+ } >dram0_0_seg
/* Shared RAM */
@@ -178,7 +178,7 @@ SECTIONS
*(.gnu.linkonce.lit4.*)
_lit4_end = ABSOLUTE(.);
. = ALIGN(4);
- } >drom0_0_seg
+ } >default_rodata_seg
.flash.text :
{
@@ -198,7 +198,7 @@ SECTIONS
. += 16;
_etext = .;
- } >irom0_0_seg
+ } >default_code_seg
.rtc.text :
{
@@ -210,5 +210,5 @@ SECTIONS
{
*(.rtc.data)
*(.rtc.rodata)
- } > rtc_slow_seg
+ } >rtc_slow_seg
}
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/.gitignore b/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/.gitignore
deleted file mode 100644
index f93f56cccd..0000000000
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/esp32s2_out.ld
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/Make.defs b/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/Make.defs
index 0a8e833ead..7056fb64f5 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/Make.defs
+++ b/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/Make.defs
@@ -23,21 +23,32 @@ include $(TOPDIR)/tools/Config.mk
include $(TOPDIR)/tools/esp32s2/Config.mk
include $(TOPDIR)/arch/xtensa/src/lx7/Toolchain.defs
-ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_out.ld
+# Pick the linker scripts from the board level if they exist, if not
+# pick the common linker scripts.
+
+ARCHSCRIPT += $(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)esp32s2_rom.ld
+ARCHSCRIPT += $(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)esp32s2_peripherals.ld
+
+ifneq ($(wildcard $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_memory.ld),)
+ ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_memory.ld
+else
+ ARCHSCRIPT += $(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)esp32s2_memory.ld
+endif
ifeq ($(CONFIG_ESP32S2_APP_FORMAT_MCUBOOT),y)
- ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_mcuboot.ld
+ ifneq ($(wildcard $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_mcuboot.ld),)
+ ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_mcuboot.ld
+ else
+ ARCHSCRIPT += $(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)esp32s2_mcuboot.ld
+ endif
else
- ifeq ($(CONFIG_ESP32S2_RUN_IRAM),y)
- ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_iram.ld
+ ifneq ($(wildcard $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_sections.ld),)
+ ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_sections.ld
else
- ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_flash.ld
+ ARCHSCRIPT += $(BOARD_COMMON_DIR)$(DELIM)scripts$(DELIM)esp32s2_sections.ld
endif
endif
-ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_rom.ld
-ARCHSCRIPT += $(BOARD_DIR)$(DELIM)scripts$(DELIM)esp32s2_peripherals.ld
-
ARCHPICFLAGS = -fpic
CFLAGS := $(ARCHCFLAGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_iram.ld b/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_iram.ld
deleted file mode 100644
index 52b211d65c..0000000000
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2_iram.ld
+++ /dev/null
@@ -1,184 +0,0 @@
-/****************************************************************************
- * boards/xtensa/esp32s2/esp32s2-saola-1/scripts/esp32s2s2_iram.ld
- ****************************************************************************/
-
-/* Default entry point: */
-
-ENTRY(__start);
-
-SECTIONS
-{
- /* Send .iram0 code to iram */
-
- .iram0.vectors :
- {
- /* Vectors go to IRAM */
-
- _init_start = ABSOLUTE(.);
-
- /* Vectors according to builds/RF-2015.2-win32/esp108_v1_2_s5_512int_2/config.html */
-
- . = 0x0;
- KEEP (*(.window_vectors.text));
- . = 0x180;
- KEEP (*(.xtensa_level2_vector.text));
- . = 0x1c0;
- KEEP (*(.xtensa_level3_vector.text));
- . = 0x200;
- KEEP (*(.xtensa_level4_vector.text));
- . = 0x240;
- KEEP (*(.xtensa_level5_vector.text));
- . = 0x280;
- KEEP (*(.debug_exception_vector.text));
- . = 0x2c0;
- KEEP (*(.nmi_vector.text));
- . = 0x300;
- KEEP (*(.kernel_exception_vector.text));
- . = 0x340;
- KEEP (*(.user_exception_vector.text));
- . = 0x3c0;
- KEEP (*(.double_exception_vector.text));
- . = 0x400;
- *(.*_vector.literal)
-
- . = ALIGN (16);
- *(.entry.text)
- *(.init.literal)
- *(.init)
- _init_end = ABSOLUTE(.);
- } > iram0_0_seg
-
- .iram0.text :
- {
- /* Code marked as running out of IRAM */
-
- *(.iram1 .iram1.*)
-
- _stext = .;
- *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
- *(.irom0.text) /* catch stray ICACHE_RODATA_ATTR */
- *(.fini.literal)
- *(.fini)
- *(.gnu.version)
-
- /* align + add 16B for CPU dummy speculative instr. fetch */
-
- . = ALIGN(4) + 16;
- _etext = .;
- } > iram0_0_seg
-
- /* Shared RAM */
-
- .dram0.bss (NOLOAD) :
- {
- /* .bss initialized on power-up */
-
- . = ALIGN (8);
- _sbss = ABSOLUTE(.);
- *(.dynsbss)
- *(.sbss)
- *(.sbss.*)
- *(.gnu.linkonce.sb.*)
- *(.scommon)
- *(.sbss2)
- *(.sbss2.*)
- *(.gnu.linkonce.sb2.*)
- *(.dynbss)
- KEEP (*(.bss))
- *(.bss.*)
- *(.share.mem)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN(8);
- _ebss = ABSOLUTE(.);
-
- /* Uninitialized .bss */
-
- . = ALIGN(4);
- *(.noinit)
- . = ALIGN(4);
- } >dram0_0_seg
-
- .dram0.data :
- {
- /* .data initialized on power-up in ROMed configurations. */
-
- _sdata = ABSOLUTE(.);
- KEEP (*(.data))
- KEEP (*(.data.*))
- KEEP (*(.gnu.linkonce.d.*))
- KEEP (*(.data1))
- KEEP (*(.sdata))
- KEEP (*(.sdata.*))
- KEEP (*(.gnu.linkonce.s.*))
- KEEP (*(.sdata2))
- KEEP (*(.sdata2.*))
- KEEP (*(.gnu.linkonce.s2.*))
- KEEP (*(.jcr))
- *(.dram1 .dram1.*)
- . = ALIGN(4);
- _edata = ABSOLUTE(.);
-
- _srodata = ABSOLUTE(.);
- *(.rodata)
- *(.rodata.*)
- *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */
- *(.gnu.linkonce.r.*)
- *(.rodata1)
- __XT_EXCEPTION_TABLE_ = ABSOLUTE(.);
- *(.xt_except_table)
- *(.gcc_except_table)
- *(.gnu.linkonce.e.*)
- *(.gnu.version_r)
- *(.eh_frame)
-
- . = (. + 3) & ~ 3;
-
- /* C++ constructor and destructor tables, properly ordered: */
-
- _sinit = ABSOLUTE(.);
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- _einit = ABSOLUTE(.);
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
-
- /* C++ exception handlers table: */
-
- __XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
- *(.xt_except_desc)
- *(.gnu.linkonce.h.*)
- __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
- *(.xt_except_desc_end)
- *(.dynamic)
- *(.gnu.version_d)
- _erodata = ABSOLUTE(.);
- /* Literals are also RO data. */
- _lit4_start = ABSOLUTE(.);
- *(*.lit4)
- *(.lit4.*)
- *(.gnu.linkonce.lit4.*)
- _lit4_end = ABSOLUTE(.);
- . = ALIGN(4);
-
- /* Heap starts at the end of .data */
-
- _sheap = ABSOLUTE(.);
- } >dram0_0_seg
-
- .rtc.text :
- {
- . = ALIGN(4);
- *(.rtc.literal .rtc.text)
- } >rtc_iram_seg
-
- .rtc.data :
- {
- *(.rtc.data)
- *(.rtc.rodata)
- } > rtc_slow_seg
-}
diff --git a/boards/xtensa/esp32s2/esp32s2-saola-1/src/Make.defs b/boards/xtensa/esp32s2/esp32s2-saola-1/src/Make.defs
index d6a841d922..3a6291b8b7 100644
--- a/boards/xtensa/esp32s2/esp32s2-saola-1/src/Make.defs
+++ b/boards/xtensa/esp32s2/esp32s2-saola-1/src/Make.defs
@@ -20,10 +20,6 @@
include $(TOPDIR)/Make.defs
-SCRIPTDIR = $(BOARD_DIR)$(DELIM)scripts
-
-CONFIGFILE = $(TOPDIR)$(DELIM)include$(DELIM)nuttx$(DELIM)config.h
-
CSRCS = esp32s2_boot.c esp32s2_bringup.c
ifeq ($(CONFIG_BOARDCTL),y)
@@ -53,19 +49,6 @@ ifeq ($(CONFIG_ESP32S2_SPI),y)
CSRCS += esp32s2_board_spi.c
endif
-SCRIPTIN = $(SCRIPTDIR)$(DELIM)esp32s2.template.ld
-SCRIPTOUT = $(SCRIPTDIR)$(DELIM)esp32s2_out.ld
-
-.PHONY = context distclean
-
-$(SCRIPTOUT): $(SCRIPTIN) $(CONFIGFILE)
- $(Q) $(CC) -isystem $(TOPDIR)/include -C -P -x c -E $(SCRIPTIN) -o $@
-
-context:: $(SCRIPTOUT)
-
-distclean::
- $(call DELFILE, $(SCRIPTOUT))
-
DEPPATH += --dep-path board
VPATH += :board
CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board)