This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 2d2f4055c4 riscv/esp32c6: fix rtc text section and wifi ram placement
2d2f4055c4 is described below

commit 2d2f4055c4f8049068d350d3df485ab0154923eb
Author: Almir Okato <[email protected]>
AuthorDate: Tue Oct 1 17:35:14 2024 -0300

    riscv/esp32c6: fix rtc text section and wifi ram placement
    
    Signed-off-by: Almir Okato <[email protected]>
---
 .../esp32c6/common/scripts/esp32c6_sections.ld     | 59 +++++++++++-----------
 1 file changed, 29 insertions(+), 30 deletions(-)

diff --git a/boards/risc-v/esp32c6/common/scripts/esp32c6_sections.ld 
b/boards/risc-v/esp32c6/common/scripts/esp32c6_sections.ld
index 5700182f2f..39bcdd3074 100644
--- a/boards/risc-v/esp32c6/common/scripts/esp32c6_sections.ld
+++ b/boards/risc-v/esp32c6/common/scripts/esp32c6_sections.ld
@@ -66,7 +66,7 @@ SECTIONS
     /* Vectors go to start of IRAM */
 
     KEEP(*(.exception_vectors.text));
-    . = ALIGN(4);
+    . = ALIGN(16);
 
     *(.iram1)
     *(.iram1.*)
@@ -142,11 +142,13 @@ SECTIONS
     esp_head.*(.literal .text .literal.* .text.*)
     esp_start.*(.literal .text .literal.* .text.*)
 
-    *(.wifi0iram.*)
-    *(.wifirxiram.*)
-    *(.wifislpiram.*)
-    *(.wifiorslpiram.*)
-    *(.wifislprxiram.*)
+    *(.wifi0iram .wifi0iram.*)
+    *(.wifirxiram .wifirxiram.*)
+    *(.wifislpiram .wifislpiram.*)
+    *(.wifiorslpiram .wifiorslpiram.*)
+    *(.wifislprxiram .wifislprxiram.*)
+    *(.wifiextrairam .wifiextrairam.*)
+
   } >iram0_0_seg AT > ROM
 
   /* Marks the end of IRAM code segment */
@@ -328,12 +330,10 @@ SECTIONS
     _instruction_reserved_start = ABSOLUTE(.);  /* This is a symbol marking 
the flash.text start, this can be used for mmu driver to maintain virtual 
address */
     _text_start = ABSOLUTE(.);
 
-    *(.wifi0iram .wifi0iram.*)
-    *(.wifiextrairam .wifiextrairam.*)
-    *(.wifiorslpiram .wifiorslpiram.*)
-    *(.wifirxiram .wifirxiram.*)
-    *(.wifislpiram .wifislpiram.*)
-    *(.wifislprxiram .wifislprxiram.*)
+    *(EXCLUDE_FILE(*libnet80211.a *libpp.a) .wifi0iram 
EXCLUDE_FILE(*libnet80211.a *libpp.a) .wifi0iram.*)
+    *(EXCLUDE_FILE(*libpp.a) .wifiorslpiram EXCLUDE_FILE(*libpp.a) 
.wifiorslpiram.*)
+    *(EXCLUDE_FILE(*libnet80211.a *libpp.a) .wifirxiram 
EXCLUDE_FILE(*libnet80211.a *libpp.a) .wifirxiram.*)
+    *(EXCLUDE_FILE(*libnet80211.a *libpp.a) .wifislprxiram 
EXCLUDE_FILE(*libnet80211.a *libpp.a) .wifislprxiram.*)
 
     *(.literal .text .literal.* .text.* .stub .gnu.warning 
.gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
     *(.irom0.text) /* catch stray ICACHE_RODATA_ATTR */
@@ -341,6 +341,8 @@ SECTIONS
     *(.fini)
     *(.gnu.version)
 
+    . += 16;
+
     _text_end = ABSOLUTE(.);
     _instruction_reserved_end = ABSOLUTE(.);  /* This is a symbol marking the 
flash.text end, this can be used for mmu driver to maintain virtual address */
     _etext = .;
@@ -353,26 +355,17 @@ SECTIONS
     _flash_cache_start = ABSOLUTE(0);
   } >default_code_seg AT > ROM
 
-  .flash_rodata_dummy (NOLOAD) :
-  {
-    . += SIZEOF(.flash.text);
-    . = ALIGN(0x10000);
-  } >default_rodata_seg AT > ROM
-
   _image_drom_vma = ADDR(.flash.rodata);
   _image_drom_lma = LOADADDR(.flash.rodata);
   _image_drom_size = SIZEOF(.flash.rodata);
 
-  .flash.appdesc : ALIGN(0x10)
+  .flash_rodata_dummy (NOLOAD) :
   {
+    . += SIZEOF(.flash.text);
+    . = ALIGN(0x10000);
     _rodata_reserved_start = ABSOLUTE(.);  /* This is a symbol marking the 
flash.rodata start, this can be used for mmu driver to maintain virtual address 
*/
     _rodata_start = ABSOLUTE(.);
-
-    /* Create an empty gap within this section. Thanks to this, the end of this
-     * section will match .flash.rodata's begin address. Thus, both sections
-     * will be merged when creating the final bin image. */
-    . = ALIGN(ALIGNOF(.flash.rodata));
-  } >default_rodata_seg
+  } >default_rodata_seg AT > ROM
 
   .flash.rodata : ALIGN(0xFFFF)
   {
@@ -442,6 +435,7 @@ SECTIONS
       This is a symbol marking the flash.rodata end, this can be used for mmu 
driver to maintain virtual address
       We don't need to include the noload rodata in this section
     */
+    _rodata_end = ABSOLUTE(.);
     _rodata_reserved_end = ABSOLUTE(.);
     . = ALIGN (4);
   } > default_rodata_seg AT > ROM
@@ -452,24 +446,29 @@ SECTIONS
   {
     . = ALIGN(4);
     *(.rtc.literal .rtc.text)
-  } >rtc_iram_seg
+    *(.rtc.entry.text)
+    /* 16B padding for possible CPU prefetch and 4B alignment for PMS split 
lines */
+    . += 16;
+    . = ALIGN(4);
+
+  } > lp_ram_seg AT > ROM
 
   /* RTC BSS section. */
 
   .rtc.bss (NOLOAD) :
   {
     *(.rtc.bss)
-  } >rtc_iram_seg
-
-  /* RTC data section holds RTC wake stub data/rodata. */
+  } > lp_ram_seg
 
   .rtc.data :
   {
+    _rtc_data_start = ABSOLUTE(.);
     *(.rtc.data)
     *(.rtc.data.*)
     *(.rtc.rodata)
     *(.rtc.rodata.*)
-  } >rtc_iram_seg
+    _rtc_data_end = ABSOLUTE(.);
+  } > lp_ram_seg
 
   /* This section holds RTC data that should have fixed addresses.
    * The data are not initialized at power-up and are retained during deep 
sleep.

Reply via email to