硬件上的内存归为3类:
heap 堆
stack 栈
SRAM 静态存储区(全称为Static Random Access Memory)
Flash 闪存
SRAM:从编译开始就存在,在整个程序的运行周期一直存在,用于存放局部变量global,静态变量static
Flash:一般用于存放程序代码,掉电不消失,也可用于保存数据,还有一种EEPROM的内存也是数据掉电不消失,但是EEPROM的内存一般很小,只有几百Byte,而Flash一般都是MB级别的,Flash是以扇区为最小单位存在的,EEPROM则可以对单个地址的数据修改。
stack:用于存放局部变量,当变量所在函数运行完后,立即释放
heap:由malloc函数或者new指针分配,由free函数或者delect运算符释放,期间一直存在(慎用,小型硬件系统易崩溃)
在STM32F429IGT6中,芯片本身的SRAM有256KB,Flash有1024KB,堆和栈的大小我不太清楚,但是在CUBEMX生成工程时可以看到:
但是如果运行UI界面或者算法,SRAM是无法满足庞大的内存需求的,因此一般的开发板上都会帮你拓展一块静态存储区,我用的正点原子家的核心板上就嵌入了一块W9825G6KH,一块32MB的SDRAM(synchronous dynamic random access memory)同步动态存储区。
以上就是我对硬件系统中内存的一些讨论,大家有补充或者指正的欢迎在评论区留言。
原文:https://www.cnblogs.com/showtime20190824/p/11415584.html