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 進制文件 )