您的位置:首页 > 其它

IAR切BANK--命令连接器文件xcl格式说明

2016-01-02 23:31 881 查看
IAREWARM中段后缀含义

后缀

段类型

含义

AC

CONST

绝对地址定位常数

AN

DATA

用关键字__no_init声明的绝对地址定位数据

C

CONST

常数

I

DATA

初始化值为非0的数据

ID

CONST

上述数据的初始式

N

DATA

未初始化的数据

Z

DATA

初始化值为0的数据

ROM用于保存CONST和CODE段,而RAM用于保存DATAS段。

CODE段类型:ROM 中的执行代码

CONST段类型:ROM中的数据

DATA段类型:RAM 中的数据

 

常用的段说明:

段名

功 能说 明

段类型

属性

INTVEC

保存Reset 和异常向量,含跳转到cstartup 或中断服务程序的指令。必须在0x00-0x3F 地址范围内

CODE

只读
ICODE

保存启动代码,位于能被INTVEC 中的转移指令达到的前32MB 字节内。

CODE

只读
DIFUNCT

包含指向C++建构模块的指针。该模块在调用main 之前由cstartup 执行。

CODE

只读
SWITAB

保存软件中断向量表

CODE

只读
CODE

保存程序代码,可以在ROM 中执行。

CODE

只读
CODE_ID

永久性保存声明为_ramfunc 的程序代码。这些代码初始化时从CODE_ID拷贝到CODE_I 中(RAM),然后在RAM 中执行。

CONST

只读

INITTAB

保存需要在启动时初始化的段地址和段长度表格。

CONST

只读

DATA_ID

保存DATA_I 段中变量的初值,这些值在系统初始化时由cstartup 从DATA_ID 拷贝到DATA_I。

CONST

只读

DATA_C

保存常数数据,包括文字字符串

CONST

只读

CHECKSUM

保存段的校验和

CONST

只读

CODE_I

上电后保存声明为_ramfunc的程序代码,掉电后丢失。初始化时从CODE_ID(ROM)拷贝到CODE_I中,然后在RAM中执行。

DATA

读/写

DATA_I

 

保存声明为非零初值的静态全局变量,其初值开始在DATA_ID中,系统初始化时由cstartup从DATA_ID 拷贝到DATA_I。

DATA

读/写

DATA_Z

保存声明初值为零或没有声明初值的静态全局变量

DATA

读/写

DATA_N

保存非易失存储器中,用_no_init 关键字声明的静态全局变量

DATA

读/写

CSTACK

C/C++内部数据堆栈(用户模式)

DATA

读/写

SVC_STACK

操作系统堆栈(管理模式,用于具有特权的操作系统任务)

DATA

读/写

ABT_STACK

数据访问中止模式堆栈(用于虚拟存储器及存储器保护)

DATA

读/写

UND_STACK

未定义指令中止模式堆栈(支持硬件协处理器软件仿真)

DATA

读/写

FIQ_STACK

快中断模式堆栈(用于高速数据传输或通道处理)

DATA

读/写

IRQ_STACK

中断模式堆栈(用于通用中断处理)

DATA

读/写

HEAP

堆(Heap)是C\C++中为malloc 和 free 或new 和delete 保留的动态分配存储空间。

DATA

读/写

 

IAR EWARM中段定位参数

参数

含义

c

CPU类型

D

定义文件后面要使用的参数,例如说明始末地址或段大小

Z

以连续方式定位段

P

以压缩方式定位段

Q

自动完成段初始化复制

-D 

-Dsymbol=value

作用:

使用-D选项可以定义一些纯粹的符号,一般用于声明常数。

参数:

symbol是未在其它地方定义过的外部符号,value是symbol所代表的值。例如:

-D_BANK_LEN=0x800

-D_BANK_START=0x1800

-D_BANK_STEP=0x10000

-D_BANK_NUM=0x40

就定义了2个标识了ROM起始和结束地址的符号,这样以后关于ROM地址的配置都可以直接使用这2个符号,使得配置文件的可读性增强。

在//前面必需有空格

/*前面可有可无空格

=前后都不能有空格在

_BANK_STEP紧挨着-D

 

-

-Z[@][(SPLIT-)type]segments[=|#]range[, range]…

作用:

使用-Z命令的目的是规定segments在存储空间中占据的位置和区间。如果链接器发现某个segment没有使用-Z,-b或者-P中的任何一个命令进行定义,则会报错。

参数:

@ 使用@参数,表示为segments分配空间时不考虑任何已经被使用的地址空间。这适用于当某些segments的地址空间需要发生重叠的情形。【可选】

type 参数type规定了segments的存储类型,默认为UNTYPED。表1列举了IAR的ARM C/C++编译器所支持的segments类型。【可选】



segments:参数segments列出了参与链接的一个或多个segment,中间可用逗号分隔。,这些segments在存储空间中的顺序和被列出的先后顺序一致。在segment名后面添加‘+nnnn’,可以让XLINK为该segment所分配的空间增加nnnn字节。

= | #;规定了segments在存储空间中如何分配,其中”=“从指定范围的起始处开始为segments分配空间,而”#“从指定范围的结尾处开始为segments分配空间。如果这两个参数都没有出现,则segments会被分配在当前最后一个有确定链接地址的segment后面;如果当前没有任何segment被链接,则被分配在0地址。

-Z(CODE)MAKECODE_CONST=0xFF0000-0xFF00FF

-Z(XDATA)ECHO_BUF=0xa4400:+0x2000

 

-P

-P(CODE)BT_ON_SEG,BT_ON_CONST,RF_SEG=[_BANK_START:+_BANK_LEN]*_BANK_NUM+_BANK_STEP

用,分割相同的段

 

-Q 

-Qsegment=initializer_segment

作用:

自动设置segment的拷贝初始化。链接器会产生一个新的initializer_segment(如CODE_ID),其内容与segment(如CODE_I)完全一致。相关的符号表和调试信息都会和segment相关联(如CODE_I)。initializer_segment的内容(通常在ROM中)必须在初始化阶段被复制到segment(通常在RAM中)。

 

-c 

-cprocessor

作用:

规定目标处理器的类型。如-carm。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IAR BANK