Skip to content

Commit a1a6e8a

Browse files
sylvioalvesmmahadevan108
authored andcommitted
soc: esp32c6: update linker files
Add new wifi sections into iram area. Add new functions to iram area. Remove unused entries. Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
1 parent be9574e commit a1a6e8a

File tree

3 files changed

+81
-46
lines changed

3 files changed

+81
-46
lines changed

soc/espressif/esp32c6/Kconfig

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,6 @@ config SOC_SERIES_ESP32C6
1818

1919
if SOC_SERIES_ESP32C6
2020

21-
config ESP32_PHY_MAX_WIFI_TX_POWER
22-
int "Max WiFi TX power (dBm)"
23-
range 10 20
24-
default 20
25-
help
26-
Set maximum transmit power for WiFi radio. Actual transmit power for high
27-
data rates may be lower than this setting.
28-
29-
config ESP32_PHY_MAX_TX_POWER
30-
int
31-
default ESP32_PHY_MAX_WIFI_TX_POWER
32-
3321
config MAC_BB_PD
3422
bool "Power down MAC and baseband of Wi-Fi and Bluetooth when PHY is disabled"
3523
depends on SOC_SERIES_ESP32C6 && TICKLESS_KERNEL

soc/espressif/esp32c6/default.ld

Lines changed: 81 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ MEMORY
6868
mmap0_0_seg (R): org = CACHED_ORG, len = CACHED_SIZE
6969

7070
lp_ram_seg(RW): org = LPSRAM_IRAM_START,
71-
len = 0x4000 - RESERVE_RTC_MEM
71+
len = 0x2000 - RESERVE_RTC_MEM
7272

73-
lp_reserved_seg(RW) : org = LPSRAM_IRAM_START + 0x4000 - RESERVE_RTC_MEM,
73+
lp_reserved_seg(RW) : org = LPSRAM_IRAM_START + 0x2000 - RESERVE_RTC_MEM,
7474
len = RESERVE_RTC_MEM
7575

7676
#ifdef CONFIG_GEN_ISR_TABLES
@@ -145,35 +145,65 @@ SECTIONS
145145
.rtc.text :
146146
{
147147
. = ALIGN(4);
148+
_rtc_fast_start = ABSOLUTE(.);
149+
_rtc_text_start = ABSOLUTE(.);
150+
*(.rtc.entry.text)
148151
*(.rtc.literal .rtc.text)
149152
*rtc_wake_stub*.o(.literal .text .literal.* .text.*)
153+
. = ALIGN(4);
154+
155+
_rtc_text_end = ABSOLUTE(.);
150156
} GROUP_DATA_LINK_IN(rtc_iram_seg, ROMABLE_REGION)
151157

152-
/* This section is required to skip rtc.text area because the text and
153-
* data segments reflect the same address space on different buses.
158+
/* This section located in RTC FAST Memory area.
159+
* It holds data marked with RTC_FAST_ATTR attribute.
160+
* See the file "esp_attr.h" for more information.
154161
*/
155-
.rtc.dummy (NOLOAD):
162+
.rtc.force_fast :
156163
{
157-
. = SIZEOF(.rtc.text);
158-
} GROUP_LINK_IN(rtc_iram_seg)
164+
. = ALIGN(4);
165+
_rtc_force_fast_start = ABSOLUTE(.);
166+
167+
*(.rtc.force_fast .rtc.force_fast.*)
168+
. = ALIGN(4) ;
169+
_rtc_force_fast_end = ABSOLUTE(.);
170+
} GROUP_DATA_LINK_IN(rtc_data_seg, ROMABLE_REGION)
159171

172+
/* RTC data section holds data marked with
173+
* RTC_DATA_ATTR, RTC_RODATA_ATTR attributes.
174+
*/
160175
.rtc.data :
161176
{
162177
_rtc_data_start = ABSOLUTE(.);
163178
*(.rtc.data)
164179
*(.rtc.rodata)
165-
*rtc_wake_stub*.o(.data .rodata .data.* .rodata.* .bss .bss.*)
166180
_rtc_data_end = ABSOLUTE(.);
167181
} GROUP_DATA_LINK_IN(rtc_iram_seg, ROMABLE_REGION)
168182

169183
.rtc.bss (NOLOAD) :
170184
{
171185
_rtc_bss_start = ABSOLUTE(.);
172-
*rtc_wake_stub*.o(.bss .bss.*)
173-
*rtc_wake_stub*.o(COMMON)
186+
187+
*(.rtc.data)
188+
*(.rtc.rodata)
189+
174190
_rtc_bss_end = ABSOLUTE(.);
175191
} GROUP_LINK_IN(rtc_iram_seg)
176192

193+
/* This section holds data that should not be initialized at power up
194+
* and will be retained during deep sleep.
195+
* User data marked with RTC_NOINIT_ATTR will be placed
196+
* into this section. See the file "esp_attr.h" for more information.
197+
*/
198+
.rtc_noinit (NOLOAD):
199+
{
200+
. = ALIGN(4);
201+
_rtc_noinit_start = ABSOLUTE(.);
202+
*(.rtc_noinit .rtc_noinit.*)
203+
. = ALIGN(4) ;
204+
_rtc_noinit_end = ABSOLUTE(.);
205+
} GROUP_LINK_IN(rtc_slow_seg)
206+
177207
/* This section located in RTC SLOW Memory area.
178208
* It holds data marked with RTC_SLOW_ATTR attribute.
179209
* See the file "esp_attr.h" for more information.
@@ -183,12 +213,33 @@ SECTIONS
183213
. = ALIGN(4);
184214
_rtc_force_slow_start = ABSOLUTE(.);
185215
*(.rtc.force_slow .rtc.force_slow.*)
186-
. = ALIGN(4) ;
216+
. = ALIGN(4);
187217
_rtc_force_slow_end = ABSOLUTE(.);
188-
} > rtc_slow_seg
218+
} GROUP_DATA_LINK_IN(rtc_slow_seg, ROMABLE_REGION)
219+
220+
/**
221+
* This section holds RTC data that should have fixed addresses.
222+
* The data are not initialized at power-up and are retained during deep sleep.
223+
*/
224+
.rtc_reserved (NOLOAD):
225+
{
226+
. = ALIGN(4);
227+
_rtc_reserved_start = ABSOLUTE(.);
228+
/* New data can only be added here to ensure existing data are not moved.
229+
Because data have adhered to the end of the segment and code is relied on it.
230+
>> put new data here << */
231+
232+
*(.rtc_timer_data_in_rtc_mem .rtc_timer_data_in_rtc_mem.*)
233+
KEEP(*(.bootloader_data_rtc_mem .bootloader_data_rtc_mem.*))
234+
_rtc_reserved_end = ABSOLUTE(.);
235+
} GROUP_LINK_IN(rtc_reserved_seg)
189236

190-
/* Get size of rtc slow data */
237+
/* Get size of rtc slow data based on rtc_data_location alias */
191238
_rtc_slow_length = (_rtc_force_slow_end - _rtc_data_start);
239+
_rtc_fast_length = (_rtc_force_fast_end - _rtc_fast_start);
240+
241+
ASSERT((_rtc_slow_length <= LENGTH(rtc_slow_seg)), "RTC_SLOW segment data does not fit.")
242+
ASSERT((_rtc_fast_length <= LENGTH(rtc_data_seg)), "RTC_FAST segment data does not fit.")
192243

193244
/* --- END OF RTC --- */
194245

@@ -229,7 +280,6 @@ SECTIONS
229280
*libkernel.a:(.literal .text .literal.* .text.*)
230281
*libgcc.a:lib2funcs.*(.literal .text .literal.* .text.*)
231282
*libdrivers__flash.a:flash_esp32.*(.literal .text .literal.* .text.*)
232-
*libzephyr.a:spi_flash_rom_patch.*(.literal .text .literal.* .text.*)
233283
*libzephyr.a:log_noos.*(.literal .text .literal.* .text.*)
234284
*libdrivers__timer.a:esp32c6_sys_timer.*(.literal .text .literal.* .text.*)
235285
*libzephyr.a:log_core.*(.literal .text .literal.* .text.*)
@@ -259,6 +309,8 @@ SECTIONS
259309
*libzephyr.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
260310
*libzephyr.a:systimer_hal.*(.literal .text .literal.* .text.*)
261311
*libzephyr.a:spi_flash_hal_gpspi.*(.literal .literal.* .text .text.*)
312+
*libzephyr.a:modem_clock_hal.*(.literal .literal.* .text .text.*)
313+
*libzephyr.a:modem_clock.*(.literal .literal.* .text .text.*)
262314

263315
/* [mapping:soc] */
264316
*libzephyr.a:lldesc.*(.literal .literal.* .text .text.*)
@@ -284,7 +336,7 @@ SECTIONS
284336
*libzephyr.a:flash_brownout_hook.*(.literal .literal.* .text .text.*)
285337
*libzephyr.a:spi_flash_wrap.*(.literal .literal.* .text .text.*)
286338
*libzephyr.a:spi_flash_hpm_enable.*(.literal .literal.* .text .text.*)
287-
*libzephyr.a:spi_flash_oct_flash_init*(.literal .literal.* .text .text.*)
339+
*libzephyr.a:flash_ops.*(.literal .literal.* .text .text.*)
288340

289341
/* [mapping:esp_system] */
290342
*libzephyr.a:reset_reason.*(.literal .literal.* .text .text.*)
@@ -303,6 +355,7 @@ SECTIONS
303355
*(.literal.rtc_vddsdio_set_config .text.rtc_vddsdio_set_config)
304356
*libzephyr.a:esp_memory_utils.*(.literal .literal.* .text .text.*)
305357
*libzephyr.a:pmu_init.*(.literal .literal.* .text .text.*)
358+
*libzephyr.a:pmu_param.*(.literal .literal.* .text .text.*)
306359
*libzephyr.a:rtc_clk.*(.literal .literal.* .text .text.*)
307360
*libzephyr.a:rtc_clk_init.*(.literal .literal.* .text .text.*)
308361
*libzephyr.a:rtc_time.*(.literal .literal.* .text .text.*)
@@ -316,17 +369,14 @@ SECTIONS
316369
*(.literal.GPIO_HOLD_MASK .text.GPIO_HOLD_MASK)
317370

318371
/* [mapping:esp_rom] */
319-
*libzephyr.a:esp_rom_spiflash.*(.literal .literal.* .text .text.*)
320-
*libzephyr.a:esp_rom_systimer.*(.literal .literal.* .text .text.*)
321-
*libzephyr.a:esp_rom_wdt.*(.literal .literal.* .text .text.*)
322-
323372
*libzephyr.a:esp_rom_crc.*(.literal .literal.* .text .text.*)
324373
*libzephyr.a:esp_rom_sys.*(.literal .literal.* .text .text.*)
325374
*libzephyr.a:esp_rom_uart.*(.literal .literal.* .text .text.*)
326375
*libzephyr.a:esp_rom_spiflash.*(.literal .literal.* .text .text.*)
327376
*libzephyr.a:esp_rom_efuse.*(.literal .literal.* .text .text.*)
328377
*libzephyr.a:esp_rom_systimer.*(.literal .literal.* .text .text.*)
329-
*libzephyr.a:esp_rom_regi2c_esp32c6.*(.literal .literal.* .text .text.*)
378+
*libzephyr.a:esp_rom_wdt.*(.literal .literal.* .text .text.*)
379+
*libzephyr.a:esp_rom_hp_regi2c_esp32c6.*(.literal .literal.* .text .text.*)
330380
*libzephyr.a:efuse_hal.*(.literal .literal.* .text .text.*)
331381

332382
/* [mapping:esp_mm] */
@@ -338,9 +388,8 @@ SECTIONS
338388
*libzephyr.a:bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
339389

340390
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
341-
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*)
342-
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*)
343-
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.*)
391+
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
392+
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
344393

345394
/* [mapping:esp_wifi] */
346395
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@@ -383,7 +432,6 @@ SECTIONS
383432

384433
*libzephyr.a:esp_image_format.*(.literal .text .literal.* .text.*)
385434
*libzephyr.a:flash_ops.*(.literal .text .literal.* .text.*)
386-
*libzephyr.a:flash_ops_esp32c6.*(.literal .text .literal.* .text.*)
387435
*libzephyr.a:flash_encrypt.*(.literal .text .literal.* .text.*)
388436
*libzephyr.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
389437
*libzephyr.a:flash_partitions.*(.literal .text .literal.* .text.*)
@@ -402,6 +450,8 @@ SECTIONS
402450
*libzephyr.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
403451
*libzephyr.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
404452

453+
*libzephyr.a:regi2c_ctrl.*(.literal .text .literal.* .text.*)
454+
405455
*libzephyr.a:cpu_region_protect.*(.literal .text .literal.* .text.*)
406456

407457
/* TODO: optimise */
@@ -474,7 +524,6 @@ SECTIONS
474524
*libzephyr.a:log_output.*(.rodata .rodata.* .srodata .srodata.*)
475525
*libdrivers__flash.a:flash_esp32.*(.rodata .rodata.* .srodata .srodata.*)
476526
*libdrivers__serial.a:uart_esp32.*(.rodata .rodata.* .srodata .srodata.*)
477-
*libzephyr.a:spi_flash_rom_patch.*(.rodata .rodata.* .srodata .srodata.*)
478527
*libzephyr.a:periph_ctrl.*(.rodata .rodata.* .srodata .srodata.*)
479528
*libzephyr.a:loader.*(.rodata .rodata.* .srodata .srodata.*)
480529
*libzephyr.a:cache_utils.*(.rodata .rodata.* .srodata .srodata.*)
@@ -489,6 +538,8 @@ SECTIONS
489538
*libzephyr.a:wdt_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
490539
*libzephyr.a:systimer_hal.*(.rodata .rodata.* .srodata .srodata.*)
491540
*libzephyr.a:spi_flash_hal_gpspi.*(.rodata .rodata.* .srodata .srodata.*)
541+
*libzephyr.a:modem_clock_hal.*(.rodata .rodata.* .srodata .srodata.*)
542+
*libzephyr.a:modem_clock.*(.rodata .rodata.* .srodata .srodata.*)
492543

493544
/* [mapping:soc] */
494545
*libzephyr.a:lldesc.*(.rodata .rodata.* .srodata .srodata.*)
@@ -514,7 +565,7 @@ SECTIONS
514565
*libzephyr.a:flash_brownout_hook.*(.rodata .rodata.* .srodata .srodata.*)
515566
*libzephyr.a:spi_flash_wrap.*(.rodata .rodata.* .srodata .srodata.*)
516567
*libzephyr.a:spi_flash_hpm_enable.*(.rodata .rodata.* .srodata .srodata.*)
517-
*libzephyr.a:spi_flash_oct_flash_init.*(.rodata .rodata.* .srodata .srodata.*)
568+
*libzephyr.a:flash_ops.*(.rodata .rodata.* .sdata2 .sdata2.* .srodata .srodata.*)
518569
*libzephyr.a:flash_qio_mode.*(.rodata .rodata.* .srodata .srodata.*)
519570

520571
/* [mapping:esp_mm] */
@@ -538,6 +589,7 @@ SECTIONS
538589
*libzephyr.a:mspi_timing_tuning.*(.rodata .rodata.* .srodata .srodata.*)
539590
*(.rodata.sar_periph_ctrl_power_enable)
540591
*libzephyr.a:pmu_init.*(.rodata .rodata.* .srodata .srodata.*)
592+
*libzephyr.a:pmu_param.*(.rodata .rodata.* .srodata .srodata.*)
541593

542594
/* [mapping:esp_system] */
543595
*libzephyr.a:reset_reason.*(.rodata .rodata.*)
@@ -551,7 +603,7 @@ SECTIONS
551603
*libzephyr.a:esp_rom_spiflash.*(.rodata .rodata.* .srodata .srodata.*)
552604
*libzephyr.a:esp_rom_efuse.*(.rodata .rodata.* .srodata .srodata.*)
553605
*libzephyr.a:esp_rom_systimer.*(.rodata .rodata.* .srodata .srodata.*)
554-
*libzephyr.a:esp_rom_regi2c_esp32c6.*(.rodata .rodata.* .srodata .srodata.*)
606+
*libzephyr.a:esp_rom_hp_regi2c_esp32c6.*(.rodata .rodata.* .srodata .srodata.*)
555607
*libzephyr.a:efuse_hal.*(.rodata .rodata.* .srodata .srodata.*)
556608

557609
. = ALIGN(4);
@@ -585,7 +637,6 @@ SECTIONS
585637
*libzephyr.a:esp_clk.*(.rodata .rodata.* .srodata .srodata.*)
586638
*libzephyr.a:flash_mmap.*(.rodata .rodata.* .srodata .srodata.*)
587639
*libzephyr.a:flash_ops.*(.rodata .rodata.* .srodata .srodata.*)
588-
*libzephyr.a:flash_ops_esp32c6.*(.rodata .rodata.* .srodata .srodata.*)
589640

590641
*libzephyr.a:esp_gpio_reserve.*(.rodata .rodata.* .srodata .srodata.*)
591642
*libzephyr.a:spi_flash_hal.*(.rodata .rodata.* .srodata .srodata.*)
@@ -686,8 +737,8 @@ SECTIONS
686737
__rom_region_start = ABSOLUTE(.);
687738

688739
#if !defined(CONFIG_ESP32_WIFI_IRAM_OPT)
689-
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*)
690-
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*)
740+
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
741+
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
691742
#endif /* CONFIG_ESP32_WIFI_IRAM_OPT */
692743

693744
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)

soc/espressif/esp32c6/mcuboot.ld

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ SECTIONS
4848
*libzephyr.a:cbprintf_nano.*(.literal .text .literal.* .text.*)
4949
*libzephyr.a:cpu.*(.literal .text .literal.* .text.*)
5050
*libzephyr.a:mmu_hal.*(.literal .text .literal.* .text.*)
51-
*libzephyr.a:cache_hal.*(.literal .text .literal.* .text.*)
5251
*libzephyr.a:flash_map.*(.literal .text .literal.* .text.*)
5352
*libzephyr.a:esp_rom_spiflash.*(.literal .text .literal.* .text.*)
5453

@@ -57,9 +56,6 @@ SECTIONS
5756
*libkernel.a:kheap.*(.literal .text .literal.* .text.*)
5857
*libkernel.a:mempool.*(.literal .text .literal.* .text.*)
5958

60-
*(.literal.bootloader_mmap .text.bootloader_mmap)
61-
*(.literal.bootloader_munmap .text.bootloader_munmap)
62-
6359
*libzephyr.a:esp_loader.*(.literal .text .literal.* .text.*)
6460
*libzephyr.a:mmu_hal.*(.literal .text .literal.* .text.*)
6561

0 commit comments

Comments
 (0)