1>.Image Entry point : 0x08000009,这个指的是复位程序RESET_Handler的地址。
2>.Load Region LR_1 (Base: 0x08000000, Size: 0x00000044, Max:0xFFFFFFFF, ABSOLUTE),是程序的加载映像地址和长度,0x00000044=Start.0文件的大小(0x0C) + main.o中Led_Init函数的大小(0x3C) + main.o中StartProgram函数的大小(0x08)。
3>.Execution Region ER_RO (Base: 0x08000000, Size: 0x00000044, Max:0xFFFFFFFF, ABSOLUTE) ,指的是程序中的代码段和常量。
4>.Execution Region ER_RW(Base: 0x20000000, Size: 0x00000000, Max: 0xFFFFFFFF, ABSOLUTE) ,指的是可读写的全局变量和静态变量区域,因为我们现在只是一个简单的测试程序,没有变量,所以这里Size大小为0。
5>.Execution Region ER_ZI(Base: 0x20000000, Size: 0x00000000, Max: 0xFFFFFFFF, ABSOLUTE) ,指的是程序中被初始化为零的变量,这里Size大小为0的原因同上。
6>6.Image component sizes ,这是指各个模块的大小信息
Total RO Size (Code + RO Data) 68( 0.07kB)
Total RW Size (RW Data + ZI Data) 68 ( 0.00kB)
Total ROM Size (Code + RO Data + RW Data) 68 ( 0.07kB)
由于我们测试程序总没有定义一些变量,只是简单的操作了3个寄存器,所以RW Data + Zi Data为0,其余全是代码指令信息,共68(0x44)个字节,程序总大小为68/1024(1KB = 1024个字节), 约0.07Kb。
至此我们已经解开了Map文件的神秘面纱,文件包含的信息全部分析完成,从文件中我们可以得出一些有用的信息,便于我们在分析调试代码的时候使用,当然Map配合链接文件(.sct)可能会看到直接的效果,后期有机会我们聊一聊链接文件,谢谢大家。