之前用5.17编译F4,F1,优化开O3和Speed,一直都没任何问题,最近有个新项目要用F7,就下了F7的Pack,结果很郁闷,优化只能用O0(就是不优化),否则一个Volatile全局变量都能优化出错,不开优化嘛,运行速度又只有60%,约等于是F7变回F4速度。不死心,上Keil下了个最新版本,河蟹后,默认是v5编译,结果还是一个吊样,开始怀疑人生,细看一下工程选项,发现ARM Compiler多了一个V6.7,试试O3编译,下载到板子上,眼前一亮,一点问题都没有,爽!然后试遍各个优化等级,全部通过! 所以说,白老鼠还是值得做一下的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
前几天在Keil官网下的
之前我也好奇看过mdk(我的mdk版本是5.23)的option。上面有3个编译选项(我一般都是使用默认的),哪位大神能解释下3个有什么区别和联系(如下图)?
000.png (24.8 KB, 下载次数: 0)
下载附件
2018-3-16 19:50 上传
Default是使用V5的编译器,和选V5.06的一样的(默认用这个),V6开头的是用大名顶顶的Clang,在MDK就是ARMClang,看了ARM官方文档,V5版本的已经停止开发,以后只维护。ARM推荐大家都使用V6版本的编译器,编译速度和优化出来的代码都有优势(因优化而产生Bug的几率减少)。刚才试了一下,V6比V5的编译速度快一倍左右。不过Clang的Warning太多了,要自己手工屏蔽一下(ST的HAL库,默认设置有1600多个Warning,汗....)。
一周热门 更多>