硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1354|回复: 13
收起左侧

[MDK] 系统测试AC5. AC6. IAR和GCC调试效果,MDK AC6不开优化调试乱跳,甚至倒序执行

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
发表于 2023-9-9 01:37:19 | 显示全部楼层 |阅读模式
​首先感谢大家对上一个视频的点评回复,非常有意义的讨论,这次AC6的表现更新惊呆,不开优化都可以​乱跳。

【实验目的】
同样的程序代码,目的是测试C环境的调试现象。

【实验版本】
IAR版本  :9.3x
MDK版本:5.3x, 含AC5和AC6
Embedded Studio:使用GCC,版本V7.1X

【视频展示】
https://www.bilibili.com/video/BV18h4y1v7yR


​
【测试说明】

测试了IAR,所有优化等级均正常:
1.png

Embedded Studio开最高速度优化Level3 for speed,测试正常:
123456.png

MDK AC5测试了O1和O3,调试均不正常,进入return还继续执行。
12.png

MDK AC6不开优化,设置优先级为O0,调试乱跳,这有点说不过去了。这不能怪优化问题了吧,用的AC6.18
12356.png

开成O1优化,甚至还可以倒序执行,动图效果:
14.gif

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-9 01:55:27 | 显示全部楼层
更新完毕。
回复

使用道具 举报

20

主题

116

回帖

176

积分

初级会员

积分
176
发表于 2023-9-9 08:42:53 | 显示全部楼层
能否使用4.x版本测试下,看看是否正常?
回复

使用道具 举报

5

主题

295

回帖

310

积分

高级会员

积分
310
发表于 2023-9-9 09:33:22 | 显示全部楼层
按照硬汉的思路,要暂时躲避MDK了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-9 09:37:40 | 显示全部楼层
soyshell 发表于 2023-9-9 09:33
按照硬汉的思路,要暂时躲避MDK了?

不用,MDK AC5开优化调试时,注意下即可。而AC6任何等级都要注意。

MDK别的功能还是非常好用的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-9 09:38:15 | 显示全部楼层
magicoctoier 发表于 2023-9-9 08:42
能否使用4.x版本测试下,看看是否正常?

我这个例子是基于H7创建的,4.X不支持H7,还不太方便测试。
回复

使用道具 举报

0

主题

109

回帖

109

积分

初级会员

积分
109
发表于 2023-9-11 09:04:47 | 显示全部楼层
要不试一下Keil Studio for VSCode看有没有改善?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-11 09:13:37 | 显示全部楼层
ilcvm 发表于 2023-9-11 09:04
要不试一下Keil Studio for VSCode看有没有改善?

等年底MDK6商业版发布了,再测测
回复

使用道具 举报

3

主题

1246

回帖

1255

积分

至尊会员

积分
1255
发表于 2023-9-11 13:20:52 | 显示全部楼层
eric2013 发表于 2023-9-9 09:37
不用,MDK AC5开优化调试时,注意下即可。而AC6任何等级都要注意。

MDK别的功能还是非常好用的。

这个要怎么注意,是不是有问题,换成MDK5就好?
回复

使用道具 举报

0

主题

125

回帖

125

积分

初级会员

积分
125
发表于 2023-9-11 20:55:41 | 显示全部楼层
我已经习惯了AC6的表现, 断点不能在C文件打, 要在汇编里面打, 在汇编里打的断点才是真的。
查错确实是比较累, 这也许是你要使用AC6高效的代价吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-11 21:00:41 | 显示全部楼层
Edmund1964 发表于 2023-9-11 20:55
我已经习惯了AC6的表现, 断点不能在C文件打, 要在汇编里面打, 在汇编里打的断点才是真的。
查错确实是 ...

AC6编译DSP浮点以外的程序没有优势。实际上切换到AC6很大程度上是想更好的执行后续新的内核芯片以及更好的使用现成的CLANG编译,毕竟不用自己花心思研究了,直接用现成的。

这个是我是当前的看法,以后可能有新的看法,现在像Embedded Studio,CCS等都已经支持了CLANG方案。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-11 21:04:43 | 显示全部楼层
morning_enr6U 发表于 2023-9-11 13:20
这个要怎么注意,是不是有问题,换成MDK5就好?

有问题的话,只能串口,RTT等调试手段了。
回复

使用道具 举报

0

主题

125

回帖

125

积分

初级会员

积分
125
发表于 2023-9-11 22:35:41 | 显示全部楼层
eric2013 发表于 2023-9-11 21:00
AC6编译DSP浮点以外的程序没有优势。实际上切换到AC6很大程度上是想更好的执行后续新的内核芯片以及更好 ...

我测试过,执行速度它确实比其它版本快
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
 楼主| 发表于 2023-9-12 07:20:04 | 显示全部楼层
Edmund1964 发表于 2023-9-11 22:35
我测试过,执行速度它确实比其它版本快

【性能测评】DSP库,MDK5的AC5,AC6,IAR和Embedded Studio的三角函数性能(2022-06-04更新)
https://www.armbbs.cn/forum.php? ... 5455&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-3 08:24 , Processed in 0.302222 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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