dvhome 发表于 2007-9-29 08:19:15

总结归纳一下,关于IAR的程序优化设置,大家一起来讨论

IAR AVR 的程序优化,大家都有什么心得呢?

看论坛里的帖子,大部分说到的都只是两点:
1、中断里面修改到的变量需要用volatile
2、类似
      while(m)
         ;
的结构需要更改为
      while(m)
         __delay_cycles(1);


那么除了以上两点以外,还需要注意哪些方面呢?

我现在手头上的一个东西,用了上面的两个办法都还是不行,程序会跑飞

此外,在使用volatile的时候,有很多细节
比如,两个volatile变量不能同时在赋值号的两边
比如
volatile unsigned char i, j;

void test(void)
{
   i = j;
}
这样是不行的

那么就需要用
volatile unsigned char i, j;

void test(void)
{
    unsigned char temp;
    temp = i;
    j = temp;
}

这一类的细节大家也讨论一下啊,这一类的资料好像比较少,大部分谈volatile的资料都是说概念,具体实施细节很少人谈到

loves123 发表于 2007-9-29 10:33:15

恩,这个太需要了。

dvhome 发表于 2007-9-29 22:11:11

怎么大家现在都不用优化了吗??都来讨论讨论呀

Oliver 发表于 2007-9-29 22:56:36

用了IAR最高级别优化,代码和速度分别测试了一下,结果速度方式下代码更小.没有碰到过问题.

注意局部便量多时要改变堆栈设置.

dvhome 发表于 2007-9-29 23:13:29

要怎么改变堆栈设置呢??Oliver能不能说清楚一些?

dvhome 发表于 2007-10-3 15:23:01

顶起来,大家一起来讨论讨论~~

Oliver 发表于 2007-10-3 21:58:26

我是改了CSTACK,默认是32个,用来存临时变量,堆栈数据的.好象是太小,后来改成0x32了.

RSTACK是保存返回地址的,默认16,可以8级中断/函数调用.我改成24了.

liqu 发表于 2007-10-4 14:08:02

学习.

sem521562 发表于 2008-7-4 13:41:53

mark

max232 发表于 2008-7-4 16:51:47

这贴子要顶起来啊,有经验的朋友进来说说呀!~~~~`
个人觉得用编译器中的优化只是其一,其二就程序自身的编写方式,尽可能编写出简单高效的代码,个人在网上找过一点点资料,找个时间总结一下放上来;

2427295 发表于 2010-9-21 16:11:22

ding

ringan865 发表于 2010-9-21 21:27:23

mark

guolun 发表于 2010-10-7 15:27:07

大家探讨一下。我正转向IAR。打算放弃keil。

wxx116zh 发表于 2010-10-20 08:43:05

mark

leirui001 发表于 2010-10-20 12:58:16

IRA学习者顶起来~

hxs91 发表于 2011-8-15 18:49:31

顶一个

s2007s 发表于 2012-7-24 16:23:15

编译器优化问题 是个大问题

jzhang123 发表于 2012-9-14 15:02:18

代码优化程度过高也是有风险的,选择中等级的好些吧

monkerman 发表于 2012-9-14 23:26:00

细节确实很头疼!
页: [1]
查看完整版本: 总结归纳一下,关于IAR的程序优化设置,大家一起来讨论