avr studio的优化级别哪个是最保险的?
avr studio的优化级别中-00-01-02-03-0s5个级别中哪个是最保险的说明是如下,如果不考虑代码大小问题 , 是不是不优化最好了,求大湿经验指点。
-00 无优化。
-01 减少代码尺寸和执行时间,不进行需要大量编译时间的优化。
-O2 几乎执行所有优化,而不考虑代码尺寸和执行时间。
-O3 执行-O2所有的优化,以及内联函数,重命名寄存器的优化。
-OS 针对尺寸的优化。执行所有-O2优化而不增加代码尺寸。
flash够的话最好不要优化,用代码优化的话经常会出现很奇怪的问题滴,特别是长的程序,有时候会查死人滴 不优化会慢非常非常多。
我都是用默认优化等级(-O1)。
我用Mega32做的一个12864VFD@180Hz驱动中,
-O1时,扫屏幕函数CPU占用在50%左右
-O0时,跟本无法正常扫描,实测仅仅有不到50Hz的刷新速度,CPU占用率接近100%。 本帖最后由 Gorgon_Meducer 于 2012-10-26 16:31 编辑
不优化很多时序性要求高的寄存器操作都会失败,典型的就是写EEPROM,还有设置系统分频
推荐-Os优化。全局变量注意加volatile,注意全局变量的原子操作,用for或者while延时的时候注意在中间加入 __asm__ __volatile__("nop"); 来抑制优化。 Gorgon_Meducer 发表于 2012-10-26 16:29 static/image/common/back.gif
不优化很多时序性要求高的寄存器操作都会失败,典型的就是写EEPROM,还有设置系统分频
推荐-Os优化。全局变 ...
赞同,高度优化,基本上注意下volatile就可以了 围观大侠解答 收藏下了 jimmy_xt 发表于 2012-10-26 16:21 static/image/common/back.gif
不优化会慢非常非常多。
我都是用默认优化等级(-O1)。
默认级别是-OS吧, 我是说avrstudio, Gorgon_Meducer 发表于 2012-10-26 16:29 static/image/common/back.gif
不优化很多时序性要求高的寄存器操作都会失败,典型的就是写EEPROM,还有设置系统分频
推荐-Os优化。全局变 ...
谢谢,全局变量注意加volatile,注意全局变量的原子操作,这个可以理解。
用for或者while延时的时候注意在中间加入 __asm__ __volatile__("nop")的作用的是什么了? leicai05 发表于 2012-10-27 18:31 static/image/common/back.gif
默认级别是-OS吧, 我是说avrstudio,
我想当然了,抱歉,的确是-OS{:sweat:} leicai05 发表于 2012-10-27 18:38 static/image/common/back.gif
谢谢,全局变量注意加volatile,注意全局变量的原子操作,这个可以理解。
用for或者while延时的时候注意 ...
防止被优化掉…… Gorgon_Meducer 发表于 2012-10-29 12:00 static/image/common/back.gif
防止被优化掉……
谢谢大湿
页:
[1]