68
68
mmap0_0_seg (R) : org = CACHED_ORG, len = CACHED_SIZE
69
69
70
70
lp_ram_seg (RW) : org = LPSRAM_IRAM_START,
71
- len = 0x4000 - RESERVE_RTC_MEM
71
+ len = 0x2000 - RESERVE_RTC_MEM
72
72
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,
74
74
len = RESERVE_RTC_MEM
75
75
76
76
#ifdef CONFIG_GEN_ISR_TABLES
@@ -145,35 +145,65 @@ SECTIONS
145
145
.rtc.text :
146
146
{
147
147
. = ALIGN (4);
148
+ _rtc_fast_start = ABSOLUTE (.);
149
+ _rtc_text_start = ABSOLUTE (.);
150
+ *(.rtc.entry.text)
148
151
*(.rtc.literal .rtc.text)
149
152
*rtc_wake_stub*.o (.literal .text .literal.* .text.*)
153
+ . = ALIGN (4);
154
+
155
+ _rtc_text_end = ABSOLUTE (.);
150
156
} GROUP_DATA_LINK_IN(rtc_iram_seg, ROMABLE_REGION)
151
157
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.
154
161
*/
155
- .rtc.dummy (NOLOAD) :
162
+ .rtc.force_fast :
156
163
{
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)
159
171
172
+ /* RTC data section holds data marked with
173
+ * RTC_DATA_ATTR, RTC_RODATA_ATTR attributes.
174
+ */
160
175
.rtc.data :
161
176
{
162
177
_rtc_data_start = ABSOLUTE (.);
163
178
*(.rtc.data)
164
179
*(.rtc.rodata)
165
- *rtc_wake_stub*.o (.data .rodata .data.* .rodata.* .bss .bss.*)
166
180
_rtc_data_end = ABSOLUTE (.);
167
181
} GROUP_DATA_LINK_IN(rtc_iram_seg, ROMABLE_REGION)
168
182
169
183
.rtc.bss (NOLOAD) :
170
184
{
171
185
_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
+
174
190
_rtc_bss_end = ABSOLUTE (.);
175
191
} GROUP_LINK_IN(rtc_iram_seg)
176
192
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
+
177
207
/* This section located in RTC SLOW Memory area.
178
208
* It holds data marked with RTC_SLOW_ATTR attribute.
179
209
* See the file "esp_attr.h" for more information.
@@ -183,12 +213,33 @@ SECTIONS
183
213
. = ALIGN (4);
184
214
_rtc_force_slow_start = ABSOLUTE (.);
185
215
*(.rtc.force_slow .rtc.force_slow.*)
186
- . = ALIGN (4) ;
216
+ . = ALIGN (4);
187
217
_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)
189
236
190
- /* Get size of rtc slow data */
237
+ /* Get size of rtc slow data based on rtc_data_location alias */
191
238
_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.")
192
243
193
244
/* --- END OF RTC --- */
194
245
@@ -229,7 +280,6 @@ SECTIONS
229
280
*libkernel.a :(.literal .text .literal.* .text.*)
230
281
*libgcc.a :lib2funcs.*(.literal .text .literal.* .text.*)
231
282
*libdrivers__flash.a :flash_esp32.*(.literal .text .literal.* .text.*)
232
- *libzephyr.a :spi_flash_rom_patch.*(.literal .text .literal.* .text.*)
233
283
*libzephyr.a :log_noos.*(.literal .text .literal.* .text.*)
234
284
*libdrivers__timer.a :esp32c6_sys_timer.*(.literal .text .literal.* .text.*)
235
285
*libzephyr.a :log_core.*(.literal .text .literal.* .text.*)
@@ -259,6 +309,8 @@ SECTIONS
259
309
*libzephyr.a :wdt_hal_iram.*(.literal .text .literal.* .text.*)
260
310
*libzephyr.a :systimer_hal.*(.literal .text .literal.* .text.*)
261
311
*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.*)
262
314
263
315
/* [mapping :soc] */
264
316
*libzephyr.a :lldesc.*(.literal .literal.* .text .text.*)
@@ -284,7 +336,7 @@ SECTIONS
284
336
*libzephyr.a :flash_brownout_hook.*(.literal .literal.* .text .text.*)
285
337
*libzephyr.a :spi_flash_wrap.*(.literal .literal.* .text .text.*)
286
338
*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.*)
288
340
289
341
/* [mapping :esp_system] */
290
342
*libzephyr.a :reset_reason.*(.literal .literal.* .text .text.*)
@@ -303,6 +355,7 @@ SECTIONS
303
355
*(.literal.rtc_vddsdio_set_config .text.rtc_vddsdio_set_config)
304
356
*libzephyr.a :esp_memory_utils.*(.literal .literal.* .text .text.*)
305
357
*libzephyr.a :pmu_init.*(.literal .literal.* .text .text.*)
358
+ *libzephyr.a :pmu_param.*(.literal .literal.* .text .text.*)
306
359
*libzephyr.a :rtc_clk.*(.literal .literal.* .text .text.*)
307
360
*libzephyr.a :rtc_clk_init.*(.literal .literal.* .text .text.*)
308
361
*libzephyr.a :rtc_time.*(.literal .literal.* .text .text.*)
@@ -316,17 +369,14 @@ SECTIONS
316
369
*(.literal.GPIO_HOLD_MASK .text.GPIO_HOLD_MASK)
317
370
318
371
/* [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
-
323
372
*libzephyr.a :esp_rom_crc.*(.literal .literal.* .text .text.*)
324
373
*libzephyr.a :esp_rom_sys.*(.literal .literal.* .text .text.*)
325
374
*libzephyr.a :esp_rom_uart.*(.literal .literal.* .text .text.*)
326
375
*libzephyr.a :esp_rom_spiflash.*(.literal .literal.* .text .text.*)
327
376
*libzephyr.a :esp_rom_efuse.*(.literal .literal.* .text .text.*)
328
377
*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.*)
330
380
*libzephyr.a :efuse_hal.*(.literal .literal.* .text .text.*)
331
381
332
382
/* [mapping :esp_mm] */
@@ -338,9 +388,8 @@ SECTIONS
338
388
*libzephyr.a :bootloader_random*.*(.literal.bootloader_random_enable .text.bootloader_random_enable)
339
389
340
390
#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.*)
344
393
345
394
/* [mapping :esp_wifi] */
346
395
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@@ -383,7 +432,6 @@ SECTIONS
383
432
384
433
*libzephyr.a :esp_image_format.*(.literal .text .literal.* .text.*)
385
434
*libzephyr.a :flash_ops.*(.literal .text .literal.* .text.*)
386
- *libzephyr.a :flash_ops_esp32c6.*(.literal .text .literal.* .text.*)
387
435
*libzephyr.a :flash_encrypt.*(.literal .text .literal.* .text.*)
388
436
*libzephyr.a :flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
389
437
*libzephyr.a :flash_partitions.*(.literal .text .literal.* .text.*)
@@ -402,6 +450,8 @@ SECTIONS
402
450
*libzephyr.a :secure_boot_secure_features.*(.literal .text .literal.* .text.*)
403
451
*libzephyr.a :secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
404
452
453
+ *libzephyr.a :regi2c_ctrl.*(.literal .text .literal.* .text.*)
454
+
405
455
*libzephyr.a :cpu_region_protect.*(.literal .text .literal.* .text.*)
406
456
407
457
/* TODO : optimise */
@@ -474,7 +524,6 @@ SECTIONS
474
524
*libzephyr.a :log_output.*(.rodata .rodata.* .srodata .srodata.*)
475
525
*libdrivers__flash.a :flash_esp32.*(.rodata .rodata.* .srodata .srodata.*)
476
526
*libdrivers__serial.a :uart_esp32.*(.rodata .rodata.* .srodata .srodata.*)
477
- *libzephyr.a :spi_flash_rom_patch.*(.rodata .rodata.* .srodata .srodata.*)
478
527
*libzephyr.a :periph_ctrl.*(.rodata .rodata.* .srodata .srodata.*)
479
528
*libzephyr.a :loader.*(.rodata .rodata.* .srodata .srodata.*)
480
529
*libzephyr.a :cache_utils.*(.rodata .rodata.* .srodata .srodata.*)
@@ -489,6 +538,8 @@ SECTIONS
489
538
*libzephyr.a :wdt_hal_iram.*(.rodata .rodata.* .srodata .srodata.*)
490
539
*libzephyr.a :systimer_hal.*(.rodata .rodata.* .srodata .srodata.*)
491
540
*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.*)
492
543
493
544
/* [mapping :soc] */
494
545
*libzephyr.a :lldesc.*(.rodata .rodata.* .srodata .srodata.*)
@@ -514,7 +565,7 @@ SECTIONS
514
565
*libzephyr.a :flash_brownout_hook.*(.rodata .rodata.* .srodata .srodata.*)
515
566
*libzephyr.a :spi_flash_wrap.*(.rodata .rodata.* .srodata .srodata.*)
516
567
*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.*)
518
569
*libzephyr.a :flash_qio_mode.*(.rodata .rodata.* .srodata .srodata.*)
519
570
520
571
/* [mapping :esp_mm] */
@@ -538,6 +589,7 @@ SECTIONS
538
589
*libzephyr.a :mspi_timing_tuning.*(.rodata .rodata.* .srodata .srodata.*)
539
590
*(.rodata.sar_periph_ctrl_power_enable)
540
591
*libzephyr.a :pmu_init.*(.rodata .rodata.* .srodata .srodata.*)
592
+ *libzephyr.a :pmu_param.*(.rodata .rodata.* .srodata .srodata.*)
541
593
542
594
/* [mapping :esp_system] */
543
595
*libzephyr.a :reset_reason.*(.rodata .rodata.*)
@@ -551,7 +603,7 @@ SECTIONS
551
603
*libzephyr.a :esp_rom_spiflash.*(.rodata .rodata.* .srodata .srodata.*)
552
604
*libzephyr.a :esp_rom_efuse.*(.rodata .rodata.* .srodata .srodata.*)
553
605
*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.*)
555
607
*libzephyr.a :efuse_hal.*(.rodata .rodata.* .srodata .srodata.*)
556
608
557
609
. = ALIGN (4);
@@ -585,7 +637,6 @@ SECTIONS
585
637
*libzephyr.a :esp_clk.*(.rodata .rodata.* .srodata .srodata.*)
586
638
*libzephyr.a :flash_mmap.*(.rodata .rodata.* .srodata .srodata.*)
587
639
*libzephyr.a :flash_ops.*(.rodata .rodata.* .srodata .srodata.*)
588
- *libzephyr.a :flash_ops_esp32c6.*(.rodata .rodata.* .srodata .srodata.*)
589
640
590
641
*libzephyr.a :esp_gpio_reserve.*(.rodata .rodata.* .srodata .srodata.*)
591
642
*libzephyr.a :spi_flash_hal.*(.rodata .rodata.* .srodata .srodata.*)
@@ -686,8 +737,8 @@ SECTIONS
686
737
__rom_region_start = ABSOLUTE (.);
687
738
688
739
#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.* )
691
742
#endif /* CONFIG_ESP32_WIFI_IRAM_OPT */
692
743
693
744
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)
0 commit comments