OpenEdv-开源电子网

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

KDE 生成的 .map 文件如何解读?

[复制链接]

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-7-23
在线时间
21 小时
发表于 2016-12-6 19:39:17 | 显示全部楼层 |阅读模式
1金钱
ROM 占用空间大小究竟是(Code + RO Data)还是 (Code + RO Data + RW Data)?


KDE 在编译最后生成一个工程名.map文件最后几行如下:

    Total RO  Size (Code + RO Data)               113312 ( 110.66kB)
    Total RW  Size (RW Data + ZI Data)             61520 (  60.08kB)
    Total ROM Size (Code + RO Data + RW Data)     113812 ( 111.14kB)


这边代表的是代码生成后 ROM 大小有 111.14kB 大吗?RW Data 不是应该放在 RAM 中的吗?怎么 ROM也会计算这个?另外上面有一行:

  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0001c0c8, Max: 0x00080000, ABSOLUTE, COMPRESSED[0x0001bc94])

    Execution Region ER_IROM1 (Base: 0x08000000, Size: 0x0001baa0, Max: 0x00080000, ABSOLUTE)


这边的Size: 0x0001baa0 = 113312 并不是113812哇,这又怎么理解?!


最佳答案

查看完整内容[请看2#楼]

Total RO Size (Code + RO Data) 113312 ( 110.66kB):代码+只读变量占flash110.66K Total RW Size (RW Data + ZI Data) 61520 ( 60.08kB) :SRAM占用60.08K Total ROM Size (Code + RO Data + RW Data) 113812 ( 111.14kB):flash共占用111.14K,包括初始化不为0的RW Data。后面那句话是flash起始地址,还有size,
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2016-12-6 19:39:18 | 显示全部楼层
Total RO  Size (Code + RO Data)               113312 ( 110.66kB):代码+只读变量占flash110.66K
Total RW  Size (RW Data + ZI Data)           61520 (  60.08kB)    :SRAM占用60.08K
Total ROM Size (Code + RO Data + RW Data)     113812 ( 111.14kB):flash共占用111.14K,包括初始化不为0的RW Data。后面那句话是flash起始地址,还有size,
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-7-23
在线时间
21 小时
 楼主| 发表于 2016-12-6 19:58:52 | 显示全部楼层
dengxingling8 发表于 2016-12-6 19:46
Total RO  Size (Code + RO Data)               113312 ( 110.66kB):代码+只读变量占flash110.66K
Total ...

原来如此,初始化不为零的 RW Data 数据本身也会占用相同大小的 ROM 和 RAM 存储单元,变量在 RAM 中,而变量的初始值存在 ROM 中。

谢谢。
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2016-12-6 20:06:57 | 显示全部楼层
noparkinghere 发表于 2016-12-6 19:58
原来如此,初始化不为零的 RW Data 数据本身也会占用相同大小的 ROM 和 RAM 存储单元,变量在 RAM 中,而 ...

我也是前一个月才弄清楚的,不过时间比你花的多了,我花了两天看资料,看文件,做实验得出的结论的
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2013-7-23
在线时间
21 小时
 楼主| 发表于 2016-12-28 13:35:52 | 显示全部楼层
dengxingling8 发表于 2016-12-6 20:06
我也是前一个月才弄清楚的,不过时间比你花的多了,我花了两天看资料,看文件,做实验得出的结论的

不好意思最近一直没上论坛,刚看到你的回复,之前整理总结了下:

Code是代码占用的空间;RO-data(Read Only) 是只读常量的大小,如const型;RW-data(Read Write)是初始化了的可读写变量的大小,ZI-data(Zero Initialize)是没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化。Total ROM Size :Code + RO Data + RW Data(ROM Size并不等于Code + RO Data,初始化不为零的 RW Data 数据本身也会占用相同大小的 ROM 和 RAM 存储单元,变量在 RAM 中,而变量的初始值存在 ROM 中) ,Total RW Size:RW Data + ZI Data 。这边在考虑芯片的 ROM 和 RAM 选型时,注意: ROM > Code + RO Data + RW Data , 而 RAM > RW-data+ZI-data,具体我们可以查看 KDE 编译后生成的 .map文件。

http://noparkinghere.site/posts/ ... BC%98%E5%8C%96.html
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 03:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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