[学习笔记 ]IAR的链接配置.icf文件详解——RT1052芯片的链接文件

本文主要通过以下几个部分解释IAR中的链接配置icf文件:
1、参考解析IAR的ILink链接器icf配置文件介绍icf文件作用以及icf文件主要内容;
2、介绍icf常使用的命令
3、RT1052芯片存储空间分配以及IAR8.30.1的系统预定义的section和block
4、结合野火RT1052mini开发板的链接配置文件MIMXRT1052xxxxx_itcm_txt_ram.icf详细分析icf文件
作为学习笔记,里面应该有很多问题,欢迎批评指正,谢谢!

icf文件作用以及icf文件主要内容

icf文件是什么

.首先说说什么是icf文件(即ILINK链接器的配置文件)的作用,其实在IAR5.x之前,IAR是采用的叫XLINK的链接器(它相应的配置文件为xcl文件),5.x之后才采用了新版ILINK链接器,所以咱们开发Kinetis的IAR6.x自然也采用的是ILINK链接器,配置文件为icf文件,咳咳,如果有人问什么是链接器,先谷歌一下补补,我这里就引用IAR官方手册里的一句话简要说明一下什么是链接器及其相应配置文件的作用吧:

”EWARM 5.xx 中的链接器称为ILINK。ILINK 可以从 ELF/DWARF 格式的目标文件中提取代码和数据, 并生成可执行的输出镜像。对于 ELF/DWARF 格式而言,基本的链接单元是section,section 的类型有code和data,属性可以是readonly (ro),readwrite (rw)和zeroinit (zi)。ILINK 根据 ILINK Configuration File(.icf)来分配和定位这些sections。“
.icf文件(ILINK Configuration File)是ILINK链接器的配置文件,IAR5.x以后采用ILINK链接器,以前使用XLINK链接器(对应配置文件为.xcl文件)。想详细了解icf文件必须要了解IAR的ILINK链接器的连接过程IAR 链接ILINK链接过程
1、决定哪些模块需要包含到应用程序中。目标文件提供的模块通常包含进去。
2、选择链接目标文件用到的标准库文件。
3、决定目标文件哪些section需要包含进来,没有用到的自然不会包含进来。当然也可以通过特殊的编译器指令如__root来使section链接到目标文件(及时程序中没有用到)。
4、完成RAM中的代码和变量的初始化。初始化指令可以让链接器产生额外的代码能够copy ROM中的内容到RAM中。每个通过copy完成初始化的段被分成了两个段,一个在ROM,一个在RAM。如果没有人工初始化的话。链接器回自动产生启动代码来完成初始化。
5、通过 .icf文件的段放置指令来决定每个section存放的位置。(icf文件决定section的位置或者说地址
**)
6、生成最终的包含可执行映像和调试信息的最终文件。在重定位输入文件中,每个用到的section的内容是通过文件中的重定位信息和放置块时的地址计算出来的。
7、最后生成map文件,包括了各个section的的在存储器中的最终地址,global symbol的地址和用到的存储器和库汇总。

icf文件的主要内容

(1)定义可用的可编址空间(memory)
为链接器提供有关可能地址的最大大小的信息,并定义可用的物理内存,以及处理可以以不同方式寻址的内存。
(2)定义ROM或RAM的可用内存区域(region)
给定每个region的起始地址。
(3)段组(section group)或者Block
根据段需要将段分成块(blocks)或覆盖(overlays)
(4)定义如何处理应用程序初始化
提供关于哪些sections要被初始化和如何进行初始化的信息
(5)内存分配
定义section在存储空间的放置
(6)使用symbols, expressions, and numbers
expressing addresses and sizes等,symbols也可以在应用程序中进行定义
后面还有两个内容这里涉及不到,结构配置和名字中的特殊字符。大家可以根据上面的几个要点对照着实际的icf文件进行分析,就能够对icf文件有个整体把握。

icf文件常使用的命令

对于icf的常使用的命令,网上介绍也有很多,我这里从这篇博客中抄录过来,做了格式整理,方便大家阅读。icf命令相当于C语言中的语法,如果想详细了解icf文件,建议诵读一番。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值