ADS 的基本设置
新建中 project的选项
在新建对话框中为用户提供了 7种可选择的工程类型。
-
ARM Executable Image :用于由 ARM 指令的代码生成一个 ELF 格式的可执行映像文件;
-
ARM Object Library :用于由 ARM 指令的代码生成一个 armar 格式的目标文件库;
-
Empty Project :用于创建一个不包含任何库或源文件的工程;
-
Makefile Importer Wizard :用于将 Visual C 的 nmake 或 GNU make 文件转入到 CodeWarrior IDE 工程文件;
-
Thumb ARM Executable Image :用于由 ARM 指令和 Thumb 指令的混和代码生成一个可执行的 ELF 格式的映像文件;
-
Thumb Executable image :用于由 Thumb 指令创建一个可执行的 ELF 格式的映像文件;
-
Thumb Object Library :用于由 Thumb 指令的代码生成一个 armar 格式的目标文件库
进入项目以后进行 DebugRel Setting相关设置
1.1Target Settings
其中在 Target Settings中,有 Target Name , Linker, Pre-linker, Post-linker等需要设置:
Target Name:
Target 在设置中通常有三种模式: (默认为 DebugRel)
-
DebugRel :使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;
-
Debug :使用该目标为每一个源文件生成最完全的调试信息;
-
Release :使用该目标不会生成任何调试信息。
Linker: 选项供用户选择要使用的链接器。
-
ARM Linker :(默认选择)使用该链接器,将使用 armlink 链接编译器和汇编器生成的工程中的文件相应的目标文件。
-
None :不是不用任何链接器,如果使用它,则工程中的所有文件都不会被编译器或汇编器处理。
-
ARM Librarian :表示将编译或汇编得到的目标文件转换为 ARM 库文件。
Pre-linker : 目前 CodeWarrior IDE不支持该选项。
Post-Linker : 选择在链接完成后,还要对输出文件进行的操作。
-
ARM from ELF :在链接生成映像文件后,再调用 FromELF 命令将含有调试信息的 ELF 格式的映像文件转换成其他格式的文件。这里为二进制代码烧到 flash 当中去
-
None :不进行操作
-
Batch File Runner :
1.2Language Settings
ARM的编译器选择,默认的 ARM体系结构是 ARM7TDMI,如汇编编译器 armasm, C编译器 armcc等实用默认即可,还可以进行字节顺序大端小端模式的设置,一般默认即可。
1.3Linker设置
1.3.1ARM Linker:
这些选项对最终生成的文件有着直接的影响
Output 选项:
Linktype: 提供了三种链接方式
-
Partia :链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件
-
Simple :默认的链接方式,也是最为频繁使用的链接方式,它链接生成简单的 ELF 格式的目标文件,使用的是链接器选项中指定的地址映射方式。
选择该链接方式会出现 Simple image 的设置:
RO Base : 这个文本框设置包含有 RO段的加载域和运行域为同一个地址。默认是 0x8000。这里用户要根据自己硬件的实际 SDRAM的地址空间来修改这个地址,保证在这里填写的地址,是程序运行时, SDRAM地址空间所能覆盖的地址。我们所应用的 CS-II使用 0x00000000.
RW Base : 这个文本框设置了包含 RW和 ZI输出段的运行域地址。如果选中 split选项,链接器生成的映像文件将包含两个加载域和两个运行域,此时,在 RW Base中所输入的地址为包含 RW和 ZI输出段的域设置了加载域和运行域地址。我们所应用的 CS-II使用 0x40000030
Ropi : 选中这个设置将告诉链接器使包含有 RO输出段的运行域位置无关。使用这个选项,链接器将保证下面的操作:
检查各段之间的重定址是否有效;
确保任何由 armlink自身生成的代码是只读位置无关的。
Rwpi : 选中该选项将会告诉链接器使包含 RW和 ZI输出段的运行域位置无关。如果这个选项没有被选中,域就标识为绝对。每一个可写的输入段必须是读写位置无关的。如果这个选项被选中,链接器将进行下面的操作,
检查可读 /可写属性的运行域的输入段是否设置了位置无关属性;
检查在各段之间的重地址是否有效;
Split Image : 选择这个选项把包含 RO和 RW的输出段的加载域分成 2个加载域:一个是包含 RO输出段的域,一个是包含 RW输出段的域。
Relocatable : 选择这个选项保留了映像文件的重定址偏移量。这些偏移量为程序加载器提供了有用信息。
-
Scattered :链接器要根据 scatter 格式文件中指定的地址映射,生成复杂的 ELF 格式的映像文件。一般情况下使用不太多
Options选项
Image entry point: 它指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址处执行。用户可以在这个文本框中输入下面格式的入口点:
-
入口点地址:一个数值,例如 -entry 0x0
-
符号:该选项指定映像文件的入口点为该符号所代表的地址处,比如: -entry int_handlerg, 如果该符号有多处定义存在, armlink 将产生出错信息。
-
offset+object(section) :该选项指定在某个目标文件的段的内部的某个偏移量处为映像文件的入口地址,例如: -entry 8+startup(startupseg)
需要引起注意的是,这里不可以用符号 main作为入口点地址符号,否则将会出现类似“ Image dose not have an entry point (Not specified or not set due to multiple choice)”的错误信息。
我们使用的 CS-II设置为 0x00即可
Layout选项
Object/Symbol: 我们使用的 CS-II为 startup.o
Section: vectors 我们使用的 CS-II为 vectors
1.3.2ARM from ELF
实现将链接器,编译器或汇编器的输出代码进行格式转换的功能。
例如,将 ELF格式的可执行映像文件转换成可以烧写到 ROM的二进制格式文件;对输出文件进行反汇编,从而提取出有关目标文件的大小,符号和字符串表以及重定址等信息。
只有在 Target 设置中选择了 Post-linker,才可以使用该选项。
Output format
-
plain binary(BIN 格式映像文件 )
-
Motorola 32-bit S-record format(Motorola 32 位 S 格式映像文件 )
-
Intel Hex 32 format(Intel 32 位格式映像文件 )
-
Verilog-like hex format(Verilog 16 进制文件 )