首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[讨论]JB16中prm中RAM空间的大小分配

[讨论]JB16中prm中RAM空间的大小分配

请教各位:我在cw中编译,从prm的 .map文件看出我的RAM大小是380字节,但是我实际计算下来我的ram空间变量只有占270byte,这是为什么尼,我的prm是系统自动生成的,
不断学习,摸索中进步!
可能还要包括堆栈的使用,包括局部变量、调用子程序和中断的情形。
海纳百川  有容乃大
堆栈我已经包括了,局部变量、调用子程序、中断不是占用堆栈空间的吗?我现在问题是:我的RAM只有384byte,这样的话编译超出范围,(但是我的实际申请变量没有占到384)程序全速会溢出吗?
不断学习,摸索中进步!
可以把你的prm和编译后的.map文件传上来看看吗?
我的prm文件:
SECTIONS /* here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */
Z_RAM = READ_WRITE 0x0080 TO 0x00FF;
RAM = READ_WRITE 0x0100 TO 0x01FF;
ROM = READ_ONLY 0xBA00 TO 0xF9FF;
END

PLACEMENT /* here all predefined and user segments are placed into the SECTIONS defined above. */
DEFAULT_ROM INTO ROM;
DEFAULT_RAM INTO RAM;
_DATA_ZEROPAGE, MY_ZEROPAGE INTO Z_RAM;
END

STACKSIZE 0x40

VECTOR 0 _Start
不断学习,摸索中进步!
MODULE: -- main.c.o --
- PROCEDURES:
main BAB7 5D 93 0 .text
- VARIABLES:
com_buf 110 4B 75 31 .abs_section_110
MODULE: -- Start08.c.o --
- PROCEDURES:
loadByte BA00 17 23 5 .init
Init BA17 75 117 1 .init
_Startup BA8C 1A 26 0 .init
- VARIABLES:
_startupData BAA6 9 9 9 .startData
- LABELS:
__SEG_END_SSTACK 140 0 0 1
MODULE: -- MC68HC908JB16.C.o --
- PROCEDURES:

我不明白-SEG-END-SSTACK占用的140是怎么回事?
不断学习,摸索中进步!
在map文件中一般有这一段
Summary of section sizes per section type:
READ_ONLY (R): AD (dec: 173)
READ_WRITE (R/W): 50 (dec: 80)
NO_INIT (N/I): 62 (dec: 98)

READ_WRITE(R/W)就是使用到的RAM的大小,前面是16进制的数据。

SEG-END-SSTACK是堆栈的尾部地址,140是实际地址0x140,堆栈占用的地址可以在.map中的.stack中间看到
返回列表