版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 ADS開發(fā)環(huán)境和ARM匯編語言,2,主要內(nèi)容:,3.1 ADS開發(fā)環(huán)境3.1.1 ADS軟件組成介紹3.1.2 使用ADS創(chuàng)建工程3.1.3 用AXD進(jìn)行代碼調(diào)試3.2 ARM匯編程序設(shè)計(jì),3,3.1ADS開發(fā)環(huán)境,在這一節(jié)里,將介紹ARM開發(fā)軟件ADS(ARM Developer Suite)。通過學(xué)習(xí)如何在CodeWarrior IDE集成開發(fā)環(huán)境下編寫,編譯一個工程的例子,使讀者能夠掌握在A
2、DS軟件平臺下開發(fā)和調(diào)試ARM匯編程序。本節(jié)內(nèi)容:3.1.1 ADS軟件組成介紹3.1.2 使用ADS創(chuàng)建工程3.1.3 用AXD進(jìn)行代碼調(diào)試,4,3.1.1 ADS軟件組成介紹,ARM ADS全稱為ARM Developer Suite。是ARM公司推出的新一代ARM集成開發(fā)工具?,F(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0。它除了可以安裝在Windows NT4,Windows 2000,W
3、indows 98和Windows 95操作系統(tǒng)下,還支持Windows XP和Windows Me操作系統(tǒng)。ADS由命令行開發(fā)工具,ARM時實(shí)庫,GUI開發(fā)環(huán)境(Code Warrior和AXD),實(shí)用程序和支持軟件組成。 有了這些部件,用戶就可以為ARM系列的RISC處理器編寫和調(diào)試自己的開發(fā)應(yīng)用程序了。,5,3.1.1命令行開發(fā)工具,ADS提供下面的命令行開發(fā)工具:Armcc ARM C編譯器,默認(rèn)工具Ar
4、mcpp ARM C++編譯器 tcc Thumb C編譯器 Tcpp Thumb C++ 編譯器 Armasm ARM和Thumb的匯編器 Armlink ARM連接器 Armsd ARM 和Thumb的符號調(diào)試器,6,3.1.2 ARM運(yùn)行時庫,ANSI C庫函數(shù):這個C函數(shù)庫是由以下幾部分組成:(1
5、)在ISO C標(biāo)準(zhǔn)中定義的函數(shù);(2)在semihosted環(huán)境下(semihosting是針對ARM目標(biāo)機(jī)的一種機(jī)制,它能夠根據(jù)應(yīng)用程序代碼的輸入/輸出請求,與運(yùn)行有調(diào)試功能的主機(jī)通訊。這種技術(shù)允許主機(jī)為通常沒有輸入和輸出功能的目標(biāo)硬件提供主機(jī)資源)用來實(shí)現(xiàn)C庫函數(shù)的與目標(biāo)相關(guān)的函數(shù);(3)被C和C++編譯器所調(diào)用的支持函數(shù)。ARM C 庫提供了額外的一些部件支持C++,并為不同的結(jié)構(gòu)體系和處理器編譯代碼。C++庫函數(shù)包含由I
6、SO C++庫標(biāo)準(zhǔn)定義的函數(shù)。,7,庫路徑,庫路徑是在ADS軟件安裝路徑的lib目錄下armlib和cpplib的兩個子目錄。與這些庫相應(yīng)的頭文件安裝在\adsv1_2\include目錄下環(huán)境變量ARMLIB必須被設(shè)置成指向庫路徑。另外一種指定ARM C和ARM C++庫路徑的方法是,在鏈接的時候使用操作選項(xiàng)-libpath directory(directory代表庫所在的路徑),來指明要裝載的庫的路徑。無需對armlib和cp
7、plib這兩個庫路徑分開指明,鏈接器會自動從用戶所指明的庫路徑中找出這兩個子目錄。,8,3.1.3GUI開發(fā)環(huán)境(Code Warrior和AXD),CodeWarrior for ARM是一套完整的集成開發(fā)工具,充分發(fā)揮了ARM RISC 的優(yōu)勢, 使產(chǎn)品開發(fā)人員能夠很好的應(yīng)用尖端的片上系統(tǒng)技術(shù). 該工具是專為基于ARM RISC的處理器而設(shè)計(jì)的, 它可加速并簡化嵌入式開發(fā)過程中的每一個環(huán)節(jié),使得開發(fā)人員只需通過一個集成軟件開發(fā)環(huán)境就
8、能研制出ARM產(chǎn)品,在整個開發(fā)周期中,開發(fā)人員無需離開CodeWarrior開發(fā)環(huán)境, 因此節(jié)省了在操做工具上花的時間,使得開發(fā)人員有更多的精力投入到代碼編寫上來,CodeWarrior集成開發(fā)環(huán)境(IDE)為管理和開發(fā)項(xiàng)目提供了簡單多樣化的圖形用戶界面。用戶可以使用ADS的CodeWarrior IDE為ARM和Thumb處理器開發(fā)用C,C++,或ARM匯編語言的程序代碼。,9,3.1.3.2 ADS調(diào)試器,調(diào)試器本身是一個軟件,
9、用戶通過這個軟件使用debug agent可以對包含有調(diào)試信息的,正在運(yùn)行的可執(zhí)行代碼進(jìn)行比如變量的查看,斷點(diǎn)的控制等調(diào)試操作。ADS中包含有3個調(diào)試器:(1) AXD(ARM eXtended Debugger):ARM擴(kuò)展調(diào)試器;(2) armsd(ARM Symbolic Debugger):ARM符號調(diào)試器;(3) Debug targetAXD可以在Windows 和UNIX下,進(jìn)行程序的調(diào)試。它為用C,C++,
10、和匯編語言編寫的源代碼提供了一個全面的Windows 和UNIX 環(huán)境。,10,3.1.4 ADS實(shí)用程序,fromELF這是ARM映像文件轉(zhuǎn)換工具。該命令將ELF格式的文件作為輸入文件,將該格式轉(zhuǎn)換為各種輸出格式的文件,包括plain binary(BIN格式映像文件), Motorola 32-bit S-record format(Motorola 32位S格式映像文件), Intel Hex 32 format(Intel
11、 32位格式映像文件),和 Verilog-like hex format(Verilog 16進(jìn)制文件)。armarARM庫函數(shù)生成器將一系列ELF格式的目標(biāo)文件以庫函數(shù)的形式集合在一起,用戶可以把一個庫傳遞給一個鏈接器以代替幾個ELF文件。Flash downloader用于把二進(jìn)制映像文件下載到ARM開發(fā)板上的Flash存儲器的工具,11,3.1.5 ADS支持的軟件,ADS為用戶提供下面的軟件,使用戶可以在軟件仿真
12、的環(huán)境下或者在基于ARM的硬件環(huán)境調(diào)試用戶應(yīng)用程序。ARMulator這是一個ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,它提供對ARM處理器的指令集的仿真,為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下,開發(fā)程序代碼。,12,3.2 使用ADS創(chuàng)建工程,3.2.1 建立一個工程 在CodeWarrior中新建一個工程的方法有兩種,可以在工具欄中單擊“New”按鈕,也可以在“File”菜單中選擇“N
13、ew…”菜單。這樣就會打開一個如圖所示的對話框。,13,提供了7種可選擇的工程類型,ARM Executabl Image:用于由ARM指令的代碼生成一個ELF格式的可執(zhí)行映像文件;ARM Object Library:用于由ARM指令的代碼生成一個armar格式的目標(biāo)文件庫;Empty Project:用于創(chuàng)建一個不包含任何庫或源文件的工程;Makefile Importer Wizard:用于將Visual C的nmake或G
14、NU make文件轉(zhuǎn)入到CodeWarrior IDE 工程文件;Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混和代碼生成一個可執(zhí)行的ELF格式的映像文件;Thumb Executable image:用于由Thumb指令創(chuàng)建一個可執(zhí)行的ELF格式的映像文件;Thumb Object Library:用于由Thumb指令的代碼生成一個armar格式的目標(biāo)文件庫。 在這里選擇ARM
15、Executable Image,在“Project name:”中輸入工程文件名,點(diǎn)擊“Location:”文本框的“Set…”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設(shè)置好后,點(diǎn)擊“確定” 即可 。,14,這個時候會出現(xiàn)ledcircle.mcp的窗口,如圖8.2所示,有三個標(biāo)簽頁,分別為files,link order,target默認(rèn)的是顯示第一個標(biāo)簽頁files。通過在該標(biāo)簽頁點(diǎn)擊鼠標(biāo)右鍵,選中“Add Files…”可以
16、把要用到的源程序添加到工程中。,,15,對于本例,由于所有的源文件都還沒有建立,所以首先需要新建源文件。在“File”菜單中選擇“New”,在打開的如圖8.1所示的對話框中,選擇標(biāo)簽頁File,在File name中輸入要創(chuàng)建的文件名,輸入“helloworld.S”,點(diǎn)擊“確定”關(guān)閉窗口。在這里還有一個細(xì)節(jié)。在建立好一個工程時,默認(rèn)的target是DebugRel,還有另外兩個可用的target,分別為Realse和Debug,這
17、三個target的含義分別為:DebugRel:使用該目標(biāo),在生成目標(biāo)的時候,會為每一個源文件生成調(diào)試信息;Debug:使用該目標(biāo)為每一個源文件生成最完全的調(diào)試信息;Release:使用該目標(biāo)不會生成任何調(diào)試信息。在本例中,使用默認(rèn)的DebugRel目標(biāo)。,16,3.2.2 編譯和鏈接工程前的配置,點(diǎn)擊Edit菜單,選擇“DebugRel Settings…” 本課程實(shí)驗(yàn)程序都使用默認(rèn)配置即可 更多詳細(xì)配置說明
18、請看“ARM ADS集成開發(fā)環(huán)境的使用.doc ”,17,3.3 用AXD進(jìn)行代碼調(diào)試,AXD(ARM eXtended Debugger)是ADS軟件中獨(dú)立于CodeWarrior IDE的圖形軟件,打開AXD軟件,默認(rèn)是打開的目標(biāo)是ARMulator。這個也是調(diào)試的時候最常用的一種調(diào)試工具,本節(jié)主要是結(jié)合ARMulator介紹在AXD中進(jìn)行代碼調(diào)試的方法和過程,使讀者對AXD的調(diào)試有初步的了解。,18,編譯,調(diào)試,運(yùn)行,,19,調(diào)
19、試過程中---查看內(nèi)存數(shù)據(jù)情況,,20,調(diào)試過程中---查看寄存器數(shù)據(jù)情況,,21,,提綱,1,3,2,ARM 微處理器指令的分類,ARM 微處理器指令的尋址方式,3.2 ARM指令分類及尋址方式,ARM 微處理器指令的條件域,22,ARM微處理器的指令系統(tǒng),ARM微處理器的指令集是加載/存儲型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對系統(tǒng)存儲器的訪問則需要通過專門的加載/存儲指令來完成。ARM微處理器
20、的指令集可以分為六大類 :跳轉(zhuǎn)指令數(shù)據(jù)處理指令程序狀態(tài)寄存器(PSR)處理指令加載/存儲指令協(xié)處理器指令和異常產(chǎn)生指令,ARM微處理器指令的分類,23,ARM微處理器指令表-1,ARM微處理器指令的分類,24,ARM微處理器指令表-2,ARM微處理器指令的分類,25,ARM微處理器指令表-3,ARM微處理器指令的分類,26,ARM微處理器指令表-4,ARM微處理器指令的分類,27,ARM微處理器指令表-5,ARM微處理器指令的
21、分類,28,指令的條件域,當(dāng)處理器工作在ARM狀態(tài)時,幾乎所有的指令均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿足時,指令被執(zhí)行,否則指令被忽略。每一條ARM指令包含4位的條件碼,位于指令的最高4位[31:28]。條件碼共有16種,每種條件碼可用兩個字符表示,這兩個字符可以添加在指令助記符的后面和指令同時使用。例如,跳轉(zhuǎn)指令B可以加上后綴EQ變?yōu)锽EQ表示“相等則跳轉(zhuǎn)”,即當(dāng)CPSR中的Z標(biāo)志置位時發(fā)生
22、跳轉(zhuǎn)。,ARM微處理器指令的條件域,29,指令的條件域表-1,ARM微處理器指令的條件域,30,指令的條件域表-2,ARM微處理器指令的條件域,31,ARM指令的尋址方式,ARM指令系統(tǒng)支持如下幾種常見的尋址方式:立即尋址 寄存器尋址 寄存器間接尋址 基址變址尋址 多寄存器尋址 相對尋址 堆棧尋址,ARM微處理器指令的尋址方式,32,ARM指令系統(tǒng),詳見: 常用ARM指令集及匯編.pdf,33,例子:ARM程序設(shè)計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論