你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ILINK ICF文件解析及自定义段的存放

[复制链接]
BMRTECH2017 发布时间:2020-9-9 11:19
在链接过程中,IAR链接器会依据链接器配置文件即icf文件,将编译器或汇编器生成的可重定位目标文件链接生成针对特定目标处理器的机器代码。链接过程涉及的MCU可编址存储空间范围、代码和数据的存储位置及顺序等都在链接器配置文件中进行定义。
IAR ICF文件解析
在链接过程中,IAR会依据链接器配置文件(icf文件)来决定链接过程,icf文件中主要包含的内容如下:
(1)可编址的存储空间(memory)
(2)不同的存储地址区域(region)
(3)不同的地址块(block)
(4)section的初始化与否
(5)section在存储空间的位置
下面以一个具体的IAR icf文件为例子来介绍IAR ICF文件中的内容。
1.png
(1)部分使用define symbol命令定义具有指定值的符号,例如ROM和RAM区域的首尾地址,使用符号来代替某具体的地址值便于icf文件配置命令的撰写和具有更好的可读性。
2.png
(2)部分涉及两个命令:
#define memory命令:该命令定义mcu可寻址的最大地址范围,例如32位MCU的最大可寻址范围为4g,使用define memory命令定义该寻址范围。
#define region命令:定义一个存储地址区域(region),例如ROM区和RAM区。一个区域可由一个或多个地址区间组成。
3.png
(3)部分使用define block命令了定义一个地址块(block),例如堆和栈空间区域。
4.png
(4)部分为系统初始化过程的配置命令,决定某一个section在初始化过程中是否要进行初始化。section中包含某一段代码或者数据,是链接过程中最小的可链接单位。
下图中命令表示对所有具有readwrite属性的sections(如*.data,*.bss等)进行自动初始化,而对于*.noinit这个section则不做初始化处理,该section包含_no_ini修饰的全局或静态变量。
5.png
(5)部分对所有的sections和blocks在地址空间中所处的位置进行了配置。首先将只读的异常向量表.intvec放置在0x0地址处,然后将余下的只读sections 以任意顺序存放在ROM_region中,将可读写的sections和栈、堆这些blocks以任意顺序存放在RAM_region中。
6.png
如何使用icf文件命令指定存储位置
在使用IAR Embedded Workbench时,用户如果需要将源码中的某个函数或者变量定位到自定义的section,一般是使用#pragma location =“section”预处理指令来实现。#pragma location =“section”的作用是让编译器在执行编译操作时,将指令后面的函数或者变量放置到用户指定的section。例如下面代码示例用户自定义了Mydata和Myfunc两个section,下面介绍如何使用链接器配置命令将变量或者函数存储到特定位置。
7.png
若要将常量testpoint存储在ROM区域,可通过place in命令实现:
place in ROM { readonly section   .Mydata};
若要将常量testpoint存储在用户指定地址0x0100处,可通过place at命令实现:
place at address MEM:0x0100 { readonly section .Mydata };
若要将函数function存储在ROM区域,可通过如下命令实现:
place in ROM { readonly  section  .Myfunc};
若要将函数function存储在RAM区域,要令函数在RAM运行首先得在初始化过程中拷贝至RAM区域,可通过下面两条命令实现:
initialize by copy { readwrite ,section .Myfunc };
place in RAM {section   .Myfunc };     
以上仅为常用命令举例,更多命令相关细节内容请查阅IAR Help菜单下的指导手册。

收藏 评论0 发布时间:2020-9-9 11:19

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版