这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教Renesas工程师一个问题

共3条 1/1 1 跳转至

请教Renesas工程师一个问题

菜鸟
2008-05-26 19:56:39     打赏
用贵公司的3687开发产品有一段时间了,可是有一个简单的问题(堆和栈)没有弄明白:
开始新建工程师,一般采用的都是默认设置,只是在工程中会根据需要改变一下Section 设置,在生成向导中有Heap 和stacksize 两个选项。
请问:1. 选不选Heap 对程序会有影响吗? 我的程序并没有new,malloc 等关键字。我程序里设置#define HEAPSIZE 0x004,我试着将sbrk.c 删除掉,就会出现Undefined external symbol "_sbrk" referenced in "malloc" 错误。不知道为什么?
2. 据我了解,程序的中函数参数,临时变量等都会存放到栈(stack)中,可是我试着改变stack大小到很小,例如#pragma stacksize 0x10时候,程序仍然没有问题,运行正常,不知道是怎么回事?

.map 文件如下:
.。。。 。。。
PResetPRG
                                  00000400  0000041b        1c   2
PIntPRG
                                  0000041c  00000443        28   2
P
                                  00000800  00007d0f      7510   2
C
                                  00007d10  000083e5       6d6   2
C$DSEC
                                  000083e6  000083eb         6   2
C$BSEC
                                  000083ec  000083ef         4   2
D
                                  000083f0  00008433        44   2
CDataB
                                  0000a000  0000b757      1758   2
B
                                  0000e800  0000ec69       46a   2
R
                                  0000ec6a  0000ecad        44   2
S
                                  0000ef00  0000efff       100   2
BBEXT
                                  0000fd00  0000ff0f       210   2
C$INIT
                                  0000ff10  0000ff11         2   2



关键词: 请教     Renesas     工程师     一个     问题    

菜鸟
2008-05-27 19:50:00     打赏
2楼
多谢楼上的详细的分析。
对于第一个问题,我还是有一点不明白:我起初新建工程时候选了Heap,并设置了大小,但后来我发现这个对我应该没有用,所以我就试着将sbrk.c和sbrk.h删除,但删除后就会出现:Undefined external symbol "_sbrk" referenced in "malloc"  错误。很是不解。我的程序里没有malloc 函数啊。
盼回复。

菜鸟
2008-05-28 16:55:17     打赏
3楼
我仔细查了下程序,程序用C++做的,有的类中写了构造函数,我试着把所有的类的构造函数屏蔽掉就好了,我估计可能是构造函数调用了库函数malloc的原因,但不确定。

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]