ESP32: Fix heap initialization
This commit is contained in:
parent
a41c98952c
commit
9a9488ae92
@ -183,18 +183,14 @@ extern void g_intstackbase;
|
|||||||
extern uint32_t _init_start; /* Start of initialization logic */
|
extern uint32_t _init_start; /* Start of initialization logic */
|
||||||
extern uint32_t _stext; /* Start of .text */
|
extern uint32_t _stext; /* Start of .text */
|
||||||
extern uint32_t _etext; /* End+1 of .text + .rodata */
|
extern uint32_t _etext; /* End+1 of .text + .rodata */
|
||||||
extern const uint32_t _data_loaddr; /* Start of .data in FLASH */
|
|
||||||
extern uint32_t _sdata; /* Start of .data */
|
extern uint32_t _sdata; /* Start of .data */
|
||||||
extern uint32_t _edata; /* End+1 of .data */
|
extern uint32_t _edata; /* End+1 of .data */
|
||||||
|
extern uint32_t _srodata; /* Start of .rodata */
|
||||||
|
extern uint32_t _erodata; /* End+1 of .rodata */
|
||||||
extern uint32_t _sbss; /* Start of .bss */
|
extern uint32_t _sbss; /* Start of .bss */
|
||||||
extern uint32_t _ebss; /* End+1 of .bss */
|
extern uint32_t _ebss; /* End+1 of .bss */
|
||||||
#ifdef CONFIG_ARCH_RAMFUNCS
|
extern uint32_t _sheap; /* Start of heap */
|
||||||
extern uint32_t _sramfunc; /* Start of ramfuncs */
|
extern uint32_t _eheap; /* End+1 of heap */
|
||||||
extern uint32_t _eramfunc; /* End+1 of ramfuncs */
|
|
||||||
extern uint32_t _ramfunc_loadaddr; /* Start of ramfuncs in FLASH */
|
|
||||||
extern uint32_t _ramfunc_sizeof; /* Size of ramfuncs */
|
|
||||||
#endif /* CONFIG_ARCH_RAMFUNCS */
|
|
||||||
#endif /* __ASSEMBLY__ */
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Inline Functions
|
* Inline Functions
|
||||||
|
@ -67,11 +67,13 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#warning REVISIT heap. Do what with non-heterogeneous memory?
|
||||||
|
|
||||||
void up_allocate_heap(FAR void **heap_start, size_t *heap_size)
|
void up_allocate_heap(FAR void **heap_start, size_t *heap_size)
|
||||||
{
|
{
|
||||||
board_autoled_on(LED_HEAPALLOCATE);
|
board_autoled_on(LED_HEAPALLOCATE);
|
||||||
*heap_start = (FAR void *)g_idle_topstack;
|
*heap_start = (FAR void *)&_sheap;
|
||||||
*heap_size = CONFIG_RAM_END - g_idle_topstack;
|
*heap_size = (size_t)((uintptr_t)&_eheap - (uintptr_t)&_sheap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -85,16 +85,6 @@ void IRAM_ATTR __start(void)
|
|||||||
|
|
||||||
memset(&_sbss, 0, (&_ebss - &_sbss) * sizeof(_sbss));
|
memset(&_sbss, 0, (&_ebss - &_sbss) * sizeof(_sbss));
|
||||||
|
|
||||||
#warning Missing logic: Initialize .data
|
|
||||||
|
|
||||||
#warning REVISIT heap. Do what with non-heterogeneous memory?
|
|
||||||
#warning REVISIT belongs in up_allocateheap()
|
|
||||||
#if 0
|
|
||||||
/* Initialize heap allocator */
|
|
||||||
|
|
||||||
heap_alloc_caps_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Make sure that the APP_CPU is disabled for now */
|
/* Make sure that the APP_CPU is disabled for now */
|
||||||
|
|
||||||
regval = getreg32(DPORT_APPCPU_CTRL_B_REG);
|
regval = getreg32(DPORT_APPCPU_CTRL_B_REG);
|
||||||
|
@ -59,4 +59,4 @@ MEMORY
|
|||||||
|
|
||||||
/* Heap ends at top of dram0_0_seg */
|
/* Heap ends at top of dram0_0_seg */
|
||||||
|
|
||||||
_heap_end = 0x40000000 - CONFIG_ESP32_TRACEMEM_RESERVE_DRAM;
|
_eheap = 0x40000000 - CONFIG_ESP32_TRACEMEM_RESERVE_DRAM;
|
||||||
|
@ -56,7 +56,6 @@ SECTIONS
|
|||||||
|
|
||||||
_iram_text_start = ABSOLUTE(.);
|
_iram_text_start = ABSOLUTE(.);
|
||||||
*(.iram1 .iram1.*)
|
*(.iram1 .iram1.*)
|
||||||
*libfreertos.a:(.literal .text .literal.* .text.*)
|
|
||||||
*libphy.a:(.literal .text .literal.* .text.*)
|
*libphy.a:(.literal .text .literal.* .text.*)
|
||||||
*librtc.a:(.literal .text .literal.* .text.*)
|
*librtc.a:(.literal .text .literal.* .text.*)
|
||||||
*libpp.a:(.literal .text .literal.* .text.*)
|
*libpp.a:(.literal .text .literal.* .text.*)
|
||||||
@ -90,7 +89,7 @@ SECTIONS
|
|||||||
|
|
||||||
.dram0.data :
|
.dram0.data :
|
||||||
{
|
{
|
||||||
_data_start = ABSOLUTE(.);
|
_sdata = ABSOLUTE(.);
|
||||||
KEEP(*(.data))
|
KEEP(*(.data))
|
||||||
KEEP(*(.data.*))
|
KEEP(*(.data.*))
|
||||||
KEEP(*(.gnu.linkonce.d.*))
|
KEEP(*(.gnu.linkonce.d.*))
|
||||||
@ -103,14 +102,14 @@ SECTIONS
|
|||||||
KEEP(*(.gnu.linkonce.s2.*))
|
KEEP(*(.gnu.linkonce.s2.*))
|
||||||
KEEP(*(.jcr))
|
KEEP(*(.jcr))
|
||||||
*(.dram1 .dram1.*)
|
*(.dram1 .dram1.*)
|
||||||
_data_end = ABSOLUTE(.);
|
_edata = ABSOLUTE(.);
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_heap_start = ABSOLUTE(.);
|
_sheap = ABSOLUTE(.);
|
||||||
} >dram0_0_seg
|
} >dram0_0_seg
|
||||||
|
|
||||||
.flash.rodata :
|
.flash.rodata :
|
||||||
{
|
{
|
||||||
_rodata_start = ABSOLUTE(.);
|
_srodata = ABSOLUTE(.);
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
*(.rodata.*)
|
*(.rodata.*)
|
||||||
*(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */
|
*(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */
|
||||||
@ -122,7 +121,9 @@ SECTIONS
|
|||||||
*(.gnu.linkonce.e.*)
|
*(.gnu.linkonce.e.*)
|
||||||
*(.gnu.version_r)
|
*(.gnu.version_r)
|
||||||
*(.eh_frame)
|
*(.eh_frame)
|
||||||
|
|
||||||
. = (. + 3) & ~ 3;
|
. = (. + 3) & ~ 3;
|
||||||
|
|
||||||
/* C++ constructor and destructor tables, properly ordered: */
|
/* C++ constructor and destructor tables, properly ordered: */
|
||||||
__init_array_start = ABSOLUTE(.);
|
__init_array_start = ABSOLUTE(.);
|
||||||
KEEP (*crtbegin.o(.ctors))
|
KEEP (*crtbegin.o(.ctors))
|
||||||
@ -134,7 +135,9 @@ SECTIONS
|
|||||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
|
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
|
||||||
KEEP (*(SORT(.dtors.*)))
|
KEEP (*(SORT(.dtors.*)))
|
||||||
KEEP (*(.dtors))
|
KEEP (*(.dtors))
|
||||||
|
|
||||||
/* C++ exception handlers table: */
|
/* C++ exception handlers table: */
|
||||||
|
|
||||||
__XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
|
__XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
|
||||||
*(.xt_except_desc)
|
*(.xt_except_desc)
|
||||||
*(.gnu.linkonce.h.*)
|
*(.gnu.linkonce.h.*)
|
||||||
@ -142,7 +145,7 @@ SECTIONS
|
|||||||
*(.xt_except_desc_end)
|
*(.xt_except_desc_end)
|
||||||
*(.dynamic)
|
*(.dynamic)
|
||||||
*(.gnu.version_d)
|
*(.gnu.version_d)
|
||||||
_rodata_end = ABSOLUTE(.);
|
_erodata = ABSOLUTE(.);
|
||||||
/* Literals are also RO data. */
|
/* Literals are also RO data. */
|
||||||
_lit4_start = ABSOLUTE(.);
|
_lit4_start = ABSOLUTE(.);
|
||||||
*(*.lit4)
|
*(*.lit4)
|
||||||
|
Loading…
Reference in New Issue
Block a user