map文件分析 stm32_STM32在KEIL下的工程,编译出来的MAP文件,关于RAM内存的分析

主控CPU为STM32F207ZGT6,RAM 空间为128K,下图为MAP文件中,关于内存地址的分配(keil版本为4.72A)

[mw_shl_code=c,true] APBAHBPrescTable 0x20000000 Data 16 stm32f2xx_rcc.o(.data)

.data 0x20000010 Section 16 stm32f2x7_eth.o(.data)

.data 0x20000020 Section 4 dhcp.o(.data)

xid 0x20000020 Data 4 dhcp.o(.data)

.data 0x20000024 Section 13 mem.o(.data)

ram 0x20000024 Data 4 mem.o(.data)

ram_end 0x20000028 Data 4 mem.o(.data)

lfree 0x2000002c Data 4 mem.o(.data)

mem_sem 0x20000030 Data 1 mem.o(.data)

.data 0x20000034 Section 12 netif.o(.data)

netifnum 0x20000034 Data 1 netif.o(.data)

.data 0x20000040 Section 4 raw.o(.data)

raw_pcbs 0x20000040 Data 4 raw.o(.data)

.data 0x20000044 Section 4 udp.o(.data)

.data 0x20000048 Section 12 ip.o(.data)

ip_id 0x20000048 Data 2 ip.o(.data)

.data 0x20000054 Section 6 ip_frag.o(.data)

reassdatagrams 0x20000054 Data 4 ip_frag.o(.data)

ip_reass_pbufcount 0x20000058 Data 2 ip_frag.o(.data)

.data 0x2000005a Section 1 etharp.o(.data)

etharp_cached_entry 0x2000005a Data 1 etharp.o(.data)

.data 0x2000005c Section 36 main.o(.data)

.data 0x20000080 Section 12 netconf.o(.data)

.data 0x2000008c Section 8 stm32f2xx_it.o(.data)

.data 0x20000094 Section 44 app.o(.data)

time 0x200000a4 Data 4 app.o(.data)

LED_Flag 0x200000a8 Data 1 app.o(.data)

s_sendcount 0x200000ac Data 4 app.o(.data)

s_Net_Time 0x200000b0 Data 4 app.o(.data)

s_h485tonet 0x200000b4 Data 4 app.o(.data)

.data 0x200000c0 Section 14 h485.o(.data)

Counter10ms 0x200000c3 Data 1 h485.o(.data)

dev 0x200000c4 Data 1 h485.o(.data)

.data 0x200000d0 Section 20 updata.o(.data)

.data 0x200000e4 Section 4 systick.o(.data)

Ticks 0x200000e4 Data 4 systick.o(.data)

.data 0x200000e8 Section 8 udp_com.o(.data)

drop_cnt 0x200000e8 Data 4 udp_com.o(.data)

.data 0x200000f0 Section 4 stdout.o(.data)

.bss 0x200000f4 Section 15572 stm32f2x7_eth.o(.bss)

.bss 0x20003dc8 Section 4116 mem.o(.bss)

ram_heap 0x20003dc8 Data 4116 mem.o(.bss)

.bss 0x20004ddc Section 9947 memp.o(.bss)

memp_tab 0x20004ddc Data 24 memp.o(.bss)

memp_memory 0x20004df4 Data 9923 memp.o(.bss)

.bss 0x200074b8 Section 200 etharp.o(.bss)

arp_table 0x200074b8 Data 200 etharp.o(.bss)

.bss 0x20007580 Section 52 netconf.o(.bss)

.bss 0x200075b4 Section 4096 stm32f2xx_it.o(.bss)

.bss 0x200085b4 Section 5904 app.o(.bss)

.bss 0x20009cc4 Section 1024 crc32.o(.bss)

.bss 0x2000a0c4 Section 5476 h485.o(.bss)

.bss 0x2000b628 Section 2048 updata.o(.bss)

read_data_buf 0x2000b628 Data 1024 updata.o(.bss)

write_data_buf 0x2000ba28 Data 1024 updata.o(.bss)

STACK 0x2000be28 Section 16384 startup_stm32f2xx.o(STACK)[/mw_shl_code]

上面红色标记 STACK的起始地址为 0x2000be28

在这里有几个疑问:

1、栈空间是向低字节地址方向生长的,我定义的栈空间为16K Bytes,那么栈空间从 0x2000be28 地址向下生长,怎么会跟全局变量的地址write_data_buf 0x2000ba28的地址重合呢?

2、还有个疑问,就是堆空间在起始地址在哪里体现?我定义的堆空间大小为512字节?

你可能感兴趣的:(map文件分析,stm32)