2022年armlink使用方法详解[参 .pdf
《2022年armlink使用方法详解[参 .pdf》由会员分享,可在线阅读,更多相关《2022年armlink使用方法详解[参 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、armlink 使用方法详解收藏一、基本术语在介绍 armlink 的使用方法之前,先介绍要涉及到的一些术语。1) 映像文件 (image):是指一个可执行文件,在执行的时候被加载到处理器中。一个映像文件有多个线程。它是 ELF(Executable and linking format) 格式的。段(Section):描述映像文件的代码或数据块。2) RO 是 Read-only 的简写形式。3) RW 是 Read-write.的简写形式。4) ZI 是 Zero-initialized 的简写形式。5) 输入段 (input section) 它包含着代码,初始化数据或描述了在应用程序运
2、行之前必须要初始化为0 的一段内存。6) 输出段 (output section) 它包含了一系列具有相同的RO,RW 或 ZI 属性的输入段。7) 域(Regions) 在一个映像文件中,一个域包含了1 至 3 个输出段。 多个域组织在一起,就构成了最终的映像文件。8) Read Only Position Independent(ROPI) 它是指一个段,在这个段中代码和只读数据的地址在运行时候可以改变。9) Read Write Position Independent(RWPI) 它是指一个段,在该段中的可读/写的数据地址在运行期间可以改变。10) 加载时地址是指映像文件位于存储器(在
3、该映像文件没有运行时)中的地址。11) 运行时地址是指映像文件在运行时的地址。二、命令语法armlink -help -vsn -partial -output file -elf -reloc-ro-base address -ropi -rw-base address -rwpi -split -scatter file-debug|-nodebug-remove?RO/RW/ZI/DBG|-noremove -entry location -keep section-id -first section-id -last section-id -libpath pathlist -scan
4、lib|-noscanlib -locals|-nolocals -callgraph -info topics -map -symbols -symdefs file 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - -edit file -xref -xreffrom object(section) -xrefto object(section) -errors file -list file -verbose -unmang
5、led |-mangled -match crossmangled-via file -strict -unresolved symbol-MI|-LI|-BI input-file-list 上面各选项的含义分别为:1) -help 这个选项会列出在命令行中常用的一些选项操作。2) -vsn 这个选项显示出所用的armlink 的版本信息。3) -partial 用这个选项创建的是部分链接的目标文件而不是可执行映像文件。4) -output file 这个选项指定了输出文件名,该文件可能是部分链接的目标文件,也可能是可执行映像文件。如果输出文件名没有特别指定的话,armlink 将使用下面的
6、默认:如果输出是一个可执行映像文件,则生成的输出文件名为_image.axf; 如果输出是一个部分链接的目标文件,在生成的文件名为_object.o; 如果没有指定输出文件的路径信息,则输出文件就在当前目录下生成。如果指定了路径信息,则所指定的路径成为输出文件的当前路径。5) -elf 这个选项生成ELF 格式的映像文件,这也是armlink 所支持的唯一的一种输出格式,这是默认选项。6) -reloc 这个选项生成可重定址的映像。一个可重定址的映像具有动态的段,这个段中包含可重定址信息, 利用这些信息可以在链接后,进行映像文件的重新定址;-reloc, -rw-base 一起使用,但是如果没
7、有-split 选项,链接时会产生错误。7) -ro-base address 这个选项将包含有RO(Read-Only 属性 )输出段的加载地址和运行地址设置为 address ,该地址必须是字对齐的,如果没有指定这个选项,则默认的RO 基地址值为0 x8000。8) -ropi 这个选项使得包含有RO 输出段的加载域和运行域是位置无关的。如果该选项没有使用,则相应的域被标记为绝对的。通常每一个只读属性的输入段必须是只读位置无关的。如果使用了这个选项,armlink 将会进行以下操作:检查各段之间的重定址是否有效;确保任何由armlink 自身生成的代码是只读位置无关的。这里希望读者注意的是
8、,ARM 工具直到 armlink 完成了对输入段的处理后,才能够决定最终的生成映像是否为只读位置无关的。这就意味着,即使为编译器和汇编器指定了ROPI 选项, armlink 也可能会产生ROPI 错误信息。- 9) rw-base address 这个选项设置包含RW(Read/Write 属性 )输出段的域的运行时地址,该地址必须是字对齐的。如果这个选项和-split 选项一起使用, 将设置包含RW 输出段的域的加载和运行时地址都设置在address处。10) -rwpi 这个选项使得包含有RW 和 ZI(Zero Initialization ,初始化为0)属性的输出段的加载和运行时域
9、为位置无关的。如果该选项没有使用,相应域标记为绝对的。这个选项要求-rw-base 选项后有值,如果-rw-base 没有指定的话,默认其值为0,即相当于 -rw-base 0。通常每一个可写的输入段必须是可读/ 可写的位置无关的。如果使用了该选项,armlink 会进名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 行以下的操作:检查可读 /可写属性的运行域的输入段是否设置了位置无关属性;检查在各段之间的重定址是否有效;生成基于
10、静态寄存器sb 的条目, 这些在 RO 和 RW 域被拷贝和初始化的时候会用到。编译器并不会强制可写的数据一定要为位置无关的,这就是说,即使在为编译器和汇编器指定了RWPI 选项, armlink 也可能生成数据不是RWPI 的信息。11) -split 这个选项将包含RO 和 RW 属性的输出段的加载域,分割成 2 个加载域。 一个是包含 RO 输出段的加载域,默认的加载地址为0 x8000,但是可以用 -ro-base 选项设置其他的地址值,另一个加载域包含RW 属性的输出段,由-rw-base 选项指定加载地址,如果没有使用-rw-base 选项的话,默认使用的是-rw-base 0。1
11、2) -scatter file 这个选项使用在file 中包含的分组和定位信息来创建映像内存映射。注意,如果使用了该选项的话,必须要重新实现堆栈初始化函数_user_initial_stackheap() 。13) -debug 这个选项使输出文件包含调试信息,调试信息包括,调试输入段,符号和字符串表。这是默认的选项。14) -nodebug 这个选项使得在输出文件中不包含调试信息。生成的映像文件短小,但是不能进行源码级的调试。armlink 对在输入的目标文件和库函数中发现的任何调试输入段都不予处理, 当加载映像文件到调试器中的时候,也不包含符号和字符串信息表。这个选项仅仅是对装载到调试器
12、的映像文件的大小有影响,但是对要下载到目标板上的二进制代码的大小没有任何影响。如果用armlink 进行部分链接生成目标文件而不是映像文件,则虽然在生成的目标文件中不含有调试输入段,但是会包含符号和字符串信息表。这里特别请读者注意的是:如果要在链接完成后使用fromELF 工具的话,不可使用-nodebug 选项,这是因为如果生成的映像文件中不包含调试信息的话,则有下面的影响:fromELF 不能将映像文件转换成其他格式的文件;fromELF 不能生成有意义的反汇编列表。15) -remove (RO/RW/ZI/DBG) 使用这个选项会将在输入段未使用的段从映像文件中删除。如果输入段中含有映
13、像文件入口点或者该输入段被一个使用的段所引用,则这样的输入段会当作已使用的段。在使用这个选项时候要注意,不要删除异常处理函数。使用-keep 选项来标识异常处理函数,或用ENTRY 伪指令标明是入口点。为了更精确的控制删除未使用的段,可以使用段属性限制符。可以使用以下的段属性限制符:RO 删除所有未使用的RO 属性的段;RW 删除所有未使用的RW 属性的段;ZI 删除所有未使用的ZI 属性的段;DBG 删除所有未使用的DEBUG 属性的段。这些限制符出现的顺序是任意的,但是它们必须要有”( )”括住,多个限制符之间要用符号” /”进行间隔。ADS 软件中默认选项是-remove (RO/RW/
14、ZI/DBG)。 如果没有指定段属性限制符, 则所有未使用的段都会被删除。因为 -remove 就等价于 -remove(RO/RW/ZI/DBG)选项。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 16) -noremove 这个选项保留映像文件中所有未被使用的段。17) -entry location 这个选项指定映像文件中唯一的初始化入口点。一个映像文件可以包含多个入口点, 使用这个命令定义的初始化入口点是存放在可执行文
15、件的头部,以供加载程序加载时使用。当一个映像文件被装载时,ARM 调试器使用这个入口点地址来初始化PC 指针。初始化入口点必须满足下面的条件:映像文件的入口点必须位于运行域内;运行域必须是非覆盖的,并且必须是固定域(就是说,加载域和运行域的地址相同)。在这里可以用以下的参数代替location 参数:1. 入口点地址:这是一个数值,例如-entry 0 x0 ;2. 符号:该选项指定映像文件的入口点为该符号所代表的地址处,比如:-entry int_handler 表示程序入口点在符号int_handler 所在处。如果该符号有多处定义存在, armlink 将产生出错信息。-entry of
16、fset+object(section) :该选项指定在某个目标文件的段的内部的某个偏移量处为映像文件的入口地址,例如:-entry 8+startup(startupseg) 如果偏移量值为0,可以简写成object(section),如果输入段只有一个,则可以简化为object。18) -keep section-id 使用该选项,可以指定保留一个输入段,这样的话,即使该输入段没有在映像文件中使用,也不会被删除。参数 section-id 取下面一些格式:1 symbol 该选项指定定义symbol 的输入段不会在删除未使用的段时被删除。如果映像文件中有多处symbol 定义存在,则所有包
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年armlink使用方法详解参 2022 armlink 使用方法 详解
限制150内