12961|5

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何计算程序占用的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 = ?不知道该怎么计算
不知道实际是怎么计算的,希望得到帮助,困惑好久了,谢谢!

最新回复

谢谢了,明白!  详情 回复 发表于 2009-10-19 11:34
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

编译后生成一个lst列表文件,在那里找最后的地址是多少,就得到了ROM空间。

里面或许可以看出RAM多少,但我没看过。我用汇编的
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个是我某段程序编译后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怎么看出来的。太菜了,希望回答一下,谢了!
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

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

回复

70

帖子

0

TA的资源

一粒金砂(初级)

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

你定义全局变量的话,是既要占用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了,抛砖引玉吧~
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢了,明白!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表