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
努力才可成功!信仰不是别人给你说一百遍的一句话,而是你被撞的头破血流后的幡然悔悟!有时候一个道理你会花几年才会明白。虽然这只是一个简单的道理!