STM32如何查看Flash和RAM使用空间以及如何压缩RAM的使用空间

本文介绍了使用KEIL编译器完成项目编译后,如何通过查看.MAP文件来了解程序占用的RAM空间,并提供了减少RAM占用的方法,包括如何删除不必要的变量或空间。

KEIL编译完成后,在Build Output窗口会出现一下信息:


Code是代码占用的空间;

RO-data是 Read Only 只读常量的大小,如const型;

RW-data是(Read Write) 初始化了的可读写变量的大小;

ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化;

简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code + RO Data + RW Data

程序运行的时候,芯片内部RAM使用的空间为:               RW Data + ZI Data

我的代码中,Flash占用空间code =24586字节+RO-data=626字节,RAM占用空间为RW-data=220字节+ZI-data=8308字节


下面介绍如何压缩RAM空间,主要是一些全局变量的定义,大家可以打开自己工程文件夹下面的OBJ文件夹,找到一个后缀为.MAP的文件,可以找到



如图 可以看到不同变量占用RAM空间的大小及地址,可以根据这个删除不必要的变量或空间,可以节省RAM空间,选择小RAM的芯片,降低成本


转载自:https://blog.youkuaiyun.com/jdsnpgxj/article/details/78605341

### STM32Flash RAM 的作用与区别 在 STM32 微控制器中,Flash RAM 是两种关键的存储器类型,它们各自承担着不同的功能,并在程序的运行中发挥着重要作用。 Flash 是一种非易失性存储器,用于存储程序代码以及常量数据。这意味着即使在断电的情况下,存储在 Flash 中的数据也不会丢失。在 STM32 中,Flash 通常保存程序的代码段(text段)、常量数据(如字符串常量变量)等,这些内容在程序运行期间不会被修改。Flash 的主要特点是写入速度相对较慢,并且有一定的写入寿命限制,即每个扇区可以承受的擦写次数是有限的[^2]。 RAM(随机存取存储器)是一种易失性存储器,用于存储程序运行时的变量数据。当 STM32 系统断电后,RAM 中的数据会丢失。RAM 主要用于存储程序运行期间的临时数据,如堆栈、全局变量、静态变量以及程序执行过程中产生的中间结果。由于 RAM 的读写速度快,它非常适合用于程序运行时的数据存储需求[^3]。 在 STM32 的开发过程中,正确配置 Flash RAM 的地址是非常重要的。在使用 Keil 开发 STM32 项目时,开发者需要在 Keil 的 Target 选项卡中设置 Flash RAM 的起始地址及大小。这些配置直接影响到程序的编译、烧录运行。例如,在链接器脚本中指定 Flash RAM 的地址大小,可以确保程序正确地分配内存,并且避免内存冲突[^1]。 ### STM32Flash RAM 的区别 - **非易失性 vs 易失性**:Flash 是非易失性的,即使在没有电源的情况下也能保持数据;而 RAM 是易失性的,断电后数据会丢失。 - **用途**:Flash 主要用于存储程序代码常量数据,而 RAM 用于存储程序运行时的变量数据。 - **读写特性**:Flash 的写入擦除操作相对较慢,并且有擦写次数的限制;RAM 的读写速度较快,且没有写入次数的限制。 - **成本密度**:通常情况下,Flash 的成本较高,但可以提供更大的存储密度;RAM 的成本相对较低,但在相同体积下提供的存储容量较小。 了解 STM32Flash RAM 的区别与作用对于优化程序性能、合理分配内存资源以及提高系统的稳定性具有重要意义。 ```c // 示例代码:定义一个全局变量一个常量字符串 char message[] = "Hello, STM32!"; // 存储在 RAM 中,因为它是可变的 const char greeting[] = "Welcome to STM32"; // 存储在 Flash 中,因为它是常量 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值