IAR AVR 仿真出错,个人感觉好像不是Stack设置太小

[复制链接]
5442|19
 楼主| 499734424 发表于 2011-8-30 19:52 | 显示全部楼层 |阅读模式
IAR avr 仿真出现如此情况

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 499734424 发表于 2011-8-30 19:55 | 显示全部楼层
点确定后
Stack 为0x1000 已经很大了
但还是会







如果采用Stack 为0x1900 就会编译报错






芯片采用的是AVR 1284P
只make时(前提Stack=0x1000)

47 610 bytes of CODE  memory (+                4 range fill )  

  7 182 bytes of DATA  memory (+ 3 890 absolute )  

    156 bytes of XDATA memory (+     2 absolute )  





看map文件

才0xcd3啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2011-8-31 08:22 | 显示全部楼层
IAR的这个最烦,好象可以禁止堆栈检查,我用的是51,也有类似问题
yewuyi 发表于 2011-8-31 09:09 | 显示全部楼层
你的代码大概用多少堆栈空间,你可以估计或者看MAP文件估计看看!?然后在此基础上多开一点空间就是了。

但俺感觉你这似乎不是堆栈的问题。

是否是工具或者熔丝等设置问题?
 楼主| 499734424 发表于 2011-8-31 11:39 | 显示全部楼层
今天又测试了一下 当CSTACK =0x1352


编译可以(仿真也没有问题)
编译结果如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 499734424 发表于 2011-8-31 11:40 | 显示全部楼层
但是
CSTACK 加1都不行了

数据手册上说1284p有16K RAM 啦





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 499734424 发表于 2011-8-31 11:46 | 显示全部楼层
本帖最后由 499734424 于 2011-8-31 11:51 编辑

4# yewuyi

map看了,最大才00000CD3

熔丝没有问题的 用的是AVR Studio 4.16

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 499734424 发表于 2011-8-31 11:47 | 显示全部楼层
3# ayb_ice 禁止堆栈检查:funk:,不好吧?
要是程序跑到一半给飞了就麻烦了
ayb_ice 发表于 2011-8-31 13:11 | 显示全部楼层
8# 499734424
我就是那样做的,一直没有问题的
dqyubsh 发表于 2011-8-31 14:08 | 显示全部楼层
会不会是仿真器的问题,一直都不好用还是之前好用忽然不好用了?我用ATMEL原厂仿真器倒是没出过这事,挺皮的。
 楼主| 499734424 发表于 2011-8-31 14:18 | 显示全部楼层
9# ayb_ice 是这样屏蔽吗?




编译虽然没有问题,不过 用JTAGICE XPII仿真全速运行,却一直报告进入睡眠模式


程序无法运行

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2011-8-31 14:24 | 显示全部楼层
本帖最后由 ayb_ice 于 2011-8-31 14:31 编辑

如图所示
我对IAR不太熟悉,资料也少,不明白本质
总之,JTAG调试时,经常出现错误对话框,禁止后就好了,也没有其它问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 499734424 发表于 2011-8-31 15:29 | 显示全部楼层
12# ayb_ice
IAR的资料确实不多
在网上搜索了一下,关于 CSTACK RSTACK 的介绍也是只言片语 甚至iar的帮助都简单的很。
但是偏偏大家最不理解的就是


我给弄成时间最大优化,现在暂时没有出现问题了。
不过心里没底啊,谁知道到时候会不会还出现其他未知故障?
不过还是谢谢您!




有请了解IAR方面的高手给大家普及一下 CSTACK 哦。
暖风吹过 发表于 2011-8-31 16:14 | 显示全部楼层
stack用不着那么多吧,我用的ICC设置到60就足够用了,stack只是在产生中断或者循环程序什么的保存现场用的。 再考虑考虑其他原因
 楼主| 499734424 发表于 2011-8-31 19:26 | 显示全部楼层
10# dqyubsh 仿真器应该没有问题,一直都是好的,只是把程序修改了一下,仿真才出问题


而且换了几个也是一样的问题
 楼主| 499734424 发表于 2011-8-31 21:11 | 显示全部楼层
顶一下~
有哪位大侠详细的讲解一下?
暖风吹过 发表于 2011-9-1 08:32 | 显示全部楼层
那应该还是你的程序的问题,是不是你的程序有好几个类似while(1)的功能函数,进入一个之后又进入另外一个,前一个while(1)中的变量一直没有释放的机会,导致一直是在压栈,没有出栈。这样导致栈小了不行,栈大了还占用过多的空间。
 楼主| 499734424 发表于 2011-9-2 12:28 | 显示全部楼层
现在没有问题了,自己也不知道到底动了哪个起决定性的东西~
(程序个人感觉没有修改太大,但是把优化方式以及等级修改了。 最后就没有问题了:L)
还要探索探索~

谢谢大家积极的意见!
ayb_ice 发表于 2011-9-2 13:16 | 显示全部楼层
现在没有问题了,自己也不知道到底动了哪个起决定性的东西~
(程序个人感觉没有修改太大,但是把优化方式以及等级修改了。 最后就没有问题了:L)
还要探索探索~

谢谢大家积极的意见! ...
499734424 发表于 2011-9-2 12:28

IAR的优化确实不是很可靠,感觉没有KEIL严谨
zenghua520 发表于 2014-8-9 11:20 | 显示全部楼层
亲,我看不是你的堆栈问题,可能你的IDE设置问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:开始学习中~

5

主题

434

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部