硬汉嵌入式论坛

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

[MDK] MDK AC5,AC6,GCC以及IAR在const局部变量存储位置的异同(2025-12-30)

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 2025-12-30 19:56:13 | 显示全部楼层 |阅读模式
这个是在RTX5全家桶源码升级时遇到的,给大家分享下,基本上已经升级完毕测试完毕了,且支持MDK6,这几天录制视频分享。

直接说结论
1、一般情况下,const修饰后基本都是存到Flash里面的,全局变量或者静态局部变量是均存储到Flash,而局部变量是有区别的。
2、GCC,MDK AC5和AC6的const局部变量是存到RAM,而IAR不同,是依然保持存到Flash。
3、由于各个优化等级选项太多,不逐一测试了,每个编译器仅测试了一个选项/
4、测试版本MDK5.43,  IAR9.30,  Embedded Studio 5.50

MDK AC5优化和测试

AC5 Debug.png

MDK AC5.png

MDK AC6优化和测试

AC6 DEBUG.png

MDK AC6.png

IAR优化和测试

IAR Debug.png

IAR.png

GCC优化和测试

GCC DEBUG.png

GCC.png








回复

使用道具 举报

6

主题

690

回帖

708

积分

金牌会员

积分
708
QQ
发表于 2025-12-30 22:39:41 | 显示全部楼层
mark,关注
回复

使用道具 举报

92

主题

596

回帖

872

积分

金牌会员

积分
872
发表于 2025-12-31 07:34:17 来自手机 | 显示全部楼层
感谢科普,
回复

使用道具 举报

2

主题

11

回帖

17

积分

新手上路

积分
17
发表于 2025-12-31 10:55:00 | 显示全部楼层
ram里的初始化值从哪里来的,不是从flash里来吗
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
 楼主| 发表于 2025-12-31 11:17:38 | 显示全部楼层
244141084 发表于 2025-12-31 10:55
ram里的初始化值从哪里来的,不是从flash里来吗

实际上这里直接使用了一个栈空间。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-9 16:49 , Processed in 0.050969 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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