feat(esp_system): allow .data to spill over into L2MEM above 0x4ff40000

It may be usefull when .rodata placed into .dram1.data
pull/13473/head
Alexey Lapshin 2024-03-21 12:16:43 +04:00
rodzic cb82161dae
commit e845d9e0eb
2 zmienionych plików z 14 dodań i 5 usunięć

Wyświetl plik

@ -217,7 +217,7 @@ SECTIONS
.dram0.data : .dram0.data :
{ {
_data_start = ABSOLUTE(.); _data_start_low = ABSOLUTE(.);
*(.gnu.linkonce.d.*) *(.gnu.linkonce.d.*)
*(.data1) *(.data1)
__global_pointer$ = . + 0x800; __global_pointer$ = . + 0x800;
@ -230,9 +230,18 @@ SECTIONS
arrays[dram0_data] arrays[dram0_data]
mapping[dram0_data] mapping[dram0_data]
_data_end = ABSOLUTE(.); _data_end_low = ABSOLUTE(.);
} > sram_low } > sram_low
.dram1.data :
{
_data_start_high = ABSOLUTE(.);
mapping[dram0_data]
_data_end_high = ABSOLUTE(.);
} > sram_high
/** /**
* This section holds data that should not be initialized at power up. * This section holds data that should not be initialized at power up.
* The section located in Internal SRAM memory region. The macro _NOINIT * The section located in Internal SRAM memory region. The macro _NOINIT

Wyświetl plik

@ -89,7 +89,7 @@ const soc_memory_region_t soc_memory_regions[] = {
const size_t soc_memory_region_count = sizeof(soc_memory_regions) / sizeof(soc_memory_region_t); const size_t soc_memory_region_count = sizeof(soc_memory_regions) / sizeof(soc_memory_region_t);
extern int _data_start, _bss_start_high, _heap_start_low, _heap_start_high, _iram_start, _iram_end, _rtc_force_slow_end; extern int _data_start_low, _data_start_high, _heap_start_low, _heap_start_high, _iram_start, _iram_end, _rtc_force_slow_end;
extern int _tcm_text_start, _tcm_data_end; extern int _tcm_text_start, _tcm_data_end;
extern int _rtc_reserved_start, _rtc_reserved_end; extern int _rtc_reserved_start, _rtc_reserved_end;
@ -100,8 +100,8 @@ extern int _rtc_reserved_start, _rtc_reserved_end;
*/ */
// Static data region. DRAM used by data+bss and possibly rodata // Static data region. DRAM used by data+bss and possibly rodata
SOC_RESERVE_MEMORY_REGION((intptr_t)&_data_start, (intptr_t)&_heap_start_low, dram_data_low); SOC_RESERVE_MEMORY_REGION((intptr_t)&_data_start_low, (intptr_t)&_heap_start_low, dram_data_low);
SOC_RESERVE_MEMORY_REGION((intptr_t)&_bss_start_high, (intptr_t)&_heap_start_high, dram_data_high); SOC_RESERVE_MEMORY_REGION((intptr_t)&_data_start_high, (intptr_t)&_heap_start_high, dram_data_high);
// Target has a shared D/IRAM virtual address, no need to calculate I_D_OFFSET like previous chips // Target has a shared D/IRAM virtual address, no need to calculate I_D_OFFSET like previous chips
SOC_RESERVE_MEMORY_REGION((intptr_t)&_iram_start, (intptr_t)&_iram_end, iram_code); SOC_RESERVE_MEMORY_REGION((intptr_t)&_iram_start, (intptr_t)&_iram_end, iram_code);