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

2019-07-20 17:46发布

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哇,这又怎么理解?!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
dengxingling8
1楼-- · 2019-07-20 23:30
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,
noparkinghere
2楼-- · 2019-07-21 02:12
 精彩回答 2  元偷偷看……
dengxingling8
3楼-- · 2019-07-21 04:32
noparkinghere 发表于 2016-12-6 19:58
原来如此,初始化不为零的 RW Data 数据本身也会占用相同大小的 ROM 和 RAM 存储单元,变量在 RAM 中,而 ...

我也是前一个月才弄清楚的,不过时间比你花的多了,我花了两天看资料,看文件,做实验得出的结论的
noparkinghere
4楼-- · 2019-07-21 08:59
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

一周热门 更多>