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