📄 其他资料 linker in doc.txt
字号:
在标签页Output中,Linktype中提供了三种链接方式。
Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。
Simple方式是默认的链接方式,也是最为频繁使用的链接方式,它链接生成简单的ELF格式的目标文件,使用的是链接器选项中指定的地址映射方式。
Scattered方式使得链接器要根据scatter格式文件中指定的地址映射,生成复杂的ELF格式的映像文件。这个选项一般情况下,使用不太多。
因为我们所举的例子比较简单,选择Simple方式就可以了。
在选中Simple方式后,就会出现Simple image。
RO Base:这个文本框设置包含有RO段的加载域和运行域为同一个地址。默认是0x8000。这里用户要根据自己硬件的实际SDRAM的地址空间来修改这个地址,保证在这里填写的地址,是程序运行时,SDRAM地址空间所能覆盖的地址。针对本书所介绍的目标板,就可以使用这个默认地址值。
RW Base:这个文本框设置了包含RW和ZI输出段的运行域地址。如果选中split选项,链接器生成的映像文件将包含两个加载域和两个运行域,此时,在RW Base中所输入的地址为包含RW和ZI输出段的域设置了加载域和运行域地址
Ropi:选中这个设置将告诉链接器使包含有RO输出段的运行域位置无关。使用这个选项,链接器将保证下面的操作:
检查各段之间的重定址是否有效;
确保任何由armlink自身生成的代码是只读位置无关的。
Rwpi:选中该选项将会告诉链接器使包含RW和ZI输出段的运行域位置无关。如果这个选项没有被选中,域就标识为绝对。每一个可写的输入段必须是读写位置无关的。如果这个选项被选中,链接器将进行下面的操作,
检查可读/可写属性的运行域的输入段是否设置了位置无关属性;
检查在各段之间的重地址是否有效;
在Region Table和ZISection Table中添加基于静态存储器sb的选项。
该选项要求RW Base有值,如果没有给它指定数值的话,默认为0值。
Split Image:选择这个选项把包含RO和RW的输出段的加载域分成2个加载域:一个是包含RO输出段的域,一个是包含RW输出段的域。
这个选项要求RW Base有值,如果没有给RW Base选项设置,则默认是-RW Base 0。
Relocatable:选择这个选项保留了映像文件的重定址偏移量。这些偏移量为程序加载器提供了有用信息。
在Options选项中,需要读者引起注意的是Image entry point文本框。它指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址处执行。如果需要,用户可以在这个文本框中输入下面格式的入口点:
入口点地址:这是一个数值,例如-entry 0x0
符号:该选项指定映像文件的入口点为该符号所代表的地址处,比如:
-entry int_handler
如果该符号有多处定义存在,armlink将产生出错信息。
offset+object(section):该选项指定在某个目标文件的段的内部的某个偏移量处为映像文件的入口地址,例如:
-entry 8+startup(startupseg)
在此处指定的入口点用于设置ELF映像文件的入口地址。
需要引起注意的是,这里不可以用符号main作为入口点地址符号,否则将会出现类似“Image dose not have an entry point(Not specified or not set due to multiple choice)”的错误信息。
关于ARM Linker的设置还有很多,对于想进一步深入了解的读者,可以查看帮助文件,都有很详细的介绍。
在Linker下还有一个ARM fromELF,如图8.7所示:
fromELF就是在8.1节中介绍的一个实用工具,它实现将链接器,编译器或汇编器的输出代码进行格式转换的功能。例如,将ELF格式的可执行映像文件转换成可以烧写到ROM的二进制格式文件;对输出文件进行反汇编,从而提取出有关目标文件的大小,符号和字符串表以及重定址等信息。
只有在Target设置中选择了Post-linker,才可以使用该选项。
在Output format下拉框中,为用户提供了多种可以转换的目标格式,本例选择Plain binary,这是一个二进制格式的可执行文件,可以被烧些的目标板的Flash中。
在Output file name文本域输入期望生成的输出文件存放的路径,或通过点击Choose...按钮从文件对话框中选择输出文件。如果在这个文本域不输入路径名,则生成的二进制文件存放在工程所在的目录下。
进行好这些相关的设置后,以后在对工程进行make的时候,CodeWarrior IDE 就会在链接完成后调用fromELF 来处理生成的映像文件。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -