ARMADS集成開發(fā)環(huán)境課件_第1頁
ARMADS集成開發(fā)環(huán)境課件_第2頁
ARMADS集成開發(fā)環(huán)境課件_第3頁
ARMADS集成開發(fā)環(huán)境課件_第4頁
ARMADS集成開發(fā)環(huán)境課件_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ARMADS集成開發(fā)環(huán)境的使用主要內(nèi)容有:-ADS軟件組成介紹-使用ADS創(chuàng)建工程-用AXD進(jìn)行代碼調(diào)試運(yùn)行時庫類型和選項ADS提供以下的運(yùn)行時庫來支持被編譯的C和C++代碼:ANSIC庫函數(shù):這個C函數(shù)庫是由以下幾部分組成:在ISOC標(biāo)準(zhǔn)中定義的函數(shù);在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ù);被C和C++編譯器所調(diào)用的支持函數(shù)。ARMC庫提供了額外的一些部件支持C++,并為不同的結(jié)構(gòu)體系和處理器編譯代碼。C++庫函數(shù):C++庫函數(shù)包含由ISOC++庫標(biāo)準(zhǔn)定義的函數(shù)。C++庫依賴于相應(yīng)的C庫實(shí)現(xiàn)與特定目標(biāo)相關(guān)的部分,在C++庫的內(nèi)部本身是不包含與目標(biāo)相關(guān)的部分。庫路徑結(jié)構(gòu)

庫路徑是在ADS軟件安裝路徑的lib目錄下的兩個子目錄。假設(shè),ADS軟件安裝在e:\arm\adsv1_2目錄,則在e:\arm\adsv1_2\lib目錄下的兩個子目錄armlib和cpplib是ARM的庫所在的路徑。Armlib:這個子目錄包含了ARMC庫,浮點(diǎn)代數(shù)運(yùn)算庫,數(shù)學(xué)庫等各類庫函數(shù)。與這些庫相應(yīng)的頭文件在e:\arm\adsv1_2\include目錄中。Cpplib:這個子目錄包含了RogueWaveC++庫和C++支持函數(shù)庫。RogueWaveC++庫和C++支持函數(shù)庫合在一起被稱為ARMC++庫。與這些庫相應(yīng)的頭文件安裝在e:\arm\adsv1_2\include目錄下。環(huán)境變量ARMLIB必須被設(shè)置成指向庫路徑。另外一種指定ARMC和ARMC++庫路徑的方法是,在鏈接的時候使用操作選項-libpathdirectory(directory代表庫所在的路徑),來指明要裝載的庫的路徑。無需對armlib和cpplib這兩個庫路徑分開指明,鏈接器會自動從用戶所指明的庫路徑中找出這兩個子目錄。GUI開發(fā)環(huán)境(CodeWarrior和AXD)CodeWarrior集成開發(fā)環(huán)境

CodeWarriorforARM是一套完整的集成開發(fā)工具,充分發(fā)揮了ARMRISC的優(yōu)勢,使產(chǎn)品開發(fā)人員能夠很好的應(yīng)用尖端的片上系統(tǒng)技術(shù).該工具是專為基于ARMRISC的處理器而設(shè)計的,它可加速并簡化嵌入式開發(fā)過程中的每一個環(huán)節(jié),使得開發(fā)人員只需通過一個集成軟件開發(fā)環(huán)境就能研制出ARM產(chǎn)品,在整個開發(fā)周期中,開發(fā)人員無需離開CodeWarrior開發(fā)環(huán)境,因此節(jié)省了在操做工具上花的時間,使得開發(fā)人員有更多的精力投入到代碼編寫上來

CodeWarrior集成開發(fā)環(huán)境(IDE)為管理和開發(fā)項目提供了簡單多樣化的圖形用戶界面。用戶可以使用ADS的CodeWarriorIDE為ARM和Thumb處理器開發(fā)用C,C++,或ARM匯編語言的程序代碼。通過提供下面的功能,CodeWarriorIDE縮短了用戶開發(fā)項目代碼的周期CodeWarriorIDE能夠讓用戶將源代碼文件,庫文件還有其他相關(guān)的文件以及配置設(shè)置等放在一個工程中。每個工程可以創(chuàng)建和管理生成目標(biāo)設(shè)置的多個配置。例如,要編譯一個包含調(diào)試信息的生成目標(biāo)和一個基于ARM7TDMI的硬件優(yōu)化生成目標(biāo),生成目標(biāo)可以在同一個工程中共享文件,同時使用各自的設(shè)置。Debugtarget在軟件開發(fā)的最初階段,可能還沒有具體的硬件設(shè)備。如果要測試所開發(fā)的軟件是否達(dá)到了預(yù)期的效果,這可以由軟件仿真來完成。即使調(diào)試器和要測試的軟件運(yùn)行在同一臺PC上,也可以把目標(biāo)當(dāng)作一個獨(dú)立的硬件來看待。當(dāng)然,也可以搭建一個PCB板,這個板上可以包含一個或多個處理器,在這個板上可以運(yùn)行和調(diào)試應(yīng)用軟件。只有當(dāng)通過硬件或者是軟件仿真所得到的結(jié)果達(dá)到了預(yù)期的效果,才算是完成了應(yīng)用程序的編寫工作。調(diào)試器能夠發(fā)送以下指令:裝載映像文件到目標(biāo)內(nèi)存;啟動或停止程序的執(zhí)行;顯示內(nèi)存,寄存器或變量的值;允許用戶改變存儲的變量值。DebugagentDebugagent執(zhí)行調(diào)試器發(fā)出的命令動作,比如:設(shè)置斷點(diǎn),從存儲器中讀數(shù)據(jù),把數(shù)據(jù)寫到存儲器等。ArmarARM庫函數(shù)生成器將一系列ELF格式的目標(biāo)文件以庫函數(shù)的形式集合在一起,用戶可以把一個庫傳遞給一個鏈接器以代替幾個ELF文件。Flashdownloader用于把二進(jìn)制映像文件下載到ARM開發(fā)板上的Flash存儲器的工具ARMulator這是一個ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,它提供對ARM處理器的指令集的仿真,為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下,開發(fā)程序代碼。使用ADS創(chuàng)建工程在CodeWarrior中新建一個工程的方法有兩種,可以在工具欄中單擊“New”按鈕,也可以在“File”菜單中選擇“New…”菜單。這樣就會打開一個如下圖所示的對話框。在這個對話框中為用戶提供了7種可選擇的工程類型。ARMExecutablImage:用于由ARM指令的代碼生成一個ELF格式的可執(zhí)行映像文件;ARMObjectLibrary:用于由ARM指令的代碼生成一個armar格式的目標(biāo)文件庫;EmptyProject:用于創(chuàng)建一個不包含任何庫或源文件的工程;MakeWizard:用于將VisualC的nmake或GNUmake文件轉(zhuǎn)入到CodeWarriorIDE工程文件;ThumbARMExecutableImage:用于由ARM指令和Thumb指令的混和代碼生成一個可執(zhí)行的ELF格式的映像文件;ThumbExecutableimage:用于由Thumb指令創(chuàng)建一個可執(zhí)行的ELF格式的映像文件;ThumbObjectLibrary:用于由Thumb指令的代碼生成一個armar格式的目標(biāo)文件庫。在這里選擇ARMExecutableImage,在“Projectname:”中輸入工程文件名,本圖例為“l(fā)edcircle”,點(diǎn)擊“Location:”文本框的“Set…”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設(shè)置好后,點(diǎn)擊“確定”,即可建立一個新的名為ledcircle的工程。這個時候會出現(xiàn)ledcircle.mcp的窗口,如下圖2所示,有三個標(biāo)簽頁,分別為files,linkorder,target。默認(rèn)的是顯示第一個標(biāo)簽頁files。通過在該標(biāo)簽頁點(diǎn)擊鼠標(biāo)右鍵,選中“AddFiles…”可以把要用到的源程序添加到工程圖2在這段代碼中,偽操作IMPORT告訴編譯器符號Main不是在該文件中定義的,而是在其他源文件中定義的符號,但是本源文件中可能要用到該符號。接下來用偽指令A(yù)REA定義段名為Init的段為只讀的代碼段,偽指令ENTRY指出了程序的入口點(diǎn)。下面就是用匯編指令實(shí)現(xiàn)了配置SYSCFG特殊功能寄存器,將w90p710片內(nèi)的8K一體化的SRAM配置為4KCache,4KSRAM,并將用戶堆棧設(shè)置在片內(nèi)的SRAM中。4KSRAM的地址為0x3FE,0000~(0x3FE,1000-1),由于w90p710的堆棧由高地址向低地址生成,將SP初始化為0x3FE,1000。完成上述操作后,程序跳轉(zhuǎn)到Main函數(shù)執(zhí)行。保存Init.s匯編程序。

用同樣的方法,再建立一個名為main.c的C源代碼文件。具體代碼內(nèi)容如下://*****************************************************************//ChineseAcademyofSciences,InstituteofAutomation//:main.cDescription:Author: Date: //***************************************************************#defineIOPMOD (*(volatileunsigned*)0x03FF5000)//IOportmoderegister#defineIOPDATA(*(volatileunsigned*)0x03FF5008)//IOportdataregistervoidDelay(unsignedint);intMain(){unsignedlongLED;IOPMOD=0xFFFFFFFF; //將IO口置為輸出模式IOPDATA=0x01;for(;;){ LED=IOPDATA; LED=(LED<<1); IOPDATA=LED; Delay(10); if(!(IOPDATA&0x0F)) IOPDATA=0x01;}return(0); }voidDelay(unsignedintx){unsignedinti,j,k;for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}該段代碼首先將I/O模式寄存器設(shè)置為輸出模式,為I/O數(shù)據(jù)寄存器賦初值為0x1,通過將I/O數(shù)據(jù)寄存器的數(shù)值進(jìn)行周期性的左移,實(shí)現(xiàn)使接在P0~P3口的LED顯示器輪流被點(diǎn)亮的功能。(注意這里的if語句,是為了保證當(dāng)I/O數(shù)據(jù)寄存器中的數(shù)在移位過程中,第4位為數(shù)字“1”時,使數(shù)字1通過和0xFF相與,又重新回到I/O數(shù)據(jù)寄存器的第0位,從而保證了數(shù)字1一直在I/O數(shù)據(jù)寄存器的低四位之間移位。)現(xiàn)在已經(jīng)新建了兩個源文件,要把這兩個源文件添加到工程中去。為工程添加源碼常

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論