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

start08.c里面初始化了sp,请问如何修改“__SEG_END_SSTACK”和长度

start08.c里面初始化了sp,请问如何修改“__SEG_END_SSTACK”和长度

请问如何修改“__SEG_END_SSTACK”和长度
能不用日货,尽量不用日货! 能不用日货,尽量不用日货! 能不用日货,尽量不用日货!
start08.c里面好象没有__SEG_END_SSTACK?
start08.c是Codewarrior的初始化文件,为什么要去修改?
你如果需要修改堆栈段和堆栈的长度的话可以在prm文件里面定义
谢谢!如何定义,请指教,我只看到了STACKSIZE,这个只能改长度,但是sp首地址如何改
能不用日货,尽量不用日货! 能不用日货,尽量不用日货! 能不用日货,尽量不用日货!
SP的首地址可以在用户主程序的初始化部分设置。
海纳百川  有容乃大
strongchen:请问,如何初始化,用哪个语句,比如我要实现0X50——>SP,在C里如何操作,请正面回答我好吗!求你了,大哥


[此贴子已经被作者于2005-4-28 21:26:07编辑过]

能不用日货,尽量不用日货! 能不用日货,尽量不用日货! 能不用日货,尽量不用日货!
SP的起始地址其实是PRM中定义的RAM(非零页地址)起始地址。它的运做是这样的。
在RAM开始的是你定义在其中的变量,变量是自动从最小地址排列到最大地址的,当然你也可以随意定义变量的物理地址(用@0x00??H),SP是从变量占用的最大地址开始计算,长度是由STACKSIZE指定。
所以如果你要改变SP的起始地址,可以将变量另定义一个区(不用DEFAULT RAM就行了),这样就可以了。即将默认变量、零页变量、SP分开定义到不同的地址区间就OK。
学后而问
明白,非常感谢!
能不用日货,尽量不用日货! 能不用日货,尽量不用日货! 能不用日货,尽量不用日货!
兄弟:能给我发个例子嘛??jimiko@tom.com

具体怎么分开啊!
RAM分成零页和非零页两块。如果不加说明,CodeWarrior的编译器会把全局变量都放入非零页中,因为它是DEFAULT_RAM(见PRM文件中)。堆栈也是放在非零页中的,紧跟在最后一个变量地址之后。如果要将变量放入零页地址,可以加上这样一句声明:

#pragma DATA_SEG MY_ZEROPAGE

其中MY_ZEROPAGE也是在PRM文件中定义的零页地址区。你可以看我上传的例子,在这个例子中,Ram_01放在零页中,而Ram_02放在非零页中。而且堆栈的大小也改为了0x60。

http://bbs.chinaecnet.com/uploadImages/gp32test.rar
海纳百川  有容乃大
请问更改sp的长度和首地址有什么用途???????????请给予解答
SP的首地址是必须初时化的,因为复位缺省值可能并不是你所要的值。设置SP的长度可以让编译器知道你需要多大的SP空间,是否有足够的空间。
海纳百川  有容乃大
返回列表