]> granicus.if.org Git - esp-idf/commitdiff
esp32: modify ld file to fix a crash issue
authorLiu Zhi Fu <liuzhifu@espressif.com>
Fri, 6 Jan 2017 11:35:22 +0000 (19:35 +0800)
committerWu Jian Gang <wujiangang@espressif.com>
Sat, 7 Jan 2017 08:12:07 +0000 (16:12 +0800)
components/esp32/heap_alloc_caps.c
components/esp32/ld/esp32.common.ld
components/esp32/ld/esp32.rom.ld

index 7bb3b408791ebc207351b8db9095d9247198230a..a89455835c387cd769e7aa331cf9b6f9b4b46271 100644 (file)
@@ -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
index c199a41d3d2aa8c240cc3b51af3c997aaa71a3d6..833eb9096921c81c5d790b0dc0094e890b823f84 100644 (file)
@@ -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 :
index 6241ff840ebbf609f84253568c0181f05ae15206..fef42c9528df59162adb41ab3555caa803ab6c4e 100644 (file)
@@ -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);