硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5317|回复: 4
收起左侧

[有问必答] 如何查看程序是否超出stm32的RAM?

[复制链接]

14

主题

37

回帖

79

积分

初级会员

积分
79
发表于 2020-11-27 16:56:10 | 显示全部楼层 |阅读模式
查找网上关于keil如何查看编译程序所占用的ROM与RAM。

查找结果
1. code , RO ,RW, ZI 表示内容
Code为程序代码部分
RO-data 表示 程序定义的常量const temp;
RW-data 表示 已初始化的全局变量
ZI-data 表示 未初始化的全局变量

单片机 FLASH 空间被谁占用了?
答案: code+ RO-data+ RW-data 。如果写的代码比较庞大超出了单片机的 FLASH

大小,此时就要考虑更换更大 FLASH 的单片机。


单片机 RAM 空间被谁占用了?
答案: RW-data + ZI-data 。 如果 RAM 超出了单片机的大小。就要考虑更换大 RAM
的型号。
//==============================================
分割线:以上为网上搜寻结果
//==============================================

对于stm32F103ZET6它有512Kbyte的FLASH,以及64Kbytes的RAM
以下是我一个工程编译后,map映射的数据。

      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   

    104932      18260     181012       1872     280544    1805723   Grand Totals
    104932      18260     181012        436     280544    1805723   ELF Image Totals (compressed)
    104932      18260     181012        436          0          0   ROM Totals

==============================================================================

    Total RO  Size (Code + RO Data)               285944 ( 279.24kB)
    Total RW  Size (RW Data + ZI Data)            282416 ( 275.80kB)
    Total ROM Size (Code + RO Data + RW Data)     286380 ( 279.67kB)

==============================================================================
既然RW Data + ZI Data表示单片机RAM的占用。此时的RAM为275.8KB,而使用的stm32F103ZET6只有64KB的RM。
为啥可以正常运行程序?编译之后的程序RAM已经远超过单片机自身的RAM.



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2020-11-27 17:00:15 | 显示全部楼层
看map文件里面的__initial_sp 是不是超了,如果是,那就确实超了
回复

使用道具 举报

14

主题

37

回帖

79

积分

初级会员

积分
79
 楼主| 发表于 2020-11-27 17:27:38 | 显示全部楼层
eric2013 发表于 2020-11-27 17:00
看map文件里面的__initial_sp 是不是超了,如果是,那就确实超了

感谢老大,我查了map
__initial_sp                             0x2000f7e8   Data           0  startup_stm32f103xe.o(STACK)
用了61.9765625KB,马上就要超了、、、、

本来想不外接SRAM,只是用MCU自己的RAM,再跑个emwin,减少点成本。现在还没加emwin就快用完了,看来要么外接SRAM,要么换片子了
回复

使用道具 举报

3

主题

49

回帖

58

积分

初级会员

积分
58
发表于 2024-1-9 09:22:31 | 显示全部楼层
上面计算的大小超过了芯片本身的大小是不是由于使用了动态分配的原因?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2024-1-9 10:42:39 | 显示全部楼层
跟着硬汉学 发表于 2024-1-9 09:22
上面计算的大小超过了芯片本身的大小是不是由于使用了动态分配的原因?

使用了外扩SRAM。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-27 19:27 , Processed in 0.176329 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表