打印

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

[复制链接]
4395|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
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文件估计看看!?然后在此基础上多开一点空间就是了。

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

是否是工具或者熔丝等设置问题?

使用特权

评论回复
5
499734424|  楼主 | 2011-8-31 11:39 | 只看该作者
今天又测试了一下 当CSTACK =0x1352


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


使用特权

评论回复
6
499734424|  楼主 | 2011-8-31 11:40 | 只看该作者
但是
CSTACK 加1都不行了

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





使用特权

评论回复
7
499734424|  楼主 | 2011-8-31 11:46 | 只看该作者
本帖最后由 499734424 于 2011-8-31 11:51 编辑

4# yewuyi FYWW.rar (19.15 KB)

map看了,最大才00000CD3

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

5.jpg (29.88 KB )

5.jpg

截图05.jpg (2.99 KB )

截图05.jpg

使用特权

评论回复
8
499734424|  楼主 | 2011-8-31 11:47 | 只看该作者
3# ayb_ice 禁止堆栈检查:funk:,不好吧?
要是程序跑到一半给飞了就麻烦了

使用特权

评论回复
9
ayb_ice| | 2011-8-31 13:11 | 只看该作者
8# 499734424
我就是那样做的,一直没有问题的

使用特权

评论回复
10
dqyubsh| | 2011-8-31 14:08 | 只看该作者
会不会是仿真器的问题,一直都不好用还是之前好用忽然不好用了?我用ATMEL原厂仿真器倒是没出过这事,挺皮的。

使用特权

评论回复
11
499734424|  楼主 | 2011-8-31 14:18 | 只看该作者
9# ayb_ice 是这样屏蔽吗?




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


程序无法运行

使用特权

评论回复
12
ayb_ice| | 2011-8-31 14:24 | 只看该作者
本帖最后由 ayb_ice 于 2011-8-31 14:31 编辑

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

未命名.JPG (122.04 KB )

未命名.JPG

使用特权

评论回复
13
499734424|  楼主 | 2011-8-31 15:29 | 只看该作者
12# ayb_ice
IAR的资料确实不多
在网上搜索了一下,关于 CSTACK RSTACK 的介绍也是只言片语 甚至iar的帮助都简单的很。
但是偏偏大家最不理解的就是


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




有请了解IAR方面的高手给大家普及一下 CSTACK 哦。

使用特权

评论回复
14
暖风吹过| | 2011-8-31 16:14 | 只看该作者
stack用不着那么多吧,我用的ICC设置到60就足够用了,stack只是在产生中断或者循环程序什么的保存现场用的。 再考虑考虑其他原因

使用特权

评论回复
15
499734424|  楼主 | 2011-8-31 19:26 | 只看该作者
10# dqyubsh 仿真器应该没有问题,一直都是好的,只是把程序修改了一下,仿真才出问题


而且换了几个也是一样的问题

使用特权

评论回复
16
499734424|  楼主 | 2011-8-31 21:11 | 只看该作者
顶一下~
有哪位大侠详细的讲解一下?

使用特权

评论回复
17
暖风吹过| | 2011-9-1 08:32 | 只看该作者
那应该还是你的程序的问题,是不是你的程序有好几个类似while(1)的功能函数,进入一个之后又进入另外一个,前一个while(1)中的变量一直没有释放的机会,导致一直是在压栈,没有出栈。这样导致栈小了不行,栈大了还占用过多的空间。

使用特权

评论回复
18
499734424|  楼主 | 2011-9-2 12:28 | 只看该作者
现在没有问题了,自己也不知道到底动了哪个起决定性的东西~
(程序个人感觉没有修改太大,但是把优化方式以及等级修改了。 最后就没有问题了:L)
还要探索探索~

谢谢大家积极的意见!

使用特权

评论回复
19
ayb_ice| | 2011-9-2 13:16 | 只看该作者
现在没有问题了,自己也不知道到底动了哪个起决定性的东西~
(程序个人感觉没有修改太大,但是把优化方式以及等级修改了。 最后就没有问题了:L)
还要探索探索~

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

IAR的优化确实不是很可靠,感觉没有KEIL严谨

使用特权

评论回复
20
zenghua520| | 2014-8-9 11:20 | 只看该作者
亲,我看不是你的堆栈问题,可能你的IDE设置问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:开始学习中~

5

主题

434

帖子

2

粉丝