STM32程序占用的内存容量计算
生活随笔
收集整理的這篇文章主要介紹了
STM32程序占用的内存容量计算
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
STM32中程序占用內(nèi)存容量
Keil MDK下Code, RO-data,RW-data,ZI-data這幾個(gè)段:
- Code存儲(chǔ)程序代碼。
- RO-data存儲(chǔ)const常量和指令。
- RW-data存儲(chǔ)初始化值不為0的全局變量。
- ZI-data存儲(chǔ)未初始化的全局變量或初始化值為0的全局變量。
占用的Flash=Code + RO Data + RW Data;
運(yùn)行消耗的最大RAM= RW-data+ZI-data;
這個(gè)是MDK編譯之后能夠得到的每個(gè)段的大小,例如下圖Program Size 中的Code R0?RW ZI
可以計(jì)算出占用的FLASH = 34456+456+172=34.26kB,占用的RAM=172+18908=18.63kB
STM32F103芯片的內(nèi)存資源如下:
那么堆棧是如何分配的呢,堆棧的內(nèi)存占用就是在上面RAM分配給RW-data+ZI-data之后的地址開始分配。
堆:編譯器調(diào)用動(dòng)態(tài)內(nèi)存分配的內(nèi)存區(qū)域。
棧:程序運(yùn)行的時(shí)候局部變量的地方,先進(jìn)后出,這種結(jié)構(gòu)適合程序調(diào)用,所以局部變量用數(shù)組太大了都有可能造成棧溢出
堆棧溢出容易導(dǎo)致HaltFault。
堆棧大小的設(shè)置在啟動(dòng)文件start_stmf103xb.s中(以STM32F103為例):
總結(jié)
以上是生活随笔為你收集整理的STM32程序占用的内存容量计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 滑动置顶功能_VUE 实现滚动监
- 下一篇: 连接maven_如何在Eclipse中使