stm32的内存分配以及text、bss、data段的意思

说到变量在stm32内存中的分配的有关问题,很少有人关注,关注的人中可以说的清楚里面的关系的又更加少了。

在写这篇博客之前我在网上找到了一些参考的文章:

http://blog.csdn.net/zyboy2000/article/details/7583007 这一篇文章讲的比较通俗易懂,对堆和栈的不同和相互之间的联系说的比较清楚。同时结合stm32划出了堆栈在内存中的地址的分配示意图。

下面引用原作者文章中部分的内容:

"堆和栈位置

通过MAP文件可知

 HEAP              0x200106f8   Section      512  startup_stm32f2xx.o(HEAP)

 STACK            0x200108f8   Section     1024  startup_stm32f2xx.o(STACK)

 __heap_base   0x200106f8   Data           0  startup_stm32f2xx.o(HEAP)  

__heap_limit    0x200108f8   Data           0  startup_stm32f2xx.o(HEAP)  

__initial_sp      0x20010cf8   Data           0  startup_stm32f2xx.o(STACK)

 

显然 Cortex-m3资料可知:__initial_sp是堆栈指针,它就是FLASH的0x8000000地址前面4个字节(它根据堆栈大小,由编译器自动生成)

显然堆和栈是相邻的。

图(1)

这一篇博文对于堆栈的理解是十分深刻的,但是不知道是什么原因,可能是因为我使用的是MDK编译器把,在查看xiang

 

posted @ 2015-09-29 00:01  散吧散吧  阅读(2390)  评论(0编辑  收藏  举报