|
首次使用这个IC跟开发环境,很不熟悉。找不到解决办法,寻求帮助
开发环境是CodeWarrior 11
芯片:MC9S08AW60
问题描述:
在项目中使用malloc(10),申请一个动态内存,提示没有足够的RAM可以使用。去掉malloc,编译正常通过。
错误信息如下:
ERROR L1102: Out of allocation space in segment RAM at address 0x181
问题分析:
1、此IC总共有2K的RAM,项目中使用的变量数量并不大
2、ProcesorExprert.prm 文件如下:
NAMES
END
SECTIONS
Z_RAM = READ_WRITE 0x0070 TO 0x008F;
RAM = READ_WRITE 0x0090 TO 0x086F;
ROM = READ_ONLY 0x1860 TO 0xFFAF;
END
PLACEMENT
DEFAULT_RAM, /* non-zero page variables */
INTO RAM;
DEFAULT_ROM, ROM_VAR, STRINGS INTO ROM;
_DATA_ZEROPAGE, /* zero page variables */
MY_ZEROPAGE INTO Z_RAM;
END
INIT _EntryPoint /* The entry point of the application. This function is generated into the CPU module. */
STACKSIZE 0x0080 /* Size of the system stack. Value can be changed on the "Build options" tab */
因此,应该不是真的RAM不够使用。而是,没有正确分配heap大小造成的。
查NXP的论坛里面,有提到要修改libdefs.h中的
#define LIBDEF_HEAPSIZE 2000 大小,并重新编译生成"ansiis.lib"。但是,没有找到如何重新编译生成"ansiis.lib"的方法
望有了解的朋友帮个忙,谢谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|