加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何计算程序占用的ROM和RAM空间大小?

(2012-06-28 13:06:39)
标签:

杂谈

分类: MCU
如何计算程序占用的ROM和RAM空间大小?
一直对怎么去计算程序占用的ROM和RAM空间大小不解,而且做项目的时候一般需要估算一下程序可能需要占用空间大小才好选取用多大ROM和RAM空间的MCU来做,举个简单的程序吧:程序功能实现LED闪烁:
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar temp;
sbit LED=P2^3;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
while(1)
{
LED=~LED;
delay(10);
}
}
这段程序占用单片机空间大小是怎么计算的呢?是不是这样:
定义了一个uchar的全局变量,占用1个字节,delay(uint z)形参(16位)定义不占用ROM,但运行时占用2字节的RAM,delay函数内部定义了两个uint(16位)的变量,占用2字节ROM,那是不是可以这样理解这段程序编译后占用单片机的ROM大小为:
ROM = 3Byte+ 引用头文件占用的ROM大小
运行时程序占用RAM大小:
RAM = ?不知道该怎么计算
不知道实际是怎么计算的,希望得到帮助,困惑好久了,谢谢!

 

这个是我某段程序编译后lst列表最后一段
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 138 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V6.12 LESSON2_3 07/22/2009 16:41:13 PAGE 2

XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
怎么看的?CODE SIZE = 138 是指代码有138字节?DATA SIZE = 3 指?
到底怎么看的呀,具体占用ROM,RAM怎么看出来的。太菜了,希望回答一下,谢了!

请LZ对应英文还有单片机的体系结构来看你的LIST文件

 

 

这个一般根据经验了。选大一点比较好。

你定义全局变量的话,是既要占用RAM空间也要ROM空间。而且是程序运行中始终占用的。
函数内部的局部变量和形参只占RAM空间,但是是暂时的,进入函数的时候申请,退出函数就消掉。所以只要RAM的空间够用就可以了。
CODE是指代码空间,应该也是ROM空间吧。
从List文件来看。Idate、data、bdate的加起来就是你ram的占空间了大小。Code就是你的ROM占空间大小

先抄一段网络上的说明给你,不过具体可能要看你的MCU的型号。如果是C51的,应该都差不多。
Cx51编译器对片内的RAM提供了三种存储器类型标识符:data,idata,bdata。data地址范围为:0x00~0x7F,位于data空间的变量以直接寻址方式操作,速度最快;idata地址范围为:0x00~0xFF,位于idata空间的变量一寄存器间接寻址方式操作,速度略慢于data空间;bdata地址范围为:0x20~0x2F,位于bdata空间的变量除了可以进行直接寻址或间接寻址外,还可以进行位操作。片外数据RAM简称XRAM,

Cx51提供了两个存储器类型标识符:xdata,pdata,xdata空间地址范围为:0x0000~0xFFFF,位于xdata空间的变量以MOVX@DPTR方式寻址,可以操作整个64K地址范围的变量,不过这种方式比较慢,pdata空间又称为片外分页XRAM空间,它将地址0x0000~0xFFFF均匀的分为256页,每页的地址都为0x00~0xFF,位于pdata空间的变量以MOVX@R0、MOVX@R1方式寻址。

好多年不搞MCU了,抛砖引玉吧~

 

刚找到相关资料,共享下:


  平台ARM下, make 增加-info sizes -info totals 可获得程序空间使用情况:
  Calculate the ROM and RAM requirements for your system as follows:
  ROM Code size + inline data + inline strings + const data + RW data
  RAM RW Data + 0-init data

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有