本文介绍: 加载域就是程序在Flash中的实际存储,而运行域是芯片上电后的运行状态,因为MCU没上电时RAM中没有数据,所以此时所有的东西(包括代码、变量、初始值等)都是存放在flash中的,当上电后又要把变量等复制到RAM中才能正常运行。ARM处理器是32位的,如果定义一个8位或者16位变量就会剩余一部分,这里就是指的“补充”的那部分,会发现后面的其他几个选项都没有对应的值。因此上面这句话意思就是main.c中的main函数引用了led.c中的LED_Init函数,剩下的基本都是这类的意思。
1 生成Map
2 map中概念
段(section) :描述映像文件的代码和数据块。
RO:Read-Only的缩写,包括RO-data(只读数据)和RO-code(代码)。
RW:Read-Write的缩写,主要是RW-data,RW-data由程序初始化初始值。
ZI:Zero-initialized的缩写,主要是ZI-data,由编译器初始化为0。
.text:与RO-code同义。
.constdata:与RO-data同义。
.bss: 与ZI-data同义。
.data:与RW-data同义
3 文件分析流程
.map文件可以分为五个部分:
①程序段交叉引用关系(Section Cross References)
②删除映像未使用的程序段(Removing Unused input sections from the image)
③映像符号表(Image Symbol Table )
④映像内存分布图(Memory Map of the image)
⑤映像组件大小(Image component sizes)
3.1 Section Cross References
(模块、段的交叉引用关系)各个源文件生成的模块之间相互引用的关系。“refer to”是引用的意思,比如:
因此上面这句话意思就是main.c中的main函数引用了led.c中的LED_Init函数,剩下的基本都是这类的意思。
3.2 Removing Unused input sections from the image(移除未使用的段)
3.3 Image Symbol Table 映像符号表
3.4 Memory Map of the image(映像的内存分布)
3.4.1 加载域
3.4.2 运行域
4 代码运行逻辑
5 F103部分
5.1 Image component sizes(映像组成大小)
5.2 映像文件的总结说明
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。