搜索
bottom↓
回复: 5

请教关于NEC堆栈的相关问题

[复制链接]

出0入0汤圆

发表于 2009-11-17 16:53:04 | 显示全部楼层 |阅读模式
我用的是NEC的78F0503。想问下堆栈的起始地址是多少?最大是多少?可以设置吗?在内存中堆栈是不是不能分配在SADDR区?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-11-18 09:12:40 | 显示全部楼层
1、编译器根据你的程序设置情况有一个默认值。
2、最大就是internal high speed RAM的大小,但这个一般不可能,因为总要有一些变量吧。
3、可以设置,但建议不设置,目前编译器会把变量使用之外的RAM都分给堆栈,所以是可用的最大的堆栈。
4、可以。不过为了简单起见,你可以把变量放在SADDR区域,这样也能给堆栈多一些空间。

出0入0汤圆

 楼主| 发表于 2009-11-18 17:36:39 | 显示全部楼层
我可以查询堆栈的起始地址是多少吗?怎么查?还有,你说internal high speed RAM除了定义的一些变量其他都给了堆栈,但是在MAP文件中没有用完的一般RAM和没有用完的SADDR的内存不是连续的,怎么能够给堆栈呢?是不是只是一般RAM中没用完的部分才给了堆栈,但是手册上也说了堆栈可以使用SADDR区啊!
感觉NEC的堆栈搞的好模糊啊!其他单片机在堆栈这方面都很清晰啊!请高手指教!

出0入0汤圆

发表于 2009-11-19 09:15:31 | 显示全部楼层
在你的工程里有个文件的后缀名是.sym,里面好像有两个变好STBNG,STEND,没记错的话是叫这两个名字,后面的数对应的是堆栈的起始和结束地址。
默认情况下SADDR区域好像不会给堆栈。
没有用完的一般RAM就是默认情况下的堆栈大小。
我上面说了,干吗非要把堆栈放到SADDR区呢,你把变量尽量放在SADDR不是挺好吗。当然,或许你有特殊的用法。
如果你非要改的话,可以用修改链接文件等方法。
具体的使用你还是咨询NEC吧。他们的手册太多,我记不清了。

感觉NEC在工具这方面是试图作的“傻瓜化”一些,所以在工程表面不能很明显看出如何修改。
其它的单片机由于很多配置需要自己修改,所以给得很详细。
我觉得这是习惯,一开始我也不习惯。

出0入0汤圆

 楼主| 发表于 2009-11-20 09:27:13 | 显示全部楼层
谢谢!我已经知道了!

出0入0汤圆

发表于 2009-11-23 21:28:57 | 显示全部楼层
搂主的问题是这样的,请查阅你的项目文件夹里面以*.sym的文件,里面有个两个段名,stbeg和stend对应的地址分别表示堆栈的起始地址和结束地址。变量和堆栈是对开的,RAM是从高地址向下走,堆栈是从低地址向上走,如果在运行时出现交会就会有问题,所以变量和临时变量等占用的ram空间剩下的下面的空间就是stack 空间。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 09:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表