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

[求助]有在HC08上成功使用动态分配存储空间库函数的吗(已解决)

不知道CW是否支持。可以写信到cw_support@freescale.com问一下。
海纳百川  有容乃大
CW提供了库 stdlib.h 帮助中对malloc(), calloc(), realloc(), free()做了简单的调用说明,应该是支持的,这是C编译器通用的库
能否把你的PROJECT贴上来看看。
海纳百川  有容乃大
#include <stdlib.h>
...
byte * addr;
...
addr=(byte*)malloc(1);
...
free((void*)addr);

[此贴子已经被作者于2006-8-18 16:49:11编辑过]

我这里编译运行都通过的
是不是你RAM分配哪里有重叠了?
楼上是不是说,RAM中是否要给heap单独分配一块在prm文件中说明
重新试了一下,我在S08系列的单片机上可以,HC08系列的的确编译没有通过,和楼主一样出现了error。
不知道为什么CW对两个系列的编译有不同,楼主可以试着发mail去问问。
产生这个问题的原因找到了。主要是因为在库文件ansii.lib中,heap的大小缺省定义为2000,超出了HC08的RAM范围。用户可以自己去改变库文件中的heap大小。方法是,打开..\CW08 V5.0\lib\hc08c目录下的项目文件hc08_lib.mcp,将其target选为“C no float”,然后打开..\CW08 V5.0\lib\hc08c\include目录下的头文件libdefs.h,将LIBDEF_HEAPSIZE的定义由2000改为一个你需要的值,然后编译即可。
海纳百川  有容乃大
也可以参考此文档:
http://bbs.chinaecnet.com/uploadImages/tn105.zip
海纳百川  有容乃大

[求助]有在HC08上成功使用动态分配存储空间库函数的吗(已解决)

CW5.0环境下,在使用malloc()时,

连接出错1102: Out of allocation space in segment RAM at address 0x120

free()也使用了,以释放空间,1个字节的空间都分配不了

[此贴子已经被作者于2006-8-18 14:11:43编辑过]

[此贴子已经被作者于2006-9-6 20:27:04编辑过]

多谢了,回头试试

回顾:

打开(安装目录)\lib\hc08c\include目录下的头文件libdefs.h,将LIBDEF_HEAPSIZE的定义由2000改为合适的值(视cup而定,文件中提示必须是4的倍数),例如256

然后找到开始菜单Codewarrir HCS08项(例如CW08 V5.0)->M68HC08 Libraries启动(安装目录)\lib\hc08c目录下的hc08_lib.mcp项目

我用的Target是默认的all Libraries(这样全部lib对HC08都有适用性),然后把Target Settings Panels->Target Settings->Linker由None改为Libmaker for HC08

最后用Make重新生成lib

在你的应用程序里再去使用动态分配内存库函数就OK了!

[此贴子已经被作者于2006-9-6 21:20:22编辑过]

返回列表