STM32开发之map文件学习

map文件及相关概念

map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。

段(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同义

map文件包含

map文件的内容可分为如下几部分:

1、节区的跨文件引用(Section Cross References)

	这部分主要是不同文件中函数的调用关系,详细列出了各个.o 文件之间的符号引用。由于.o 文件是由 asm 或 c/c++源文件编译后生成的,各个文件及文件内的节区间互相独立,链接器根据它们之间的互相引用链接起来,链接的详细信息在这个分区中详细列出。例如:
	***main.o(.text) refers to delay.o(.text) for delay_ms***

值得注意的是,在构建工程的时候,有时会出现 “Undefined symbol xxx (referred from xxx.o)” 这样的错误提示,就是因为链接过程中,某个文件无法从工程所包含的外部找到它引用的标号,因而产生链接错误。

2、删除无用节区(Removing Unused input ps from the image)

	map 文件的第二部分是删除无用节区的说明,这部分列出了在链接过程它发现工程中未被引用的节区,这些未被引用的节区将会被删除(指不加入到*.axf 文件,不是指在*.o 文件删除),这样可以防止这些无用数据占用程序空间。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值