?? 其他資料 整理 ads 設(shè)定.txt
字號(hào):
嵌入式實(shí)驗(yàn)介紹
----- 軟件平臺(tái)介紹
實(shí)驗(yàn)環(huán)境ADS和Multi ICE
ADS是一個(gè)使用方便的集成開(kāi)發(fā)環(huán)境,全稱是"ARM Developer Suite v1.2 ",它是由ARM公司提供的專門(mén)用于ARM相關(guān)應(yīng)用開(kāi)發(fā)和調(diào)試的綜合性軟件.我們?cè)诒緦?shí)驗(yàn)指導(dǎo)書(shū)中用到了"CodeWarrior for ARM Developer Suite"和"AXD Debugger"兩個(gè)部件.
其中CodeWarrior for ARM Developer Suite用于生成和編譯工程,AXD Debugger用于下載和調(diào)試工程項(xiàng)目.
一,ADSv1.2( ARM Developer Suite v1.2)
Multi-ICE Server是由ARM公司提供的Windows操作系統(tǒng)下ARM JTAG的配置程序.通過(guò)它可以使ARM JTAG與目標(biāo)板建立通訊連接,并能夠反饋目標(biāo)板上ARM處理器的硬件信息.Multi-ICE Server可以適應(yīng)大多數(shù)JTAG仿真器而不需要其它特別的驅(qū)動(dòng).
這個(gè)軟件為主機(jī)(上位機(jī))和實(shí)驗(yàn)板(下位機(jī))之間打建了軟件的橋梁(硬件的橋梁就是仿真器).在工程的下載,調(diào)試,單步運(yùn)行中這個(gè)軟件要始終打開(kāi).
二, Multi-ICE Server
ADS介紹
1,打開(kāi)ADS
點(diǎn)擊:桌面-開(kāi)始-程序-ARM Developer Suite v1.2-CodeWarrior for ARM Developer Suite:
2,打開(kāi)ADS IDE中的CodeWarrior 編譯器,打開(kāi)拷貝到硬盤(pán)的"\assemble"目錄下的Assemble.mcp工程文件.
窗體上部1部分是項(xiàng)目類型,點(diǎn)擊下箭頭出現(xiàn)下面下拉菜單:
其中,Debug是調(diào)試類型,Release是發(fā)布類型,DebugRel是通用類型,我們選用DebugRel.
3,點(diǎn)擊窗口中2按鈕打開(kāi)設(shè)置窗口:
設(shè)置Target Setting選項(xiàng)組
Linker用于選擇使用的連接器,可能取值如下:
ARM Linker:選擇ARM連接器armlink連接編譯器和匯編器生成的目標(biāo)文件
ARM Librarian:選擇ARM的library工具,將編譯器和連接器生成的文件轉(zhuǎn)化為ARM庫(kù)文件.
None:不使用任何連接器,這時(shí)工程項(xiàng)目中文件不會(huì)被匯編器和編譯器處理.
Pre-Linker:CodeWarrior IDE for ARM當(dāng)前沒(méi)有使用本選項(xiàng)
Post-Linker:用于選擇對(duì)連接器輸出的文件的處理方式,可能的取值如下:
None:不進(jìn)行連接后的處理
Arm fromELF: 使用ARM工具fromELF處理連接器輸出的ELF格式的文件,它可以將ELF格式的文件轉(zhuǎn)換成各種二進(jìn)制文件
Batch File Runner:在連接完成后運(yùn)行一個(gè)dos格式的批處理文件.
Output Directory:用于定義本工程項(xiàng)目的數(shù)據(jù)目錄.工程項(xiàng)目的生成文件存放在該目錄中,默認(rèn)取值為{Project}.
設(shè)置Access Paths選項(xiàng)組
User Paths:用于指定用戶路徑,默認(rèn)為{Project},是當(dāng)前工程項(xiàng)目所在的路徑.ADS中各種工具在用戶路徑中搜索以下內(nèi)容:用戶頭文件,頭文件對(duì)應(yīng)的庫(kù)文件以及用戶的源文件.當(dāng)用戶將某個(gè)目錄的源文件添加到項(xiàng)目時(shí),該目錄自動(dòng)添加到User Paths中.
System Paths:用于指定系統(tǒng)路徑,默認(rèn)為{compiler}lib和{compiler}include. ADS中各種工具在系統(tǒng)路徑中搜索以下內(nèi)容:C++系統(tǒng)頭文件和頭文件對(duì)應(yīng)的系統(tǒng)庫(kù)文件.
Always Search User Paths:用于指定在用戶路徑下搜索系統(tǒng)頭文件.
設(shè)置Build Extras選項(xiàng)組
Use modification date caching復(fù)選框:如果源文件在CodeWarrior IDE之外被修改, CodeWarrior IDE不檢查該修改日期,可以節(jié)省編譯時(shí)間.當(dāng)使用第三方編譯器或處于多用戶環(huán)境時(shí),不要選擇本復(fù)選框.
Cache subprojects復(fù)選框:選擇該復(fù)選框可以提高多工程項(xiàng)目時(shí)的更新和連接速度,不選擇可以節(jié)省CodeWarrior IDE需要的存儲(chǔ)空間.
Activate Browse復(fù)選框:可以產(chǎn)生CodeWarrior IDE需要的瀏覽器信息
User External debugger復(fù)選框:選中該復(fù)選框可使用第三方調(diào)試器.
Runtime Setting選項(xiàng)組:該選項(xiàng)組當(dāng)前在CodeWarrior IDE for ARM里沒(méi)有使用.
設(shè)置File Mapping選項(xiàng)組:用于指定特定文件擴(kuò)展名稱所對(duì)應(yīng)的CodeWarrior IDE中內(nèi)嵌的工具.比如:擴(kuò)展名.c對(duì)應(yīng)著ARM C語(yǔ)言匯編器.該選項(xiàng)組中的選項(xiàng)確定了CodeWarrior IDE認(rèn)識(shí)哪些擴(kuò)展名稱的文件
設(shè)置Source Trees選項(xiàng)組:其中定義的路徑名稱可以被Access Paths等選項(xiàng)組中的選項(xiàng)使用.
設(shè)置ARM Target選項(xiàng)組:
Output Name:選擇輸出文件名,默認(rèn)為工程名.
Output Type:選擇輸出文件種類,默認(rèn)為ARM連接.
匯編器選項(xiàng)設(shè)置:設(shè)置ARM Assembler
Target 選項(xiàng)卡設(shè)置:
Architecture or Processor下拉列表框:用于選擇目標(biāo)系統(tǒng)中的ARM體系結(jié)構(gòu)版本號(hào)或者處理器編號(hào).
Floating Point下拉列表:用于選擇系統(tǒng)中浮點(diǎn)部件的體系結(jié)構(gòu),設(shè)置本選項(xiàng)后將使得特定CPU型號(hào)所含的浮點(diǎn)部件的體系結(jié)構(gòu)失效.可能取值如下:
FPA Formats and Instructions:選擇使用浮點(diǎn)加速器(FPA).
VFPv1 Formats and Instructions:系統(tǒng)中包含硬件的向量浮點(diǎn)運(yùn)算部件,如ARM10v0,該部件符合vfpv1標(biāo)準(zhǔn).
VFPv2 Formats and Instructions:系統(tǒng)中包含硬件的向量浮點(diǎn)運(yùn)算部件,如ARM10v0,該部件符合vfpv2標(biāo)準(zhǔn).
Old-Style Mixed-Endian softfp:使用軟件的浮點(diǎn)運(yùn)算庫(kù),該浮點(diǎn)運(yùn)算庫(kù)支持混合的內(nèi)存模式,可以同時(shí)包含big-endian和little-endian.
Pure-Endian softfp:使用軟件的浮點(diǎn)運(yùn)算庫(kù),該浮點(diǎn)運(yùn)算庫(kù)支持單一的內(nèi)存模式,要么為big-endian格式,要么為little-endian格式.
VFP with softvfp calling standard:可以支持軟件浮點(diǎn)運(yùn)算庫(kù),也支持到硬件VFP的連接.適合在系統(tǒng)中存在Thumb指令,同時(shí)包含硬件VFP的場(chǎng)合.
No floating point:不支持浮點(diǎn)運(yùn)算.
Initial State:決定運(yùn)行用戶程序時(shí),系統(tǒng)的狀態(tài)是ARM狀態(tài)還是Thumb狀態(tài).設(shè)置該選項(xiàng)不能切換系統(tǒng)狀態(tài),程序中必須包含進(jìn)行程序狀態(tài)切換的代碼.
字節(jié)單元A+3
字節(jié)單元A+2
字節(jié)單元A+1
字節(jié)單元A
字單元A
31
24 23
16 15
8 7
0
圖1 Big-endian格式的存儲(chǔ)系統(tǒng)
字節(jié)單元A
字節(jié)單元A+1
字節(jié)單元A+2
字節(jié)單元A+3
字單元A
31
24 23
16 15
8 7
0
圖2 little-endian格式的存儲(chǔ)系統(tǒng)
Byte Order:使用big-endian內(nèi)存模式還是little-endian內(nèi)存模式.
big-endian:地址為A的字單元包括字節(jié)單元A,A+1,A+2和A+3字節(jié)單元由 高位到低位字節(jié)順序?yàn)锳,A+1,A+2,A+3.
little-endian:地址為A的字單元包括字節(jié)單元A,A+1,A+2和A+3字節(jié)單元由高位到低位字節(jié)順序?yàn)锳+3,A+2,A+1,A.
ATPCS 選項(xiàng)卡設(shè)置:
設(shè)置合適的ATPCS選項(xiàng)可以使匯編器在生成的目標(biāo)文件中包含相應(yīng)的屬性標(biāo)識(shí)符,這些屬性標(biāo)識(shí)符可以供連接器使用
Calling Standard: 指定匯編程序代碼是否遵守一定的ATPCS標(biāo)準(zhǔn).
Predeclare Register Names : 指定匯編器是否認(rèn)識(shí)ATPCS標(biāo)準(zhǔn)中預(yù)定義的寄存器名稱.
ARM/Thumb interwork:選中,則指定源程序中有ARM和Thumb指令混合使用
ReadOnly Position Independent:選中,則指定源程序是ROPI(只讀位置無(wú)關(guān)),ARMASM默認(rèn)/noropi.
Read-Write Position Independent:選中,則指定源程序是RWPI(讀寫(xiě)位置無(wú)關(guān)), ARMASM默認(rèn)/norwpi
Software stack: 有三個(gè)單選按鈕
On 指定源程序進(jìn)行軟件數(shù)據(jù)棧限制檢查
Off 指定源程序不進(jìn)行軟件數(shù)據(jù)棧限制檢查
Not Applicable 指定源程序既與進(jìn)行軟件數(shù)據(jù)棧限制檢查的程序兼容,也與不進(jìn)行軟件數(shù)據(jù)棧限制檢查的程序兼容
Options 選項(xiàng)卡設(shè)置:
Check Register Lists :選中則ARMASM檢查指令RLIST,LDM等指令的寄存器列表,保證其按編號(hào)由小到大順序排列,否則產(chǎn)生警告.
No Warning:選中ARMASM不產(chǎn)生警告
Source Line Debug:選中則ARMASM產(chǎn)生DRAWF2 格式的調(diào)試信息表
Keep Symbols:選中,則ARMASM將局部符號(hào)保留在目標(biāo)文件的符號(hào)表中,供調(diào)試器進(jìn)行調(diào)試使用.
Ignore C-Style escape characters : 選中則ARMASM忽略C風(fēng)格的轉(zhuǎn)義字符如"\n"
Fault long running Load and Store Multiples:選中,則如果指令LDM/STM中的寄存器個(gè)數(shù)超標(biāo), ARMASM將認(rèn)為該指令錯(cuò)誤
Predefines 選項(xiàng)卡設(shè)置:可以定義一個(gè)全局變量,并可以賦值.
Variable輸入全局變量的名稱;在Directive下拉列表中選擇為該變量賦值的偽操作;Numeric為全局變量賦值
List of predefines 中可以選擇已經(jīng)定義的全局變量
List Control 選項(xiàng)卡設(shè)置:
Extras 選項(xiàng)卡設(shè)置:
可以設(shè)置一個(gè)via格式的配置文件,這樣各匯編選項(xiàng)的值可以從該文件讀入
編譯器選項(xiàng)設(shè)置:有ARM C,ARM C++,Thumb C和Thumb C++四種編譯器,這幾種編譯器設(shè)置方法相同,以ARM C為例介紹.
Target and Source選項(xiàng)卡設(shè)置:
Architecture or Processor下拉列表框:用于選擇目標(biāo)系統(tǒng)中的ARM體系結(jié)構(gòu)版本號(hào)或者處理器編號(hào).
Floating Point下拉列表:用于選擇系統(tǒng)中浮點(diǎn)部件的體系結(jié)構(gòu),設(shè)置本選項(xiàng)后將使得特定CPU型號(hào)所含的浮點(diǎn)部件的體系結(jié)構(gòu)失效.取值范圍與前面匯編器介紹相同.
Byte Order:使用big-endian內(nèi)存模式還是little-endian內(nèi)存模式.
big-endian:地址為A的字單元包括字節(jié)單元A,A+1,A+2和A+3字節(jié)單元由高位到低位字節(jié)順序?yàn)锳,A+1,A+2,A+3.
little-endian:地址為A的字單元包括字節(jié)單元A,A+1,A+2和A+3字節(jié)單元由高位到低位字節(jié)順序?yàn)锳+3,A+2,A+1,A.
Source Language:確定源文件的類型,可能取值如下:
ANSI/ISO Standard C:指定源程序滿足比較嚴(yán)格的ANSI C標(biāo)準(zhǔn),這時(shí)刪除了一些語(yǔ)言特性,擴(kuò)展了一些細(xì)小的功能.
Strict ANSI/ISO Standard C:指定源程序滿足嚴(yán)格的ANSI C標(biāo)準(zhǔn).
對(duì)于C++編譯器來(lái)說(shuō)還有下面三個(gè)選項(xiàng):
ISO/IEC Standard C++:基本滿足ISO/IEC C++標(biāo)準(zhǔn),擴(kuò)展了一些細(xì)小的功能.
Strict ISO/IEC Standard C++:嚴(yán)格滿足ISO/IEC C++標(biāo)準(zhǔn).
Embedded C++:指定源程序滿足工業(yè)C++標(biāo)準(zhǔn),即Embedded C++標(biāo)準(zhǔn). Embedded C++語(yǔ)言是標(biāo)準(zhǔn)C++語(yǔ)言的一個(gè)子集,它主要用于嵌入式應(yīng)用環(huán)境,更注重代碼執(zhí)行效率.
連接器選項(xiàng)設(shè)置:包括5個(gè)選項(xiàng)卡,分別為Output,Option,Layout,Listings和Extras.
Output選項(xiàng)卡:用來(lái)控制連接器進(jìn)行連接操作的類型,可以有三種類型的連接操作,如圖為Partial,Simple和Scattered.
Output選項(xiàng)卡
Linktype選項(xiàng)組中的單選按鈕確定使用的連接方式.
Partial:連接器執(zhí)行部分連接操作,部分連接生成ELF格式的目標(biāo)文件.這些文件可以在作為進(jìn)行進(jìn)一步連接時(shí)的輸入文件,也可以作為armar工具的輸入文件.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -