关于CodeWarrior LCF文件的一些总结
谷子
|
2019.12.24
|
0
+关注

链接文件用来控制不同类型数据代码、数据以某种排列方式在最终在生成的可执行文件或者二进制文件,调试文件中的放置位置。它可以通过在EPPC linker的面板中进行配置,也可以直接在lcf文件中直接进行修改。

Lcf文件中首先是对整个memory map(MEMORY)地址空间内的所有RAM,ROM进行分割,将其分为几个区域,便于放置不同类型的存储内容,而这些区域内包含的内容可以是用户自定义的段或者系统预定义的段(SECTION)。如下图所示,单片机存储空间的定义,不同的段的起始地址,不能叠加地址空间:

下面是SECTION段的定义:

LCF文件中预定义的各个段的名称及解释见下表:

下面是一些编译器地址指定定义:

接下来我们看一些常用的关键字:

1)SECTION

Section使用pragma来将编译的目标代码放到预定义段中,然后可以在LCF文件中将对应的段放到指定的地址区域。Section和__declspec(section)都可以用来指定一个段,但是不能同时使用。Eg:

我们可以在MAP文件中看到cal_A_v和cal_B_v被指定到.referencepage中,而在LCF文件中.referencepage LOAD (0x00160000):{}> rp,所以cal_A_v和cal_B_v的起始地址被指定到0x00160000

2)ALIGN

按照指定的边界进行排列,必须是2的整倍数。Eg:

3)ADDR

返回指定名称的段或者内存区域的开始地址.

4)SIZEOF

返回指定Section或者segment的大小(以字节为单位) Eg

5)LOAD

在指定地址加载一个或者多个段。 Eg:

6)pop, push

保存和恢复pragma设置 Eg:

7)FORCEACTIVE

指定不能被优化掉的目标. Eg:

精选留言
延伸阅读
2020.04.03
4749阅读
更多报告干货
写留言
3070
阅读
收藏
回到顶部