今天小编要和大家分享的是控制,MCU相关信息,接下来我将从如何对IAR单片机编程软件进行编译优化,(1)gcc编译试行这几个方面来介绍。

控制,MCU相关技术文章如何对IAR单片机编程软件进行编译优化(1)gcc编译试行

控制,MCU相关技术文章如何对IAR单片机编程软件进行编译优化

单片机编程软件是单片机开发不可缺少的工具之一,目前市场流通的单片机编程软件主要为IAR单片机编程软件和KEIL单片机编程软件。

一、编译优化选项

在iar中可以设置代码的编译优化等级,在工程名上右键选Options.。.,在弹框中选C/C++ Compiler--Optimizations,如下图所示。

如何对IAR单片机编程软件进行编译优化

左边的level里面是优化等级,右边的是附加选项。如果不想往下看了又有bug体质,就把这里的level选到None上面,点击OK。

二、优化还是不优化

优化的目的简单来说主要有两个,减少代码量和提高程序运行效率。随之而来的是什么呢?如果编译器误认为你写的延时是“低效率”代码,如果编译器认为某些变量的生命周期可以提前结束了,如果编译器认为某些变量你定义了没有使用就是没用,就会原地爆炸了。

所以还是有必要搞明白,优化到底优化了什么,才能决定要不要优化。

三、IAR优化了什么

1.None

有最好的debug支持,变量的生命周期会贯穿它的整个作用域,也就是说编译器不做任何优化,只要是变量的作用域,这个变量就是有效的。

最直观的的体现就是可以在live watch中查看该变量,如果它被优化了,就查看不了了。

如何对IAR单片机编程软件进行编译优化

2.Low

仍然是具备调试支持的,优化的是变量的生命周期,如果一个变量没有作用了,后面不会用到它了,就会把它优化掉,不让它贯穿它的整个生命周期。

这有什么好处呢?这个变量不存在了,就意味着寄存器的压力减小了很多,可以腾出更多空间给更有需要的变量。

3.Medium

除了上述优化以外,还加入了很多新的优化。

· Live-dead analysis and optimization

代码是否可用的分析和优化

· Dead code elimination

无用的代码清除。

· Redundant label elimination