OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4926|回复: 2

例程的makefile加O2优化和不加优化,效果有区别

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-5-21
在线时间
45 小时
发表于 2020-10-14 22:25:26 | 显示全部楼层 |阅读模式
8金钱
使用例程:中断的例程,其效果是灯大概500ms闪烁,检测按键中断控制蜂鸣器
对比:只修改makefile 里面的编译优化等级。原例程是加了O2优化,对比不加O2优化,其他代码都无改动
效果:1. 加了O2优化,灯闪烁比较快
          2. 不加O2优化,灯闪烁比较慢
疑问:为什么会这样?
  1. $(SOBJS) : obj/%.o : %.S
  2.         $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $[url=home.php?mod=space&uid=95564]@[/url] [        DISCUZ_CODE_16        ]lt;

  3. $(COBJS) : obj/%.o : %.c
  4.         $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ [        DISCUZ_CODE_16        ]lt;
复制代码
  1. $(SOBJS) : obj/%.o : %.S
  2.         $(CC) -Wall -nostdlib -c  $(INCLUDE) -o $@ [        DISCUZ_CODE_17        ]lt;

  3. $(COBJS) : obj/%.o : %.c
  4.         $(CC) -Wall -nostdlib -c  $(INCLUDE) -o $@ [        DISCUZ_CODE_17        ]lt;
复制代码


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-10-15 14:41:40 | 显示全部楼层
具体的情况可以了解下gcc交叉编译器的-O2选项,既然是优化,肯定在是编译为二进制文件的时候对其进行了优化操作,很大程度上会影响到代码执行的效率
森罗万象
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2019-5-21
在线时间
45 小时
 楼主| 发表于 2020-10-15 16:55:49 | 显示全部楼层
xiaotaotao 发表于 2020-10-15 14:41
具体的情况可以了解下gcc交叉编译器的-O2选项,既然是优化,肯定在是编译为二进制文件的时候对其进行了优化 ...

谢谢,我去了解一下。
之前一直用的是不跑linux的单片机,第一次接触,示例中采用死循环的延时方法,延时500ms,加上-O2优化和不加,这中间优化的效果人眼能明显能感觉到灯闪烁的间隔不同,感觉 gcc交叉编译器优化等级区别很大,因此很好奇是否我的哪个地方不对。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 18:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表