LCF文件使用说明(3)

2019-03-11 08:11

CodeWarrior LCF链接文件定义及使用

EPPC 链接器设定面板各条目的含义及用法

元素

Link Mode list box

目的

指定链接器使用多少内存做缓冲来写输出文件,然后写到硬盘上 选项:

? ? ?

注释

链接需要足够的RAM空间来保存输入文件。

Normal是最好的选择,More RAM更适合小工程

Use Less RAM –直接将输出文件写到硬盘,不使用缓冲 Normal – 512字节缓冲

Use More RAM – 将每个部分写到自己的缓冲,然后写回硬盘

Generate DWARF Info checkbox

Use Full Path Names checkbox

Clear – 不生成调试信息Checked – 生成调试信息

Clear – 链接器只使用文件名

Checked – 链接器包含路径名字在elf文件中

Generate Link Map checkbox Clear – 不生成map文件

Checked – 生成map文件 List Closure checkbox

Clear – map不列举程序开始点调用的函数

Checked - Map 文件列举所有程序开始点调用的函数 Clear - Map 不包含没用到的目标

Checked – Map 列举所有没有用到的目标

Clear - Map 不列出 DWARF 调试目标

Checked - Map 在Section里列出所有 DWARF 调试目标

List Unused Objects checkbox

List DWARF Objects checkbox

Suppress Warning Messages Clear – 链接器在消息窗口显示警告 checkbox Checked – 链接器不显示警告 Heap Address checkbox

Clear – Heap顶和堆栈底相同Checked – 指定heap内存位置

参考表后备注. 参考表后备注

Page 11

Stack Address checkbox Clear – 链接器使用默认的堆栈地址0x003DFFF0.

Auto FAE: Alan Yang-r66151

CodeWarrior LCF链接文件定义及使用

Checked – 为堆栈指定栈顶内存地址

Generate ROM Image checkbox

RAM Buffer Address checkbox

Clear – 不生成ROM image. Checked – 生成ROM image

Clear – 不指定RAM buffer地址

Checked –给flash 编程器指定RAM buffer地址。许多其他的flash编程器使用指定的,对于Codewarrior Flash编程器,RAM buffer和独立的缓冲区来加载所有的二进制段到连续的flash ROM地址空间。尽管如此,在运行的ROM image的地址是一样的。(参考备注) 时候系统会将这些段加载到lcf文件或者数据地址框指定的地址。

参考备注

ROM Image Address checkbox Clear – 不指定目标地址

Checked – 为二进制文件指定ROM目标地址 Use Linker Command File Clear – 用户指定段地址,忽略lcf文件的配置。 checkbox Checked – 从lcf文件中寻找段地址 Binary File list box

生成二进制文件

? ? ?

如果选定,而lcf文件中并没有指定段地址,编

译器将报错

默认不生成二进制代码

None – 不生成bin文件 One – 一个二进制文件

Multiple – 多个二进制文件

S-record 文件以 .mot扩展名存在,是早期的srecord文件扩展名。现在后缀名都是.s19,但格式内容相同 .

Generate S-Record File checkbox Clear – 不生成srecord文件. Checked – 生成S3 S-record文件

Sort S-Record checkbox Clear – 不排序s-recored文件

Checked –地址上升排序s-recored文件 Max Length text box

指定S-recored的最大长度(256字节或者少于)

Page 12

EOL Character list box 针对不同系统指定srecord文件行尾的字符

Auto FAE: Alan Yang-r66151

CodeWarrior LCF链接文件定义及使用

? ? ?

DOS - Unix - Mac -

默认函数是__start.c中的bootstrap/glue 代码。配置EABI的环境,然后执行main()

Entry Point text box 指定程序性的入口地址-加载程序时使用的第一个函数

Auto FAE: Alan Yang-r66151

Page 13

CodeWarrior LCF链接文件定义及使用

Heap

如果你的程序使用malloc 或者new将会使用到堆。如果使用MSL C,你的程序可能会使用隐含的堆。尽管如此,MSL分配程序不需要在栈下面申请堆。 如果不选择检验框,堆的高地址等于栈的底部。 _stack_end = _stack_addr - (stack_size * 1024); _heap_end = _stack_end; _heap_addr = _heap_end - (heap_size * 1024); 如果你的代码不需要堆你可以清除堆地址检验框 注意 如果没有足够的空间,malloc函数会返回0.如果你不用malloc,可以把堆的大小设定为零来给其它需要内存空间的数据代码,栈。 Stack 在指定栈的开始地址后,栈使用将向下增长。所以尽可能将栈顶设高 如果你没有指定栈的地址,链接器将使用0x003DFFF0.但是默认值并不适合所有板子,有些芯片RAM很小。 ROM Image 应用程序的ROM Image通常是整个应用程序镜像。一个ROM镜像通过ROM Image Address 和 RAM Bufferr Address来定义。 ROM Image Address: ROM将被分配在什么位置。通常是在.lcf文件中定义的某一个存储块的开始。 RAM Buffer Address: 在RAM中指定一个位置,用来作为Flash image编程器的缓冲区。 RAM Buffer配置地址和ROM Image的配置地址必须保持相同,即RAM Buffer地址不需要考虑。

第三节 代码重定向 如果我们想把一个函数存在flash,但是在RAM中被执行,我们需要在LCF文件,程序中参考如下几条进行定义 1) LCF 文件:

MEMORY { …

reloc_flash: org = 0x0007F000, len = 0x00001000 //重定向的函数存储在Flash中 …

reloc_ram: org = 0x40005000, len = 0x00001000 // 重定向的函数在RAM中被调用

Auto FAE: Alan Yang-r66151

Page 14 CodeWarrior LCF链接文件定义及使用

}

SECTIONS { ….

.RelocCode (VLECODE) LOAD(ADDR(reloc_flash)): {} > reloc_ram // define a section for relocated functions }

2) 包含重定向函数的C文件,例如测试代码: void Delay(void)

#pragma push

#pragma section code_type \__declspec(section \void Delay(int cnt) { int i,j;

for(i=0;i

for(j=0;j<900000;j++) { ;

}

LedOff();

for(j=0;j<900000;j++) { ; }

} }

#pragma pop

3) 引用重定向函数的函数:

#pragma push #pragma section code_type \__declspec(section \extern void Delay(int cnt); #pragma pop

int main(void) { ?

Delay(count); ? }

4) 在EPPC LINKER 设置面板中选中 Generate ROM Image. 否则LOAD指令会被忽略。

Auto FAE: Alan Yang-r66151

Page 15 CodeWarrior LCF链接文件定义及使用

5) 注意: 在第 2)项中,如果 Delay()同时需要调用在Flash中的函数,比如, LedOn() and LedOff(). 那么我们需要向下面这样定义:

#pragma push

#pragma section code_type \__declspec(section \void LedOn(void) {

SIU.GPDO[68].B.PDO = 0; }

void LedOff(void) {

SIU.GPDO[68].B.PDO = 1; }

#pragma pop And similarly: #pragma push

#pragma section code_type \__declspec(section \extern LedOn(void); extern LedOff(void); #pragma pop

Codewarrior编译器会自动生成代码,在执行main函数之前将重定向的函数从FLASH拷贝到RAM。

Auto FAE: Alan Yang-r66151

Page 16


LCF文件使用说明(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:甲方(建设方)项目管理方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: