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)