简体   繁体   中英

STM32 ExtRAM GCC-MAP file

I use STM32F417 with external 512*16 RAM under FreeRTOS. When I see a MAP file the address of used memory are still in the internal RAM. RTOS Heap def:

>   static unsigned char ucHeap[ 60*1024 ]__attribute__    > ((section(".ExRam")));

arm-gcc-link.ld file:

> rom (rx)  : ORIGIN = 0x08000000, LENGTH = 0x00100000  
> ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000  
>ram2 (rwx) : ORIGIN = 0x60000000, LENGTH = 0x00100000
>...
>ExRam (NOLOAD):    {       *(.ExRam.)  } > ram2
>...

MAP File:

> .ExRam    0x60000000     0xf000  
>*(.ExRam.)  
>.ExRam     0x60000000     0xf000 ..\obj\heap_4.o
> 
> .ARM.extab  *(.ARM.extab * .gnu.linkonce.armextab.*)
>           0x6000f000                __exidx_start = .

Variable , Why not in 0x6000000 area?:

>.bss           0x200053ac       0x2c ..\obj\tcp_in.o  
>.bss           0x200053d8        0x4 ..\obj\raw.o  
>.bss           0x200053dc       0x10 ..\obj\ip_addr.o  
>.bss           0x200053ec      0x100 ..\obj\ssl_ciphersuites.o
>.bss           0x200054ec      0x678 ..\obj\dns.o  
>.bss          0x20005b64        0x8 ..\obj\lwip_timers.o

The heap is used by malloc to allocate memory dynamically, at run time. The linker creates the map file at build time, before your code is running. The linker knows only about variables that are defined at compile time. The linker has no knowledge of how the heap will be used at run-time. Therefore the map file cannot possibly itemize the variables that may be created in the heap.

The variables that are listed in the map file in the .bss and .data sections are defined at compile time and statically allocated. They don't appear in the heap because that is not what the heap is for.

OK, I found that in the MAP file are not listed variables located in the extRAM heap. It means that object listed in RAM are lower size if there are variables located in the heap in extRAM but are not listed under heap address (0x6000000) same way like variables/object located in the internal RAM.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM