[求助]有在HC08上成功使用动态分配存储空间库函数的吗(已解决)
- UID
- 104380
- 性别
- 男
|
不知道CW是否支持。可以写信到cw_support@freescale.com问一下。 |
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
CW提供了库 stdlib.h 帮助中对malloc(), calloc(), realloc(), free()做了简单的调用说明,应该是支持的,这是C编译器通用的库 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
#include <stdlib.h> ... byte * addr; ... addr=(byte*)malloc(1); ... free((void*)addr);
[此贴子已经被作者于2006-8-18 16:49:11编辑过] |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
我这里编译运行都通过的
是不是你RAM分配哪里有重叠了? |
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
楼上是不是说,RAM中是否要给heap单独分配一块在prm文件中说明 |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
重新试了一下,我在S08系列的单片机上可以,HC08系列的的确编译没有通过,和楼主一样出现了error。
不知道为什么CW对两个系列的编译有不同,楼主可以试着发mail去问问。 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
产生这个问题的原因找到了。主要是因为在库文件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改为一个你需要的值,然后编译即可。 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
也可以参考此文档:
http://bbs.eccn.com/uploadImages/tn105.zip |
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
[求助]有在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编辑过] |
|
|
|
|
|
- UID
- 121350
- 性别
- 男
|
多谢了,回头试试
回顾:
打开(安装目录)\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编辑过] |
|
|
|
|
|
- UID
- 187540
- 性别
- 男
|
我想使用addr=(byte*)malloc(2);建立一个数据缓冲区,我只在main()中这么写,这样建立的缓冲区在什么地方啊?
如果我想把其放到RAM中的一个区域,怎么写啊??
芯片是:MC68HC908AZ60A |
|
|
|
|
|
- UID
- 187540
- 性别
- 男
|
真噪人:我装了HC08 V6.0 和 HC12 V4.6 在CW08 6.0\lib\hc08_lib.mcp 打开后,Target Settings Panels->Target Settings->Linker 选项中没有Libmaker for HC08 ,全是hc12 的。。。怎么改啊???急!!! |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|