原创 iar430中查看ram使用情况以及如何判断堆栈是否溢出(转)

2008-5-27 10:56 8207 11 8 分类: MCU/ 嵌入式

iar430中查看ram使用情况以及如何判断堆栈是否溢出 
       iar430中定义的变量是从ram的起始地址向上,而堆栈是从ram的终止地址向下。
以msp430f135为例,它是512bytes的ram,起始地址为200h,终止地址为3ffh,所以它的变量是从200h开始,向3ffh方向存放,而堆栈是从3ffh开始,向200h方向压栈。
当变量存储空间和堆栈最大占用空间在中间相遇时,就发生了堆栈溢出。

下面就详细介绍如何查看ram使用情况:


1   当然是烧程序到目标板里呀

2   选择window/memory,打开memory窗口


3   从ram的起始地址200h开始,输入200,再回车


4  选中200h~3ffh区域(135为512ram),右键选择memory fill……


5  在memory fill中的start写入:0x200,length写:512,value填入FF(也可填入其他值),被选中的区域全填充FF


6  运行程序,跑一遍设计的所有功能,再停止cspy,看看memory窗口


7  如果再填充的区域内已经没有FF存在,就说明已经发生堆栈溢出或是会有溢出的危险(ram刚好够用)。最好保留一定余量的ram不被改变,以防发生溢出

文章评论1条评论)

登录后参与讨论

用户377235 2012-10-16 13:51

不错不错

用户152217 2008-5-7 21:15

恩。是个很不错的文章。学习了。

用户141147 2008-4-30 08:26

差分倒是学习了,但还是有点儿看不懂这篇文章。有差距噢。

用户389463 2008-4-29 21:55

好文章,收藏,感谢!
相关推荐阅读
用户1093755 2009-10-30 16:36
移植Linux 2.6.30.4到mini2440(Kernel)
前言:    尽管linux-<?XML:NAMESPACE PREFIX = ST1 />2.6.31直接提供了对mini2440的支持,但移植过程中发现存在的问题比较多,所以最后决定使...
用户1093755 2009-10-30 14:32
linux2.6.16内核的升级
俗话说:"功夫不负有心人",通过编译Linux内核时才能真正体会到.曾经也失败过无数次,放弃过一段时间编译.最后通过自己不断的实践和在网上收集这方面资料,终于在前不久编译成功了.把我在网上收集的资料和...
用户1093755 2009-10-30 14:31
编译内核实践
p> ORCAD仿真数字电路PDF格式教程...个人感觉还不错...HEEH......
用户1093755 2009-10-30 14:31
浅谈Linux内核编译过程...
菜鸟编译Linux内核                        菜鸟俺,最近研究了一下Linux内核的编译,有些许心得,望同大家分享一下,故有此文…我们这里要谈的不涉及到源码,只是一些内核编译的...
用户1093755 2009-10-30 14:30
initrd-x.x.x.img文件分析-制作安装程序不支持的根文件系统
1、initrd img文件分析 Linux不能启动的很多原因都直接或者间接与initrd-x.x.x.img文件有关系,以我的系统为例(具有通用性):initrd-2.4.21-AS.2smp.im...
用户1093755 2009-05-12 15:55
适合C51的DES算法,使用RAM少
网上找的一个DES算法,在其基础上做了下修改DATA只占用23字节Program Size: data="23".0 xdata="163" code="4974"/*DES Arithmetic B...
我要评论
1
11
关闭 站长推荐上一条 /2 下一条