0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

剖析STM32的FLASH和SRAM的使用情况

FPGA之家 来源:嵌入式案例Show 作者:嵌入式案例Show 2021-04-09 17:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01前言

STM32片上自带FLASH和SRAM,简单讲FLASH用来存储程序的,SRAM是用来存储运行程序中的中间变量。本文详细分析下如何查看程序中FLASH和SRAM的使用情况。

本文开发工具: keil5

芯片: STM32F105VCT6

02FLASH和SRAM介绍

FLASH存储器又成为闪存,它与EEPROM都是掉电后数据不丢失的存储器,但是FLASH的存储容量都普遍的大于EEPROM,在存储控制上,最主要的区别是FLASH芯片只能一大片一大片地擦除,而EEPROM可以单个字节擦除。

SRAM是静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。STM32F1系列可以通过FSMC外设来拓展SRAM。

注意:SRAM和SDRAM是不相同的,SDRAM是同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。STM32的F1系列是不支持SDRAM的。

stm32不同型号的SRAM和FLASH大小是不相同的,可在datasheet中查看如下图:

08d40a92-990f-11eb-8b86-12bb97331649.png

08ee58de-990f-11eb-8b86-12bb97331649.png

03编译结果分析

在keil中编译结果如下图:

0915ec64-990f-11eb-8b86-12bb97331649.png

打开生成的map文件拉到最后可看到如下:

093488e0-990f-11eb-8b86-12bb97331649.png

编译结果里面几个的含义

Code:代码空间,本质是ARM指令( FLASH)。

RO-data:即 Read Only-data, 表示程序定义的常量,如 const 类型( FLASH)。

RW-data:即 Read Write-data, 非0初始化的全局和静态变量占用的RAM大小,同时还要占用等量的ROM大小用于存放这些非0变量的初值(FLASH+RAM)。

ZI-data:即 Zero Init-data, 0初始化的内存区的大小(该区域3个用途:0初始化的全局和静态变量+堆区+栈区)(RAM)。

由上可知:

程序占用FLASH=Code + RO-data + RW-data 即map文件中ROM size

程序占用RAM = RW-data + ZI-data 即map文件中RW size

常见的俩个疑问:

1、RW-data为什么会即占用Flash又占用RAM空间?

由前文知道RAM掉电数据会丢失,RW-data是非0初始化的数据,已初始化的数据需要被存储在掉电不会丢失的FLASH中,上电后会从FLASH搬移到RAM中。

2、为什么烧录的镜像文件不包含ZI-data呢?

我们都知道在烧写程序的时候,需要烧写bin文件或者hex文件到STM32的flash中,被烧写的文件称为镜像像文件image。image的内容包含这三个Code 、 RO-data 和 RW-data。

通过第一个问题大家应该有所理解,因为ZI数据是0,没必要包含,只要在程序运行前把ZI数据区域一律清零即可,包含进去反而浪费Flash存储空间。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154710
  • 存储器
    +关注

    关注

    39

    文章

    7715

    浏览量

    170856
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371180

原文标题:STM32的FLASH和SRAM的使用情况分析

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT32F系列 使用DMA将数据从FLASH传输到SRAM

    使用DMA将数据从FLASH传输到SRAM 下载示例 演示AT32F系列使用DMA将数据从FLASH传输到SRAM的使用方法。 注:本例程对应的代码是基于雅特力提供的V2.x.x
    发表于 12-03 16:26

    客户使用profinet转devicenet协议网关的使用情况分享

    Profinet
    jf_69310483
    发布于 :2025年12月03日 14:28:31

    在Keil5中查看栈大小

    :打开生成的.map文件,在Image Symbol Table部分查找栈的相关信息,包括栈的大小和使用情况。 3、利用IDE的功能: 方法说明:Keil编译器在编译过程中会自动跟踪堆栈的使用情况
    发表于 11-14 06:32

    如何检查EZ-USB™ CX3 上的 SRAM 使用情况(JTAG 不可用)?

    型的调试工具来实时监控内存使用情况。 是否有其他方法(例如构建报告、SDK 功能或EZ-USB™ Suite 内的工具)可以让我检查固件使用了多少 SRAM
    发表于 11-11 06:33

    如何在应用程序调试期间分析栈和堆使用情况

    随着 AMD Vitis 统一软件平台 2021.2 的发布,Vitis 引入了一个 Tcl 脚本,用于在应用程序运行的特定时间点协助查找栈和堆的内存使用情况。该脚本已延续到后续的 Vitis 版本
    的头像 发表于 10-24 16:54 589次阅读
    如何在应用程序调试期间分析栈和堆<b class='flag-5'>使用情况</b>

    手机无线充电发热量

    无线充电发热源于能量损耗,受材质、环境温度及使用情况影响,需注意散热以保护手机。
    的头像 发表于 10-13 08:14 502次阅读
    手机无线充电发热量

    STM32C011开发(3)----Flash操作

    STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍 STM32C011 的 Flash 结构与特性
    的头像 发表于 09-18 16:48 3639次阅读
    <b class='flag-5'>STM32</b>C011开发(3)----<b class='flag-5'>Flash</b>操作

    NAND Flash的基本原理和结构

    NAND Flash是什么?NAND Flash(闪存)是一种非易失性存储器技术,主要用于数据存储。与传统的DRAM或SRAM不同,NAND Flash在断电后仍能保存数据。它通过电荷
    的头像 发表于 09-08 09:51 5807次阅读
    NAND <b class='flag-5'>Flash</b>的基本原理和结构

    请问如何在Keil开发环境中查看代码大小和SRAM使用情况

    如何在Keil开发环境中查看代码大小和SRAM使用情况
    发表于 08-20 06:38

    请问如何仅使用软件和 TC375 精简板来测量函数调用的堆栈使用情况

    我想测量 AURIX TriCore™ TC3xx 项目的函数调用的堆栈使用情况。 我不知道该怎么做。 我知道事实上作为硬件我只有一个 TC375 lite 开发板,没有 BlueBox 或任何
    发表于 08-08 07:28

    如何将Flash刷写程序放到SRAM中运行?

    客户要求Flash driver不能存储在Flash中,需要在升级的时候,由CAN FBL发送到SRAM中,再运行SRAM中的Flash d
    发表于 07-15 07:22

    OBC/DC-DC/BMS/热管理/智能座舱磁性元件使用情况与要求

    理/智能座舱等功能模块中磁性元件使的用情况与性能要求,《磁性元件与电源》采访了敦源电子研发总监汪洪伟,为我们一一揭秘。 OBC/DC-DC/BMS/热管理/智能座舱磁性元件使用情况 随着新能源汽车向高集成化、智能化方向加速发展,磁性元件作为电子系统的“隐
    的头像 发表于 07-08 14:05 697次阅读
    OBC/DC-DC/BMS/热管理/智能座舱磁性元件<b class='flag-5'>使用情况</b>与要求

    请问如何优化OpenVINO™工具套件中的内存使用?

    运行OpenVINO™推断时找不到优化内存使用情况的方法。
    发表于 06-25 06:56

    S32G3有没有办法从.map文件确定SRAM使用情况

    我有 NXP S32G3 板。我有 .map 文件。有没有办法从 .map 文件确定 SRAM 使用情况。 非常感谢帮助。
    发表于 04-08 06:00

    请问STM32访问FPGA内部SRAM部分区域为何只能读不能写?

    采用STM32F427+FPGA+FlashSTM32通过FMC总线访问FPGA内部SRAM,起始地址为0x60000000; Flash中存储FPGA的配置数据,
    发表于 03-12 07:59