【STM32】存储器(RAM,ROM/Flash),存储区(堆栈,全局区/静态区,常量区,代码区)以及二者之间的关系(以STM32F407ZGT6为例)

一、嵌入式系统主要存储器的分类

1.易失性存储器——RAM

(1)DRAM

        DRAM,动态随机存储器(Dynamic Random Access Memory, DRAM)。所谓Dynamic(“动态”),即要求RAM需要进行不断的刷新,才能实现数据的维持。其主要原理是利用电路中电容存储电量的多寡来确定当前位是0还是1,因此工作过程中需要对电容进行持续的充电。

         SDRAM,同步动态随机存储器(Synchronous Dynamic Random Access Memory, SDRAM),是DRAM的一种。在DRAM的基础上加上了时钟同步信号,在时钟沿到来时采集数据。

(2)SRAM

        SRAM,静态随机存储器(Static Random Access Memory, SRAM)。所谓静态,就是不需要对内存芯片进行刷新,只要保持上电,SRAM中的数据就不会丢失。这是因为电路中有锁存器,可以对数据进行锁存。

        STM32F407有四块片上SRAM:112KB SRAM1,16KB SRAM2,64KB CCM SRAM3,4KB Backup SRAM。

图源:STM32F4xx中文参考手册 p50 

        CCM( Core-Coupled Memory) RAM,是相比于普通SRAM更接近于处理器核心的高速内存,旨在提高数据和代码的访问速度,从而提升整个系统的性能。

(3)总结

        SRAM存取速度更快,但是成本更高。通常SRAM作为cache,而DRAM作为主存。

        片上SRAM的地址

图源:STM32F4xx中文参考手册 p57

备注:在别名空间中写就相当于在原始地址空间读-修改-写;在别名空间中读就相当于在原始地址空间中断读。

2.非易失性存储器——ROM、Flash

(1)EEPROM

        EEPROM,电可擦除存储器(Electrically Erasable Programmable ROM) 。掉电不丢失数据。擦除过程由内部电路控制,不需要外部手动清除。可以直接读写。

(2)NOR Flash

        NOR Flash,也称为NOR型闪存,是STM32片上Flash。分为多个区域。

图源:STM32F4xx中文参考手册 p59

        可以根据自举配置,自主选择程序下载后储存并且运行的位置。

   图源:STM32F4xx中文参考手册 p56

        通常情况下, BOOT0接地,因此选择主Flash作为自举空间。也就是将程序下载到Flash中,并在Flash中运行。

(3)NAND Flash

        NAND Flash由许多存储单元组成,每个存储单元可以存储一个或多个比特的数据。这些存储单元被分为页(Page)和块(Block),每页通常为2KB或4KB,每块通常为128KB或256KB。

(4)总结

NOR FlashNAND Flash
读取最小单位                字节                页
擦除最小单位                扇区                块
写入最小单位                字节                页
速度                读取更快                写入更快
寿命和可靠性                更高        较低,不过容量大
成本                较高                        较低

二、存储区空间存储的数据类型

1.栈

        存储局部变量,包括:函数内部定义的变量(未加static),函数的形式参数,函数的返回值,函数调用时的现场保护和返回地址,const修饰的局部常量。

2.堆

        malloc等函数动态分配空间的变量。分配以后必须使用free释放,避免堆泄露。

3.全局区/静态区

(1).bss段

        未初始化,或初始化值为0的全局变量或静态变量。不占用可执行文件的空间。

(2).data段

        经过初始化且初始化值非0全局变量或静态变量,const修饰的全局变量。

4.常量区

        字符串常量,不可修改。

5.代码区

        程序执行代码、字符串常量。

三、存储区在存储器上的位置

           SRAM     高地址
全局区/静态区.bss段
.data段
ROM/Flash常量区
低地址代码区

四、参考文章

norflash和nandflash的区别icon-default.png?t=N7T8https://blog.csdn.net/qq_38072731/article/details/140662386?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%A6%82%E4%BD%95%E5%8C%BA%E5%88%86nand%20%E5%92%8Cnor%20flash&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-140662386.142%5Ev100%5Epc_search_result_base2&spm=1018.2226.3001.4187

RAM、 ROM 、SRAM 、DRAM 、SDRAM 、DDR (2、3、4)SDRAM辨析icon-default.png?t=N7T8https://blog.csdn.net/m0_50932296/article/details/126340229?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172368580116800182776042%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=172368580116800182776042&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-126340229-null-null.142%5Ev100%5Epc_search_result_base2&utm_term=STM32%20sram%EF%BC%8Csdram%EF%BC%8Cdram%2Cram&spm=1018.2226.3001.4187

STM32分析栈、堆、全局区、常量区、代码区、RAM、ROM详细说明icon-default.png?t=N7T8https://blog.csdn.net/weixin_42108484/article/details/132289954?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172368300816800186536046%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172368300816800186536046&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-132289954-null-null.142%5Ev100%5Epc_search_result_base2&utm_term=STM32%20RAM%2CROM%2CFLASH&spm=1018.2226.3001.4187

  • 20
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bahair_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值