ARM嵌入式軟件開發(fā)_第1頁
ARM嵌入式軟件開發(fā)_第2頁
ARM嵌入式軟件開發(fā)_第3頁
ARM嵌入式軟件開發(fā)_第4頁
ARM嵌入式軟件開發(fā)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)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ì)ARM嵌入式軟件開發(fā)3開發(fā)環(huán)境在這一節(jié)里,將介紹ARM開發(fā)軟件ADS(ARM Developer Suite)。通過學(xué)習(xí)如何在CodeWarrior IDE集成開發(fā)環(huán)境下編寫,編譯一個(gè)工程的例子,使讀者能夠掌握在ADS軟件平臺(tái)下開發(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)試ARM嵌入式軟件開發(fā)43.1.1 ADS軟件組成介紹

2、ARM ADS全稱為ARM Developer Suite。是ARM公司推出的新一代ARM集成開發(fā)工具?,F(xiàn)在ADS的最新版本是,它取代了早期的和。它除了可以安裝在Windows NT4,Windows 2000,Windows 98和Windows 95操作系統(tǒng)下,還支持Windows XP和Windows Me操作系統(tǒng)。ADS由命令行開發(fā)工具,ARM時(shí)實(shí)庫,GUI開發(fā)環(huán)境(Code Warrior和AXD),實(shí)用程序和支持軟件組成。 有了這些部件,用戶就可以為ARM系列的RISC處理器編寫和調(diào)試自己的開發(fā)應(yīng)用程序了。ARM嵌入式軟件開發(fā)5命令行開發(fā)工具 ADS提供下面的命令行開發(fā)工具:Arm

3、cc ARM C編譯器,默認(rèn)工具Armcpp ARM C+編譯器 tcc Thumb C編譯器 Tcpp Thumb C+ 編譯器 Armasm ARM和Thumb的匯編器 Armlink ARM連接器 Armsd ARM 和Thumb的符號(hào)調(diào)試器 ARM嵌入式軟件開發(fā)63.1.2 ARM運(yùn)行時(shí)庫ANSI C庫函數(shù):這個(gè)C函數(shù)庫是由以下幾部分組成:(1)在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ī)

4、資源)用來實(shí)現(xiàn)C庫函數(shù)的與目標(biāo)相關(guān)的函數(shù);(3)被C和C+編譯器所調(diào)用的支持函數(shù)。ARM C 庫提供了額外的一些部件支持C+,并為不同的結(jié)構(gòu)體系和處理器編譯代碼。C+庫函數(shù)包含由ISO C+庫標(biāo)準(zhǔn)定義的函數(shù)。 ARM嵌入式軟件開發(fā)7庫路徑庫路徑是在ADS軟件安裝路徑的lib目錄下armlib和cpplib的兩個(gè)子目錄。與這些庫相應(yīng)的頭文件安裝在adsv1_2include目錄下環(huán)境變量ARMLIB必須被設(shè)置成指向庫路徑。另外一種指定ARM C和ARM C+庫路徑的方法是,在鏈接的時(shí)候使用操作選項(xiàng)-libpath directory(directory代表庫所在的路徑),來指明要裝載的庫的路徑。

5、無需對armlib和cpplib這兩個(gè)庫路徑分開指明,鏈接器會(huì)自動(dòng)從用戶所指明的庫路徑中找出這兩個(gè)子目錄。 ARM嵌入式軟件開發(fā)8開發(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ā)過程中的每一個(gè)環(huán)節(jié),使得開發(fā)人員只需通過一個(gè)集成軟件開發(fā)環(huán)境就能研制出ARM產(chǎn)品,在整個(gè)開發(fā)周期中,開發(fā)人員無需離開CodeWarrior開發(fā)環(huán)境, 因此節(jié)省了在操做工具上花的時(shí)間,使得開發(fā)人員有

6、更多的精力投入到代碼編寫上來,CodeWarrior集成開發(fā)環(huán)境(IDE)為管理和開發(fā)項(xiàng)目提供了簡單多樣化的圖形用戶界面。用戶可以使用ADS的CodeWarrior IDE為ARM和Thumb處理器開發(fā)用C,C+,或ARM匯編語言的程序代碼。 ARM嵌入式軟件開發(fā)93.1.3.2 ADS調(diào)試器 調(diào)試器本身是一個(gè)軟件,用戶通過這個(gè)軟件使用debug agent可以對包含有調(diào)試信息的,正在運(yùn)行的可執(zhí)行代碼進(jìn)行比如變量的查看,斷點(diǎn)的控制等調(diào)試操作。ADS中包含有3個(gè)調(diào)試器:(1) AXD(ARM eXtended Debugger):ARM擴(kuò)展調(diào)試器;(2) armsd(ARM Symbolic D

7、ebugger):ARM符號(hào)調(diào)試器;(3) Debug targetAXD可以在Windows 和UNIX下,進(jìn)行程序的調(diào)試。它為用C,C+,和匯編語言編寫的源代碼提供了一個(gè)全面的Windows 和UNIX 環(huán)境。 ARM嵌入式軟件開發(fā)103.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 32

8、位格式映像文件),和 Verilog-like hex format(Verilog 16進(jìn)制文件)。armarARM庫函數(shù)生成器將一系列ELF格式的目標(biāo)文件以庫函數(shù)的形式集合在一起,用戶可以把一個(gè)庫傳遞給一個(gè)鏈接器以代替幾個(gè)ELF文件。Flash downloader用于把二進(jìn)制映像文件下載到ARM開發(fā)板上的Flash存儲(chǔ)器的工具ARM嵌入式軟件開發(fā)113.1.5 ADS支持的軟件 ADS為用戶提供下面的軟件,使用戶可以在軟件仿真的環(huán)境下或者在基于ARM的硬件環(huán)境調(diào)試用戶應(yīng)用程序。ARMulator這是一個(gè)ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,它提供對ARM處理器的指令集的仿真,

9、為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下,開發(fā)程序代碼。ARM嵌入式軟件開發(fā)123.2 使用ADS創(chuàng)建工程 3.2.1 建立一個(gè)工程 在CodeWarrior中新建一個(gè)工程的方法有兩種,可以在工具欄中單擊“New”按鈕,也可以在“File”菜單中選擇“New”菜單。這樣就會(huì)打開一個(gè)如圖所示的對話框。ARM嵌入式軟件開發(fā)13提供了7種可選擇的工程類型 ARM Executabl Image:用于由ARM指令的代碼生成一個(gè)ELF格式的可執(zhí)行映像文件; ARM Object Library:用于由ARM指令的代碼生成一個(gè)armar格式的目標(biāo)文件庫; Empty Projec

10、t:用于創(chuàng)建一個(gè)不包含任何庫或源文件的工程; Make Wizard:用于將Visual C的nmake或GNU make文件轉(zhuǎn)入到CodeWarrior IDE 工程文件; Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混和代碼生成一個(gè)可執(zhí)行的ELF格式的映像文件; Thumb Executable image:用于由Thumb指令創(chuàng)建一個(gè)可執(zhí)行的ELF格式的映像文件; Thumb Object Library:用于由Thumb指令的代碼生成一個(gè)armar格式的目標(biāo)文件庫。 在這里選擇ARM Executable Image,在“Project na

11、me:”中輸入工程文件名,點(diǎn)擊“Location:”文本框的“Set”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設(shè)置好后,點(diǎn)擊“確定” 即可 。ARM嵌入式軟件開發(fā)14這個(gè)時(shí)候會(huì)出現(xiàn)的窗口,如圖所示,有三個(gè)標(biāo)簽頁,分別為 order,target默認(rèn)的是顯示第一個(gè)標(biāo)簽頁files。通過在該標(biāo)簽頁點(diǎn)擊鼠標(biāo)右鍵,選中“Add Files”可以把要用到的源程序添加到工程中。ARM嵌入式軟件開發(fā)15對于本例,由于所有的源文件都還沒有建立,所以首先需要新建源文件。在“File”菜單中選擇“New”,在打開的如圖所示的對話框中,選擇標(biāo)簽頁File,在中輸入要?jiǎng)?chuàng)建的文件名,輸入“helloworld.S”

12、,點(diǎn)擊“確定”關(guān)閉窗口。在這里還有一個(gè)細(xì)節(jié)。在建立好一個(gè)工程時(shí),默認(rèn)的target是DebugRel,還有另外兩個(gè)可用的target,分別為Realse和Debug,這三個(gè)target的含義分別為:DebugRel:使用該目標(biāo),在生成目標(biāo)的時(shí)候,會(huì)為每一個(gè)源文件生成調(diào)試信息;Debug:使用該目標(biāo)為每一個(gè)源文件生成最完全的調(diào)試信息;Release:使用該目標(biāo)不會(huì)生成任何調(diào)試信息。在本例中,使用默認(rèn)的DebugRel目標(biāo)。ARM嵌入式軟件開發(fā)163.2.2 編譯和鏈接工程前的配置點(diǎn)擊Edit菜單,選擇“DebugRel Settings” 本課程實(shí)驗(yàn)程序都使用默認(rèn)配置即可 更多詳細(xì)配置說明 請看

13、“ARM ADS集成開發(fā)環(huán)境的使用.doc ”ARM嵌入式軟件開發(fā)173.3 用AXD進(jìn)行代碼調(diào)試AXD(ARM eXtended Debugger)是ADS軟件中獨(dú)立于CodeWarrior IDE的圖形軟件,打開AXD軟件,默認(rèn)是打開的目標(biāo)是ARMulator。這個(gè)也是調(diào)試的時(shí)候最常用的一種調(diào)試工具,本節(jié)主要是結(jié)合ARMulator介紹在AXD中進(jìn)行代碼調(diào)試的方法和過程,使讀者對AXD的調(diào)試有初步的了解。 ARM嵌入式軟件開發(fā)18編譯,調(diào)試,運(yùn)行ARM嵌入式軟件開發(fā)19調(diào)試過程中-查看內(nèi)存內(nèi)存數(shù)據(jù)情況ARM嵌入式軟件開發(fā)20調(diào)試過程中-查看寄存器寄存器數(shù)據(jù)情況ARM嵌入式軟件開發(fā)21提綱A

14、RM 微處理器指令的分類ARM 微處理器指令的尋址方式3.2 ARM指令分類及尋址方式ARM 微處理器指令的條件域ARM嵌入式軟件開發(fā)22ARM微處理器的指令系統(tǒng) ARM微處理器的指令集是加載微處理器的指令集是加載/存儲(chǔ)型的,也即存儲(chǔ)型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對系統(tǒng)存儲(chǔ)器的訪問則需都要放回寄存器中,而對系統(tǒng)存儲(chǔ)器的訪問則需要通過專門的加載要通過專門的加載/存儲(chǔ)指令來完成。存儲(chǔ)指令來完成。ARM微處理器的指令集可以分為六大類微處理器的指令集可以分為六大類 :跳轉(zhuǎn)指令跳轉(zhuǎn)指令數(shù)據(jù)處理指令數(shù)據(jù)處理指令程序狀態(tài)寄存

15、器(程序狀態(tài)寄存器(PSR)處理指令)處理指令加載加載/存儲(chǔ)指令存儲(chǔ)指令協(xié)處理器指令和異常產(chǎn)生指令協(xié)處理器指令和異常產(chǎn)生指令A(yù)RM微處理器指令的分類ARM嵌入式軟件開發(fā)23ARM微處理器指令表微處理器指令表-1助記符指令功能描述ADC帶進(jìn)位加法指令A(yù)DD加法指令A(yù)ND邏輯與指令B跳轉(zhuǎn)指令BIC位清零指令BL帶返回的跳轉(zhuǎn)指令BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX帶狀態(tài)切換的跳轉(zhuǎn)指令A(yù)RM微處理器指令的分類ARM嵌入式軟件開發(fā)24ARM微處理器指令表微處理器指令表-2助記符指令功能描述CDP協(xié)處理器數(shù)據(jù)操作指令CMN比較反值指令CMP比較指令EOR異或指令LDC存儲(chǔ)器到協(xié)處理器的數(shù)據(jù)傳輸指令LDM加

16、載多個(gè)寄存器指令LDR存儲(chǔ)器到寄存器的數(shù)據(jù)傳輸指令MCRARM寄存器到協(xié)處理器寄存器數(shù)據(jù)傳輸ARM微處理器指令的分類ARM嵌入式軟件開發(fā)25ARM微處理器指令表微處理器指令表-3助記符指令功能描述MLA乘加運(yùn)算指令MOV數(shù)據(jù)傳送指令MRC協(xié)處理器寄存器到ARM寄存器數(shù)據(jù)傳輸MRS傳送CPSR或SPSR的內(nèi)容到通用寄存器MSR傳送通用寄存器到CPSR或SPSR的指令MUL32位乘法指令MLA32位乘加指令MVN數(shù)據(jù)取反傳送指令A(yù)RM微處理器指令的分類ARM嵌入式軟件開發(fā)26ARM微處理器指令表微處理器指令表-4助記符指令功能描述ORR邏輯或指令RSB逆向減法指令RSC帶借位的逆向減法指令SBC帶

17、借位減法指令STC協(xié)處理器寄存器寫入存儲(chǔ)器指令STM批量內(nèi)存字寫入指令STR寄存器到存儲(chǔ)器的數(shù)據(jù)傳輸指令SUB減法指令A(yù)RM微處理器指令的分類ARM嵌入式軟件開發(fā)27ARM微處理器指令表微處理器指令表-5助記符指令功能描述SWI軟件中斷指令SWP交換指令TEQ相等測試指令TST位測試指令A(yù)RM微處理器指令的分類ARM嵌入式軟件開發(fā)28指令的條件域 當(dāng)處理器工作在當(dāng)處理器工作在ARMARM狀態(tài)時(shí),幾乎所有的指令狀態(tài)時(shí),幾乎所有的指令均根據(jù)均根據(jù)CPSRCPSR中條件碼的狀態(tài)和指令的條件域有中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿足時(shí),指令條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿足時(shí),指

18、令被執(zhí)行,否則指令被忽略。被執(zhí)行,否則指令被忽略。每一條每一條ARMARM指令包含指令包含4 4位的條件碼,位于指令的位的條件碼,位于指令的最高最高4 4位位31:2831:28。條件碼共有。條件碼共有1616種,每種條件種,每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可以添加在碼可用兩個(gè)字符表示,這兩個(gè)字符可以添加在指令助記符的后面和指令同時(shí)使用。例如,跳指令助記符的后面和指令同時(shí)使用。例如,跳轉(zhuǎn)指令轉(zhuǎn)指令B B可以加上后綴可以加上后綴EQEQ變?yōu)樽優(yōu)锽EQBEQ表示表示“相等則相等則跳轉(zhuǎn)跳轉(zhuǎn)”,即當(dāng),即當(dāng)CPSRCPSR中的中的Z Z標(biāo)志置位時(shí)發(fā)生跳轉(zhuǎn)。標(biāo)志置位時(shí)發(fā)生跳轉(zhuǎn)。 ARM微處理器指令的條件域ARM嵌入式軟件開發(fā)29指令的條件域表-1條件碼后綴標(biāo) 志含 義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無符號(hào)數(shù)大于或等于0011CCC清零無符號(hào)數(shù)小于0100MIN置位負(fù)數(shù)0101PLN清零正數(shù)或零0110VSV置位溢出0111VCV清零未溢出ARM微處理器指令的條件域ARM嵌入式軟件開發(fā)30指令的條件域表-2條件碼后綴標(biāo) 志含 義1001LSC清零Z置位無符號(hào)數(shù)小于或等于1010GEN等于V帶符號(hào)數(shù)大于或等于10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論