zoukankan      html  css  js  c++  java
  • 硬件上内存的分配问题(以STM32F429IGT6为例子)

    硬件上的内存归为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)同步动态存储区。

    以上就是我对硬件系统中内存的一些讨论,大家有补充或者指正的欢迎在评论区留言。

  • 相关阅读:
    HDU 4350 Card
    HDU 4287 Intelligent IME
    POJ Stars
    字符串处理
    NYOJ 63 小猴子下落
    在 DataGrid 控件中显示 SQL Server 数据库中的数据
    Linq to sql学习之查询句法
    SqlMethods
    SQLSERVER 2008 R2中的全文检索
    分享学习网站大全
  • 原文地址:https://www.cnblogs.com/showtime20190824/p/11415584.html
Copyright © 2011-2022 走看看