leicai05 发表于 2012-10-26 15:03:41

avr studio的优化级别哪个是最保险的?

avr studio的优化级别中-00-01-02-03-0s5个级别中哪个是最保险的
说明是如下,如果不考虑代码大小问题 , 是不是不优化最好了,求大湿经验指点。


-00 无优化。
-01 减少代码尺寸和执行时间,不进行需要大量编译时间的优化。
-O2 几乎执行所有优化,而不考虑代码尺寸和执行时间。
-O3 执行-O2所有的优化,以及内联函数,重命名寄存器的优化。
-OS 针对尺寸的优化。执行所有-O2优化而不增加代码尺寸。

tony90 发表于 2012-10-26 15:22:08

flash够的话最好不要优化,用代码优化的话经常会出现很奇怪的问题滴,特别是长的程序,有时候会查死人滴

jimmy_xt 发表于 2012-10-26 16:21:02

不优化会慢非常非常多。
我都是用默认优化等级(-O1)。

我用Mega32做的一个12864VFD@180Hz驱动中,
-O1时,扫屏幕函数CPU占用在50%左右
-O0时,跟本无法正常扫描,实测仅仅有不到50Hz的刷新速度,CPU占用率接近100%。

Gorgon_Meducer 发表于 2012-10-26 16:29:47

本帖最后由 Gorgon_Meducer 于 2012-10-26 16:31 编辑

不优化很多时序性要求高的寄存器操作都会失败,典型的就是写EEPROM,还有设置系统分频
推荐-Os优化。全局变量注意加volatile,注意全局变量的原子操作,用for或者while延时的时候注意在中间加入 __asm__ __volatile__("nop"); 来抑制优化。

yurinacn 发表于 2012-10-26 16:39:21

Gorgon_Meducer 发表于 2012-10-26 16:29 static/image/common/back.gif
不优化很多时序性要求高的寄存器操作都会失败,典型的就是写EEPROM,还有设置系统分频
推荐-Os优化。全局变 ...

赞同,高度优化,基本上注意下volatile就可以了

yklstudent 发表于 2012-10-26 21:30:04

围观大侠解答 收藏下了

leicai05 发表于 2012-10-27 18:31:43

jimmy_xt 发表于 2012-10-26 16:21 static/image/common/back.gif
不优化会慢非常非常多。
我都是用默认优化等级(-O1)。



默认级别是-OS吧, 我是说avrstudio,

leicai05 发表于 2012-10-27 18:38:01

Gorgon_Meducer 发表于 2012-10-26 16:29 static/image/common/back.gif
不优化很多时序性要求高的寄存器操作都会失败,典型的就是写EEPROM,还有设置系统分频
推荐-Os优化。全局变 ...

谢谢,全局变量注意加volatile,注意全局变量的原子操作,这个可以理解。
用for或者while延时的时候注意在中间加入 __asm__ __volatile__("nop")的作用的是什么了?

jimmy_xt 发表于 2012-10-27 19:56:04

leicai05 发表于 2012-10-27 18:31 static/image/common/back.gif
默认级别是-OS吧, 我是说avrstudio,

我想当然了,抱歉,的确是-OS{:sweat:}

Gorgon_Meducer 发表于 2012-10-29 12:00:32

leicai05 发表于 2012-10-27 18:38 static/image/common/back.gif
谢谢,全局变量注意加volatile,注意全局变量的原子操作,这个可以理解。
用for或者while延时的时候注意 ...

防止被优化掉……

leicai05 发表于 2012-10-29 14:44:04

Gorgon_Meducer 发表于 2012-10-29 12:00 static/image/common/back.gif
防止被优化掉……

谢谢大湿
页: [1]
查看完整版本: avr studio的优化级别哪个是最保险的?