MDK生成的map分析记录

Memory Map of the image


已知:
//RW数据区 ZI数据区 Heap和Stack数据区。
0x17c      0x4AEC   0x200   0x400  =0x5268  



Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000d8a0, Max: 0x00040000, ABSOLUTE, COMPRESSED[0x0000d748])
加载域 = code + RO + RW


Execution Region ER_IROM1 (Base: 0x08000000, Size: 0x0000d724, Max: 0x00040000, ABSOLUTE)
运行域 = code + RO



Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00004c68, Max: 0x0000c000, ABSOLUTE, COMPRESSED[0x00000024])
= RW + ZI 


  
    Total RO  Size (Code + RO Data)                        55076 (  53.79kB)  = 0xD724
    Total RW  Size (RW Data + ZI Data)                     19560 (  19.10kB)  = 0x4C68
    Total ROM Size (Code + RO Data + RW Data(压缩后))      55112 (  53.82kB)  = 0xD748




Program Size: 
Code=53180     -> 0xCFBC
RO-data=1896      0x768
RW-data=压缩前:380  -> 0x17c    压缩后: 36 -> 0x24

ZI-data=19180     0x4AEC



Q&A

1、Image component sizes 和 Memory Map of the image 的关系?
Image component sizes:显示obj占用的code,DATA大小。
Memory Map of the image:显示obj中某个段的首地址,大小,属性,段名等。
Memory Map of the image 和Image component sizes在code、RO、RW、ZI的size结果一致。


2、为什么要加* (+RO)?
不加* (+RO) 则不编译.data .bss (STACK) (HEAP) (!!!dc) (!!!dc_sizes)


3、注意:sct file格式

若加载域有多个执行域,则第一个执行域作为“根区”,根区的运行起始地址就是所在加载域首地址,且根区中必须有main_。根区后面的执行区的首地址是偏移量,而不是绝对地址。

MDK生成的map分析记录_第1张图片


你可能感兴趣的:(MDK生成的map分析记录)