OpenEdv-开源电子网

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

关于One ELF section per Function的优化功能

[复制链接]

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
发表于 2020-5-1 19:36:57 | 显示全部楼层 |阅读模式
10金钱
在战舰开发板的定时器中断实验中,定时500ms,时间到,LED对应IO状态翻转。为了翻转IO,我定义了一个静态局部变量,让这个变量0101的变化,然后根据这个变量设置IO状态。(不要吐槽为什么不读取IO再翻转)。让这个变量0101反复变化的写法不同,下载效果也不同。

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

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
 楼主| 发表于 2020-5-1 19:41:04 | 显示全部楼层
本帖最后由 charge 于 2020-5-1 20:08 编辑

在选择One ELF section per Function以及使用stlink烧录(设置已选择reset and run)的情况下,方法1,2可以让LED闪烁,不需要按复位。方法3点击Load按钮下载程序后,现象:延时了一会直接亮绿灯并保持在绿灯,按一下复位LED才开始闪烁。因为在调试模式下现象和数值都正常,所以无法使用watch来看tim2_flag的值,最后实测tim2_flag的数值变成了254。在不选择One ELF section per Function以及使用stlink烧录的情况下,方法123都可以让LED闪烁,不需要按复位


百度One ELF section per Function,和汇编相关了有点看不懂,说是为了冗余函数的优化
尝试解决:使用软件仿真和硬件仿真,打断点在51行和56均能够进入,无法通过仿真重现。


问题:为什么One ELF section per Function优化后,下载那一下,tim2_flag会变成254,导致现象不正确,而且复位后又正常了
QQ图片20200501193940.png
QQ图片20200501195246.png
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2020-5-2 09:17:09 | 显示全部楼层
使用One ELF section per Function,ROM占用会增加。
回复

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
 楼主| 发表于 2020-5-2 09:53:27 | 显示全部楼层
C:\Users\Administrator\Desktop昨天写的怎么今天还没审核过。。
QQ图片20200501195246.png
回复

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
 楼主| 发表于 2020-5-2 09:57:47 | 显示全部楼层
本帖最后由 charge 于 2020-5-2 10:04 编辑

在keil5使用stlink(已选用reset and run)下载程序,如果使用方法3,下载进去绿灯直接亮并保持,按下复位后才开始闪烁。使用软件仿真和硬件仿真均能够进入51行的和56行的断点,现象正常。后来对比例程发现One ELF section per Function功能在例程中没有选上,我把它取消后的确就正常了,下载进去就闪烁不需要复位。然后方法1,2以及直接翻转IO的方式,选了One ELF section per Function也没事,直接下载就直接闪烁。
回复

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
 楼主| 发表于 2020-5-2 10:05:36 | 显示全部楼层
以前都是用stlink一键下载看现象的,这次需要复位才能看到正常现象,以为哪里代码有问题看了半天例程,对比了没有问题。One ELF section per Function这个选项搜了搜,说是为了减少函数冗余,减小输出文件大小的,难道还会优化代码?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-5-6 01:28:42 | 显示全部楼层
貌似是新mdk的bug
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-28 06:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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