微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > armlink 使用方法详解

armlink 使用方法详解

时间:11-11 来源:互联网 点击:

armlink使用方法详解一、基本术语
在介绍armlink的使用方法之前,先介绍要涉及到的一些术语。
1)映像文件(image):
是指一个可执行文件,在执行的时候被加载到处理器中。一个映像文件有多个线程。它是ELF(Executableandlinkingformat)格式的。段(Section):描述映像文件的代码或数据块。

2)RO
是Read-only的简写形式。

3)RW
是Read-write.的简写形式。

4)ZI
是Zero-initialized的简写形式。

5)输入段(inputsection)
它包含着代码,初始化数据或描述了在应用程序运行之前必须要初始化为0的一段内存。

6)输出段(outputsection)
它包含了一系列具有相同的RO,RW或ZI属性的输入段。

7)域(Regions)
在一个映像文件中,一个域包含了1至3个输出段。多个域组织在一起,就构成了最终的映像文件。

8)ReadOnlyPositionIndependent(ROPI)
它是指一个段,在这个段中代码和只读数据的地址在运行时候可以改变。

9)ReadWritePositionIndependent(RWPI)
它是指一个段,在该段中的可读/写的数据地址在运行期间可以改变。

10)加载时地址
是指映像文件位于存储器(在该映像文件没有运行时)中的地址。

11)运行时地址
是指映像文件在运行时的地址。

二、命令语法
armlink[-help][-vsn][-partial][-outputfile][-elf][-reloc][-ro-baseaddress][-ropi][-rw-baseaddress][-rwpi][-split][-scatterfile][-debug|-nodebug][-remove?RO/RW/ZI/DBG]|-noremove][-entrylocation][-keepsection-id][-firstsection-id][-lastsection-id][-libpathpathlist][-scanlib|-noscanlib][-locals|-nolocals][-callgraph][-infotopics][-map][-symbols][-symdefsfile][-editfile][-xref][-xreffromobject(section)][-xreftoobject(section)][-errorsfile][-listfile][-verbose][-unmangled|-mangled][-matchcrossmangled][-viafile][-strict][-unresolvedsymbol][-MI|-LI|-BI][input-file-list]

上面各选项的含义分别为:
1)-help这个选项会列出在命令行中常用的一些选项操作。

2)-vsn这个选项显示出所用的armlink的版本信息。

3)-partial用这个选项创建的是部分链接的目标文件而不是可执行映像文件。

4)-outputfile这个选项指定了输出文件名,该文件可能是部分链接的目标文件,也可能是可执行映像文件。如果输出文件名没有特别指定的话,armlink将使用下面的默认:如果输出是一个可执行映像文件,则生成的输出文件名为__image.axf;如果输出是一个部分链接的目标文件,在生成的文件名为__object.o;如果没有指定输出文件的路径信息,则输出文件就在当前目录下生成。如果指定了路径信息,则所指定的路径成为输出文件的当前路径。

5)-elf这个选项生成ELF格式的映像文件,这也是armlink所支持的唯一的一种输出格式,这是默认选项。

6)-reloc这个选项生成可重定址的映像。一个可重定址的映像具有动态的段,这个段中包含可重定址信息,利用这些信息可以在链接后,进行映像文件的重新定址;-reloc,-rw-base一起使用,但是如果没有-split选项,链接时会产生错误。

7)-ro-baseaddress这个选项将包含有RO(Read-Only属性)输出段的加载地址和运行地址设置为address,该地址必须是字对齐的,如果没有指定这个选项,则默认的RO基地址值为0x8000。

8)-ropi这个选项使得包含有RO输出段的加载域和运行域是位置无关的。如果该选项没有使用,则相应的域被标记为绝对的。通常每一个只读属性的输入段必须是只读位置无关的。如果使用了这个选项,armlink将会进行以下操作:检查各段之间的重定址是否有效;确保任何由armlink自身生成的代码是只读位置无关的。这里希望读者注意的是,ARM工具直到armlink完成了对输入段的处理后,才能够决定最终的生成映像是否为只读位置无关的。这就意味着,即使为编译器和汇编器指定了ROPI选项,armlink也可能会产生ROPI错误信息。-

9)rw-baseaddress这个选项设置包含RW(Read/Write属性)输出段的域的运行时地址,该地址必须是字对齐的。如果这个选项和-split选项一起使用,将设置包含RW输出段的域的加载和运行时地址都设置在address处。

10)-rwpi这个选项使得包含有RW和ZI(ZeroInitialization,初始化为0)属性的输出段的加载和运行时域为位置无关的。如果该选项没有使用,相应域标记为绝对的。这个选项要求-rw-base选项后有值,如果-rw-base没有指定的话,默认其值为0,即相当于-rw-base0。通常每一个可写的输入段必须是可读/可写的位置无关的。如果使用了该选项,armlink会进行以下的操作:检查可读/可写属性的运行域的输入段是否设

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top