Board logo

标题: [讨论]JB16中prm中RAM空间的大小分配 [打印本页]

作者: 流浪远方百合    时间: 2007-3-20 09:22     标题: [讨论]JB16中prm中RAM空间的大小分配

请教各位:我在cw中编译,从prm的 .map文件看出我的RAM大小是380字节,但是我实际计算下来我的ram空间变量只有占270byte,这是为什么尼,我的prm是系统自动生成的,
作者: strongchen    时间: 2007-3-20 09:38

可能还要包括堆栈的使用,包括局部变量、调用子程序和中断的情形。
作者: 流浪远方百合    时间: 2007-3-20 10:13

堆栈我已经包括了,局部变量、调用子程序、中断不是占用堆栈空间的吗?我现在问题是:我的RAM只有384byte,这样的话编译超出范围,(但是我的实际申请变量没有占到384)程序全速会溢出吗?
作者: seuafu2005    时间: 2007-3-20 13:21

可以把你的prm和编译后的.map文件传上来看看吗?

作者: 流浪远方百合    时间: 2007-3-21 16:28

我的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
作者: 流浪远方百合    时间: 2007-3-21 16:38

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是怎么回事?
作者: seuafu2005    时间: 2007-3-21 17:50

在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中间看到





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0