版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)2主要內容:3.1 ADS開發(fā)環(huán)境3.1.1 ADS軟件組成介紹3.1.2 使用ADS創(chuàng)建工程3.1.3 用AXD進行代碼調試3.2 ARM匯編程序設計ARM嵌入式軟件開發(fā)3開發(fā)環(huán)境在這一節(jié)里,將介紹ARM開發(fā)軟件ADS(ARM Developer Suite)。通過學習如何在CodeWarrior IDE集成開發(fā)環(huán)境下編寫,編譯一個工程的例子,使讀者能夠掌握在ADS軟件平臺下開發(fā)和調試ARM匯編程序。本節(jié)內容:3.1.1 ADS軟件組成介紹3.1.2 使用ADS創(chuàng)建工程3.1.3 用AXD進行代碼調試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時實庫,GUI開發(fā)環(huán)境(Code Warrior和AXD),實用程序和支持軟件組成。 有了這些部件,用戶就可以為ARM系列的RISC處理器編寫和調試自己的開發(fā)應用程序了。ARM嵌入式軟件開發(fā)5命令行開發(fā)工具 ADS提供下面的命令行開發(fā)工具:Arm
3、cc ARM C編譯器,默認工具Armcpp ARM C+編譯器 tcc Thumb C編譯器 Tcpp Thumb C+ 編譯器 Armasm ARM和Thumb的匯編器 Armlink ARM連接器 Armsd ARM 和Thumb的符號調試器 ARM嵌入式軟件開發(fā)63.1.2 ARM運行時庫ANSI C庫函數(shù):這個C函數(shù)庫是由以下幾部分組成:(1)在ISO C標準中定義的函數(shù);(2)在semihosted環(huán)境下(semihosting是針對ARM目標機的一種機制,它能夠根據(jù)應用程序代碼的輸入/輸出請求,與運行有調試功能的主機通訊。這種技術允許主機為通常沒有輸入和輸出功能的目標硬件提供主機
4、資源)用來實現(xiàn)C庫函數(shù)的與目標相關的函數(shù);(3)被C和C+編譯器所調用的支持函數(shù)。ARM C 庫提供了額外的一些部件支持C+,并為不同的結構體系和處理器編譯代碼。C+庫函數(shù)包含由ISO C+庫標準定義的函數(shù)。 ARM嵌入式軟件開發(fā)7庫路徑庫路徑是在ADS軟件安裝路徑的lib目錄下armlib和cpplib的兩個子目錄。與這些庫相應的頭文件安裝在adsv1_2include目錄下環(huán)境變量ARMLIB必須被設置成指向庫路徑。另外一種指定ARM C和ARM C+庫路徑的方法是,在鏈接的時候使用操作選項-libpath directory(directory代表庫所在的路徑),來指明要裝載的庫的路徑。
5、無需對armlib和cpplib這兩個庫路徑分開指明,鏈接器會自動從用戶所指明的庫路徑中找出這兩個子目錄。 ARM嵌入式軟件開發(fā)8開發(fā)環(huán)境(Code Warrior和AXD) CodeWarrior for ARM是一套完整的集成開發(fā)工具,充分發(fā)揮了ARM RISC 的優(yōu)勢, 使產(chǎn)品開發(fā)人員能夠很好的應用尖端的片上系統(tǒng)技術. 該工具是專為基于ARM RISC的處理器而設計的, 它可加速并簡化嵌入式開發(fā)過程中的每一個環(huán)節(jié),使得開發(fā)人員只需通過一個集成軟件開發(fā)環(huán)境就能研制出ARM產(chǎn)品,在整個開發(fā)周期中,開發(fā)人員無需離開CodeWarrior開發(fā)環(huán)境, 因此節(jié)省了在操做工具上花的時間,使得開發(fā)人員有
6、更多的精力投入到代碼編寫上來,CodeWarrior集成開發(fā)環(huán)境(IDE)為管理和開發(fā)項目提供了簡單多樣化的圖形用戶界面。用戶可以使用ADS的CodeWarrior IDE為ARM和Thumb處理器開發(fā)用C,C+,或ARM匯編語言的程序代碼。 ARM嵌入式軟件開發(fā)93.1.3.2 ADS調試器 調試器本身是一個軟件,用戶通過這個軟件使用debug agent可以對包含有調試信息的,正在運行的可執(zhí)行代碼進行比如變量的查看,斷點的控制等調試操作。ADS中包含有3個調試器:(1) AXD(ARM eXtended Debugger):ARM擴展調試器;(2) armsd(ARM Symbolic D
7、ebugger):ARM符號調試器;(3) Debug targetAXD可以在Windows 和UNIX下,進行程序的調試。它為用C,C+,和匯編語言編寫的源代碼提供了一個全面的Windows 和UNIX 環(huán)境。 ARM嵌入式軟件開發(fā)103.1.4 ADS實用程序 fromELF這是ARM映像文件轉換工具。該命令將ELF格式的文件作為輸入文件,將該格式轉換為各種輸出格式的文件,包括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進制文件)。armarARM庫函數(shù)生成器將一系列ELF格式的目標文件以庫函數(shù)的形式集合在一起,用戶可以把一個庫傳遞給一個鏈接器以代替幾個ELF文件。Flash downloader用于把二進制映像文件下載到ARM開發(fā)板上的Flash存儲器的工具ARM嵌入式軟件開發(fā)113.1.5 ADS支持的軟件 ADS為用戶提供下面的軟件,使用戶可以在軟件仿真的環(huán)境下或者在基于ARM的硬件環(huán)境調試用戶應用程序。ARMulator這是一個ARM指令集仿真器,集成在ARM的調試器AXD中,它提供對ARM處理器的指令集的仿真,
9、為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下,開發(fā)程序代碼。ARM嵌入式軟件開發(fā)123.2 使用ADS創(chuàng)建工程 3.2.1 建立一個工程 在CodeWarrior中新建一個工程的方法有兩種,可以在工具欄中單擊“New”按鈕,也可以在“File”菜單中選擇“New”菜單。這樣就會打開一個如圖所示的對話框。ARM嵌入式軟件開發(fā)13提供了7種可選擇的工程類型 ARM Executabl Image:用于由ARM指令的代碼生成一個ELF格式的可執(zhí)行映像文件; ARM Object Library:用于由ARM指令的代碼生成一個armar格式的目標文件庫; Empty Projec
10、t:用于創(chuàng)建一個不包含任何庫或源文件的工程; Make Wizard:用于將Visual C的nmake或GNU make文件轉入到CodeWarrior IDE 工程文件; Thumb ARM Executable Image:用于由ARM指令和Thumb指令的混和代碼生成一個可執(zhí)行的ELF格式的映像文件; Thumb Executable image:用于由Thumb指令創(chuàng)建一個可執(zhí)行的ELF格式的映像文件; Thumb Object Library:用于由Thumb指令的代碼生成一個armar格式的目標文件庫。 在這里選擇ARM Executable Image,在“Project na
11、me:”中輸入工程文件名,點擊“Location:”文本框的“Set”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設置好后,點擊“確定” 即可 。ARM嵌入式軟件開發(fā)14這個時候會出現(xiàn)的窗口,如圖所示,有三個標簽頁,分別為 order,target默認的是顯示第一個標簽頁files。通過在該標簽頁點擊鼠標右鍵,選中“Add Files”可以把要用到的源程序添加到工程中。ARM嵌入式軟件開發(fā)15對于本例,由于所有的源文件都還沒有建立,所以首先需要新建源文件。在“File”菜單中選擇“New”,在打開的如圖所示的對話框中,選擇標簽頁File,在中輸入要創(chuàng)建的文件名,輸入“helloworld.S”
12、,點擊“確定”關閉窗口。在這里還有一個細節(jié)。在建立好一個工程時,默認的target是DebugRel,還有另外兩個可用的target,分別為Realse和Debug,這三個target的含義分別為:DebugRel:使用該目標,在生成目標的時候,會為每一個源文件生成調試信息;Debug:使用該目標為每一個源文件生成最完全的調試信息;Release:使用該目標不會生成任何調試信息。在本例中,使用默認的DebugRel目標。ARM嵌入式軟件開發(fā)163.2.2 編譯和鏈接工程前的配置點擊Edit菜單,選擇“DebugRel Settings” 本課程實驗程序都使用默認配置即可 更多詳細配置說明 請看
13、“ARM ADS集成開發(fā)環(huán)境的使用.doc ”ARM嵌入式軟件開發(fā)173.3 用AXD進行代碼調試AXD(ARM eXtended Debugger)是ADS軟件中獨立于CodeWarrior IDE的圖形軟件,打開AXD軟件,默認是打開的目標是ARMulator。這個也是調試的時候最常用的一種調試工具,本節(jié)主要是結合ARMulator介紹在AXD中進行代碼調試的方法和過程,使讀者對AXD的調試有初步的了解。 ARM嵌入式軟件開發(fā)18編譯,調試,運行ARM嵌入式軟件開發(fā)19調試過程中-查看內存內存數(shù)據(jù)情況ARM嵌入式軟件開發(fā)20調試過程中-查看寄存器寄存器數(shù)據(jù)情況ARM嵌入式軟件開發(fā)21提綱A
14、RM 微處理器指令的分類ARM 微處理器指令的尋址方式3.2 ARM指令分類及尋址方式ARM 微處理器指令的條件域ARM嵌入式軟件開發(fā)22ARM微處理器的指令系統(tǒng) ARM微處理器的指令集是加載微處理器的指令集是加載/存儲型的,也即存儲型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結果指令集僅能處理寄存器中的數(shù)據(jù),而且處理結果都要放回寄存器中,而對系統(tǒng)存儲器的訪問則需都要放回寄存器中,而對系統(tǒng)存儲器的訪問則需要通過專門的加載要通過專門的加載/存儲指令來完成。存儲指令來完成。ARM微處理器的指令集可以分為六大類微處理器的指令集可以分為六大類 :跳轉指令跳轉指令數(shù)據(jù)處理指令數(shù)據(jù)處理指令程序狀態(tài)寄存
15、器(程序狀態(tài)寄存器(PSR)處理指令)處理指令加載加載/存儲指令存儲指令協(xié)處理器指令和異常產(chǎn)生指令協(xié)處理器指令和異常產(chǎn)生指令ARM微處理器指令的分類ARM嵌入式軟件開發(fā)23ARM微處理器指令表微處理器指令表-1助記符指令功能描述ADC帶進位加法指令ADD加法指令AND邏輯與指令B跳轉指令BIC位清零指令BL帶返回的跳轉指令BLX帶返回和狀態(tài)切換的跳轉指令BX帶狀態(tài)切換的跳轉指令ARM微處理器指令的分類ARM嵌入式軟件開發(fā)24ARM微處理器指令表微處理器指令表-2助記符指令功能描述CDP協(xié)處理器數(shù)據(jù)操作指令CMN比較反值指令CMP比較指令EOR異或指令LDC存儲器到協(xié)處理器的數(shù)據(jù)傳輸指令LDM加
16、載多個寄存器指令LDR存儲器到寄存器的數(shù)據(jù)傳輸指令MCRARM寄存器到協(xié)處理器寄存器數(shù)據(jù)傳輸ARM微處理器指令的分類ARM嵌入式軟件開發(fā)25ARM微處理器指令表微處理器指令表-3助記符指令功能描述MLA乘加運算指令MOV數(shù)據(jù)傳送指令MRC協(xié)處理器寄存器到ARM寄存器數(shù)據(jù)傳輸MRS傳送CPSR或SPSR的內容到通用寄存器MSR傳送通用寄存器到CPSR或SPSR的指令MUL32位乘法指令MLA32位乘加指令MVN數(shù)據(jù)取反傳送指令ARM微處理器指令的分類ARM嵌入式軟件開發(fā)26ARM微處理器指令表微處理器指令表-4助記符指令功能描述ORR邏輯或指令RSB逆向減法指令RSC帶借位的逆向減法指令SBC帶
17、借位減法指令STC協(xié)處理器寄存器寫入存儲器指令STM批量內存字寫入指令STR寄存器到存儲器的數(shù)據(jù)傳輸指令SUB減法指令ARM微處理器指令的分類ARM嵌入式軟件開發(fā)27ARM微處理器指令表微處理器指令表-5助記符指令功能描述SWI軟件中斷指令SWP交換指令TEQ相等測試指令TST位測試指令ARM微處理器指令的分類ARM嵌入式軟件開發(fā)28指令的條件域 當處理器工作在當處理器工作在ARMARM狀態(tài)時,幾乎所有的指令狀態(tài)時,幾乎所有的指令均根據(jù)均根據(jù)CPSRCPSR中條件碼的狀態(tài)和指令的條件域有中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當指令的執(zhí)行條件滿足時,指令條件的執(zhí)行。當指令的執(zhí)行條件滿足時,指
18、令被執(zhí)行,否則指令被忽略。被執(zhí)行,否則指令被忽略。每一條每一條ARMARM指令包含指令包含4 4位的條件碼,位于指令的位的條件碼,位于指令的最高最高4 4位位31:2831:28。條件碼共有。條件碼共有1616種,每種條件種,每種條件碼可用兩個字符表示,這兩個字符可以添加在碼可用兩個字符表示,這兩個字符可以添加在指令助記符的后面和指令同時使用。例如,跳指令助記符的后面和指令同時使用。例如,跳轉指令轉指令B B可以加上后綴可以加上后綴EQEQ變?yōu)樽優(yōu)锽EQBEQ表示表示“相等則相等則跳轉跳轉”,即當,即當CPSRCPSR中的中的Z Z標志置位時發(fā)生跳轉。標志置位時發(fā)生跳轉。 ARM微處理器指令的條件域ARM嵌入式軟件開發(fā)29指令的條件域表-1條件碼后綴標 志含 義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無符號數(shù)大于或等于0011CCC清零無符號數(shù)小于0100MIN置位負數(shù)0101PLN清零正數(shù)或零0110VSV置位溢出0111VCV清零未溢出ARM微處理器指令的條件域ARM嵌入式軟件開發(fā)30指令的條件域表-2條件碼后綴標 志含 義1001LSC清零Z置位無符號數(shù)小于或等于1010GEN等于V帶符號數(shù)大于或等于10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑用鋼材料采購合同范本
- 二零二五年度房地產(chǎn)項目普法合同執(zhí)行與消費者權益保護合同3篇
- 2025版編劇聘用合同范本(原創(chuàng)劇本創(chuàng)作)3篇
- 2025年酒類團購服務及產(chǎn)品經(jīng)銷一體化合同
- 二零二五年度毛巾品牌授權及銷售合同
- 二零二五年度智慧社區(qū)土地租賃合同模板
- 2025年度個人交通事故損害賠償法律援助合同
- 課題申報參考:明清尺牘選本書畫文獻研究
- 2025年度個人信用保證保險合同范本大全2篇
- 課題申報參考:寧海古戲臺建造技藝與匠作譜系研究
- 內科學(醫(yī)學高級):風濕性疾病試題及答案(強化練習)
- 音樂劇好看智慧樹知到期末考試答案2024年
- 辦公設備(電腦、一體機、投影機等)采購 投標方案(技術方案)
- 查干淖爾一號井環(huán)評
- 案卷評查培訓課件模板
- 體檢中心分析報告
- 2024年江蘇省樣卷五年級數(shù)學上冊期末試卷及答案
- 波浪理論要點圖解完美版
- 金融交易數(shù)據(jù)分析與風險評估項目環(huán)境敏感性分析
- 牛頓環(huán)與劈尖實驗論文
- 移動商務內容運營(吳洪貴)任務四 其他平臺載體的運營方式
評論
0/150
提交評論