NXP MCU 技术论坛
直播中

叹久

9年用户 783经验值
擅长:可编程逻辑 光电显示 接口/总线/驱动
私信 关注
[问答]

如何使用S08 MCU CODEWARRIOR 11.1为MALLOC设置堆大小?


我有一个用于 MC9S08PT32 的工作 C 项目,需要使用 malloc() 为少量内存添加一些内容,比如 30 字节。
编译时,我得到“段 RAM 0x010B 中的分配空间不足”。
在此处找到这篇文章  并更改了 libdefs.h 中的以下原始定义:
---------------------------------------------- --
#define LIBDEF_HEAPSIZE 2000
/*!< 根据您的要求调整,nofBytes = LIBDEF_HEAPSIZE,必须是 4 的倍数!*/
---------------------------------------------- --
libdefs.h 位于我的磁盘中:
C:\Freescale\CW MCU v11.1\MCU\lib\hc08c\include\
#define LIBDEF_HEAPSIZE 160
无论如何,我仍然收到完全相同的错误消息。似乎“堆”只是一个数组,占用了我的 .PRM 链接器文件中为此 MCU 定义的一部分 RAM 段:
SEGMENTS /* 这里列出了设备的所有 RAM/ROM 区域。在下面的 PLACEMENT 中使用。*/
Z_RAM = READ_WRITE 0x0040 TO 0x00FF;
RAM = READ_WRITE 0x0100 至 0x05FF;
MY_STK = NO_INIT 0x0600 至 0x103F;
ROM = READ_ONLY 0x8000 至 0xFF6F;
ROM1 = READ_ONLY 0xFF80 至 0xFFAF;
EEPROM = READ_ONLY 0x3100 至 0x31FF;
/* INTVECTS = READ_ONLY 0xFFB0 到 0xFFFF;为中断向量保留 */
END
在这篇提到的帖子的解决方案中包括重新编译库,我真的不知道该怎么做。
我的问题是这是否真的有必要,或者是否有更简单的方法来使这个定义起作用,就像配置 .PRM 链接器文件一样。我验证了在重新编译项目时,新定义被认为是有效的,只是删除了 #define 中的 # 并检查这是否会产生语法错误。我认为这就是所需要的。
有人可以帮助我详细解释如何使这项工作在我的项目中使用 malloc() 吗?

更多回帖

发帖
×
20
完善资料,
赚取积分