From a575b9e893ca649008cba5df97b0c0e107c6e08b Mon Sep 17 00:00:00 2001 From: Liu Zhi Fu Date: Fri, 6 Jan 2017 19:35:22 +0800 Subject: [PATCH] esp32: modify ld file to fix a crash issue --- components/esp32/heap_alloc_caps.c | 4 ++-- components/esp32/ld/esp32.common.ld | 2 +- components/esp32/ld/esp32.rom.ld | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/esp32/heap_alloc_caps.c b/components/esp32/heap_alloc_caps.c index 7bb3b40879..a89455835c 100644 --- a/components/esp32/heap_alloc_caps.c +++ b/components/esp32/heap_alloc_caps.c @@ -170,7 +170,7 @@ Warning: These variables are assumed to have the start and end of the data and i area used statically by the program, respectively. These variables are defined in the ld file. */ -extern int _bss_start, _heap_start, _init_start, _iram_text_end; +extern int _data_start, _heap_start, _init_start, _iram_text_end; /* Initialize the heap allocator. We pass it a bunch of region descriptors, but we need to modify those first to accommodate for @@ -183,7 +183,7 @@ void heap_alloc_caps_init() { //Compile-time assert to see if we don't have more tags than is set in heap_regions.h _Static_assert((sizeof(tag_desc)/sizeof(tag_desc[0]))-1 <= HEAPREGIONS_MAX_TAGCOUNT, "More than HEAPREGIONS_MAX_TAGCOUNT tags defined!"); //Disable the bits of memory where this code is loaded. - disable_mem_region(&_bss_start, &_heap_start); //DRAM used by bss/data static variables + disable_mem_region(&_data_start, &_heap_start); //DRAM used by bss/data static variables disable_mem_region(&_init_start, &_iram_text_end); //IRAM used by code disable_mem_region((void*)0x3ffae000, (void*)0x3ffb0000); //knock out ROM data region disable_mem_region((void*)0x40070000, (void*)0x40078000); //CPU0 cache region diff --git a/components/esp32/ld/esp32.common.ld b/components/esp32/ld/esp32.common.ld index c199a41d3d..833eb90969 100644 --- a/components/esp32/ld/esp32.common.ld +++ b/components/esp32/ld/esp32.common.ld @@ -103,7 +103,6 @@ SECTIONS *libesp32.a:panic.o(.rodata .rodata.*) _data_end = ABSOLUTE(.); . = ALIGN(4); - _heap_start = ABSOLUTE(.); } >dram0_0_seg /* Shared RAM */ @@ -127,6 +126,7 @@ SECTIONS *(COMMON) . = ALIGN (8); _bss_end = ABSOLUTE(.); + _heap_start = ABSOLUTE(.); } >dram0_0_seg .flash.rodata : diff --git a/components/esp32/ld/esp32.rom.ld b/components/esp32/ld/esp32.rom.ld index 6241ff840e..fef42c9528 100644 --- a/components/esp32/ld/esp32.rom.ld +++ b/components/esp32/ld/esp32.rom.ld @@ -87,9 +87,9 @@ PROVIDE ( _ctype_ = 0x3ff96354 ); PROVIDE ( __ctype_ptr__ = 0x3ff96350 ); PROVIDE ( __ctzdi2 = 0x4000ca64 ); PROVIDE ( __ctzsi2 = 0x4000c7f0 ); -PROVIDE ( _data_end = 0x4000d5c8 ); +PROVIDE ( _data_end_rom = 0x4000d5c8 ); PROVIDE ( _data_end_btdm_rom = 0x4000d4f8 ); -PROVIDE ( _data_start = 0x4000d4f8 ); +PROVIDE ( _data_start_rom = 0x4000d4f8 ); PROVIDE ( _data_start_btdm_rom = 0x4000d4f4 ); PROVIDE ( _data_start_btdm = 0x3ffae6e0); PROVIDE ( _data_end_btdm = 0x3ffaff10);