IAR 链接

本文介绍了IAR链接的基本概念,包括section和block,并详细解析了IAR的链接过程,强调了icf文件在内存布局中的作用。通过icf文件示例,解释了如何定义和使用自定义section来存储关键参数。
摘要由CSDN通过智能技术生成

基本概念

section与section属性
section是包含数据段或者代码段可放置在存储器内的最小逻辑单位,section即可放在RAM也可放在ROM内。在通常的嵌入式应用中,放置在RAM中的section没有任何内容,只是占有该存储空间。section具有如下属性:
这里写图片描述

编译器内部自定义section即属性
这里写图片描述

iar中关于block的概念
The block directive defines a named set of sections. By defining a block you can create
empty blocks of bytes that can be used。

通过系统icf文件模板对堆栈快的定义

    define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };

可以看出,block定义的是一个地址快,对于大括号里可以放置不同的section。创建一个block的目的在于能够得到一个地址,大小等详细信息的存储空间。通常用来组织sections。也可以向STACK block一样,像内存要了这么一个空间,至于我要干什么编译器你就不要管了。

IAR链接过程

  1. 决定哪些模块需要包含到应用程序中。目标文件提供的模块通常包含进去。
  2. 选择链接目标文件用到的标准库文件。
  3. 决定目标文件哪些section需要包含进来,没有用到的自然不会包含进来。当然也可以通过特殊的编译器指令如__root来使section链接到目标文件(及时程序中没有用到)。
  4. 完成RAM中的代码和变量的初始化。初始化指令可以让链接器产生额外的代码能够copy ROM中的内容到RAM中。每个通过copy完成初始化的段被分成了两个段,一个在ROM,一个在RAM。如果没有人工初始化的话。链接器回自动产生启动代码来完成初始化。
  5. 通过 lcf
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值