版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章ARMADS集成開發(fā)環(huán)境6.1ADS1.2的安裝6.2ADS概述6.3ADS集成開發(fā)環(huán)境的使用6.4用AXD進行代碼調(diào)試第6章ARMADS集成開發(fā)環(huán)境6.1ADS1.2的安裝6.1ADS1.2的安裝
ADS全稱為ARMDeveloperSuite,是ARM公司推出的新一代ARM集成開發(fā)工具?,F(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0,該版本支持包括Windows和Linux在內(nèi)的多種操作系統(tǒng)。安裝步驟如下:1.
在ADS1.2的安裝盤中運行setup.exe即可安裝ARMDeveloperSuitev1.2。2.
ADS1.2的注冊ADS1.2的注冊可在安裝的過程中注冊,也可在ADS1.2安裝完后,再運行注冊向?qū)нM行注冊。下面簡述利用注冊向?qū)нM行注冊的步驟:①點擊“開始→程序→ARMDeveloperSuitev1.2→LicenseInstallationWizard”后,彈出圖6.1所示對話框。6.1ADS1.2的安裝ADS全稱為ARMDevel②點擊
“下一步”,會出現(xiàn)圖6.2所示的對話框。
②點擊“下一步”,會出現(xiàn)圖6.2所示的對話框。③選默認的“InstallLicense”,再點擊“下一步”,會出現(xiàn)圖6.3所示的對話框。④在圖6.3中的注冊碼Code輸入框和注冊文件Location輸入框中兩者只能輸入一個,輸入
③選默認的“InstallLicense”,再點擊“下一步正確后,點擊“下一步”即可完成ADS1.2的安裝。注冊文件為:ProgramFiles\ARM\ADSV1_2\licenses\license.dat或在ADS1.2安裝盤的\ads1.2\CRACK\license.dat。
正確后,點擊“下一步”即可完成ADS1.2的安裝。6.2ADS概述
ADS1.2組成如下:1.編譯器,ADS提供多種編譯器,以支持ARM和Thumb指令的編譯。armcc是ARMC編譯器;tcc是ThumbC編譯器;armcpp是ARMC++編譯器;tcpp是ThumbC++編譯器;armasm是ARM和Thumb的匯編器。2.鏈接器armlink是ARM鏈接器。該命令既可以將編譯得到的一個或多個目標(biāo)文件和相關(guān)的一個或多個庫文件進行鏈接,生成一個可執(zhí)行文件,也可以將多個目標(biāo)文件部分鏈接成一個目標(biāo)文件,以供進一步的鏈接。6.2ADS概述ADS1.2組成如下:3.符號調(diào)試器armsd是ARM和Thumb的符號調(diào)試器。它能夠進行源碼級的程序調(diào)試。用戶可以在用C或匯編語言寫的代碼中進行單步調(diào)試、設(shè)置斷點、查看變量值和內(nèi)存單元的內(nèi)容。4.fromELF將ELF格式的文件轉(zhuǎn)換為各種格式的輸出文件,包括BIN格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog16進制文件。FromELF命令也能夠為輸入映像文件產(chǎn)生文本信息,例如,代碼和數(shù)據(jù)長度。6.armararmar是ARM庫函數(shù)生成器,它將一系列ELF格式的目標(biāo)文件以庫函數(shù)的形式集合在一起。用戶可以把一個庫傳遞給一個鏈接器以代替幾個ELF文件。
3.符號調(diào)試器6.CodeWarriorCodeWarrior集成開發(fā)環(huán)境(IDE)為管理和開發(fā)項目提供了簡單多樣化的圖形用戶界面,用戶可以使用ADS的CodeWarriorIDE為ARM和Thumb處理器開發(fā)用C、C++或者ARM匯編語言編寫的程序代碼。7.調(diào)試器(1)ADS中包含有3個調(diào)試器:AXD、Armsd和ADW/ADU。(2)在ARM體系中,可以選擇多種調(diào)試方式:Multi-ICE(Multi-processorin-circuitemulator)、ARMulator或Angel。Multi-ICE是一個獨立的產(chǎn)品,是ARM公司自己的JTAG在線仿真器,不是由ADS提供的。ARMulator是一個ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,提供對ARM處理器的指令集的仿真,為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下,開發(fā)程序代碼,利用模擬器方式調(diào)試。Angel是ARM公司常駐在目標(biāo)機Flash中的監(jiān)控程序,只需通過RS-232C串口與PC主機相連,就可以對基于ARM架構(gòu)處理器的目標(biāo)機進行監(jiān)控器方式的調(diào)試。6.CodeWarrior8.C和C++庫ADS提供ANSIC庫函數(shù)和C++庫函數(shù),支持被編譯的C和C++代碼。用戶可以把C庫中的與目標(biāo)相關(guān)的函數(shù)作為自己應(yīng)用程序中的一部分,重新進行代碼的實現(xiàn)。這就為用戶帶來了極大的方便,針對自己的應(yīng)用程序的要求,對與目標(biāo)無關(guān)的庫函數(shù)進行適當(dāng)?shù)牟眉簟T贑庫中有很多函數(shù)是獨立于其他函數(shù)的,并且與目標(biāo)硬件沒有任何依賴關(guān)系。對于這類函數(shù),用戶可以很容易地從匯編代碼中使用。有了這些部件,用戶可以為ARM系列的RISC處理器編寫和調(diào)試自己的開發(fā)應(yīng)用程序了。8.C和C++庫6.3ADS集成開發(fā)環(huán)境的使用
6.3.1建立一個新工程1.建立工程運行ADS1.2集成開發(fā)環(huán)境(CodeWarriorforARMDeveloperSuite)。選擇File|New…菜單,在對話框中選擇Project,如圖6.4所示,新建一個工程文件。6.3ADS集成開發(fā)環(huán)境的使用6.3.1建立一個新在圖6.4新建工程對話框中打開Project選項,列出了下面可供選擇的工程項目模板:●ARMExecutableImage用于由ARM指令的代碼生成一個可執(zhí)行的ELF格式的映像文件。是常選項。●ARMObjectLibrary用于由ARM指令的代碼生成一個armar格式的目標(biāo)文件庫。●EmptyProject用于生成一個不包含任何源文件和庫文件的空的工程項目?!馦akefileImporterWizard用于將一個VisualC的nmake文件轉(zhuǎn)換成CodeWarrior的工程項目文件。●ThumbARMInterworkingImage用于由ARM指令和Thumb指令的混合代碼生成一個可執(zhí)行的ELF格式的映像文件。●ThumbExecutableImage用于由Thumb指令的代碼生成一個可執(zhí)行的ELF格式的映像文件。●ThumbObjectLibrary用于由Thumb指令的代碼生成一個armar格式的目標(biāo)庫文件。在圖6.4新建工程對話框中打開Pr選中CreatFolder選項后將以圖6.4中的ProjectName或圖6.5中的文件名為名創(chuàng)建目錄,這樣可以將所有與該工程相關(guān)的文件放到該工程目錄下,便于管理工程。在輸入了工程名和選擇了工程路經(jīng)后,單擊“確定”,就生成一個新的工程項目。
選中CreatFolder選項后將以圖6.4中的Pro2.新建一個源文件采用下面兩種方法建立一個新的源文件。方法1:點擊工具欄的“NewTextFile圖標(biāo)”即可產(chǎn)生一個新的、沒有標(biāo)題的編輯窗口,可在編輯窗口中輸入編輯源代碼,代碼輸入編輯完后保存文件。方法2:選擇File→New…菜單,在對話框中選擇File,如圖6.6所示新建文件對話框。在進入6.6所示新建文件對話框后,可按如下步驟操作。(1)
在FileName文件框中輸入新建的文件的名稱。(2)
在Location文件框圖中輸入將要建立的文件的路經(jīng),也可單擊Set按鈕,從彈出的標(biāo)準(zhǔn)文件對話框Open中選擇將要建立的文件的路經(jīng)。(3)
雙擊圖6.6中左邊文件類型“TextFile”即可進入源程序代碼的編輯窗口,可在編輯窗口中輸入編輯源代碼,代碼輸入編輯完后保存文件。若要將新建文件加入當(dāng)前工程項目中,選中AddtoProject復(fù)選框,在Project下拉列表框中選擇所需加入的工程項目的名稱。在Target列表框中選擇新建立的文件加入的生成目標(biāo)。
2.新建一個源文件
6.3.2配置生成目標(biāo)1.配置生成目標(biāo)(TargetSettings)在ADS中通過DebugSetting對話框來設(shè)置一個工程項目中的各生成目標(biāo)的生成選取項。在TargetSetting窗口中設(shè)置的各生成選項只適應(yīng)于當(dāng)前的生成目標(biāo)。ARM提供的可執(zhí)行的映像文件的模板包括了下面3個生成目標(biāo)?!馜ebug生成的目標(biāo)映像文件中包含了所有的調(diào)試信息,用于開發(fā)過程中使用。●Release生成的目標(biāo)映像文件中不包含調(diào)試信息,用于生成實際發(fā)行的軟件版本?!馜ebugRel生成的目標(biāo)映像文件中包含了基本的調(diào)試信息。若對程序代碼進行調(diào)試時,必須選擇Debug生成目標(biāo)。有兩種方法打開DebugSettings對話框:●在工程項目窗口中單擊TargetSetting按鈕。●選擇Edit|DebugSettings命令。6.3.2配置生成目標(biāo)在DebugSettings對話框中包括下面6個面板,用戶可以選擇某個面板設(shè)置相關(guān)的生成選項。所選的選項用于工程項目中當(dāng)前生成目標(biāo)?!裆赡繕?biāo)基本選項設(shè)置(TargetSettings)面板,用于設(shè)置當(dāng)前生成目標(biāo)的一些基本信息,如:生成的目標(biāo)名稱、所使用的連接器等?!窬幊陶Z言選項設(shè)置(LanguageSettings)面板,用于設(shè)置ADS中各語言處理工具的選項,包括匯編器的選項和編譯器的選項,這些選項對于工程項目中的所有的源程序都使用,不能單獨設(shè)置某一個源文件的編譯選項和匯編選項?!襁B接器選項設(shè)置(Linker)面板,用于設(shè)置與連接器相關(guān)的選項以及與fromELF工具相關(guān)的選項。●編輯器選項設(shè)置(Editor)面板,用于設(shè)置用戶個性化的關(guān)鍵詞顯示方式?!裾{(diào)試器選項設(shè)置(Debugger)面板,用于設(shè)置系統(tǒng)中選用的調(diào)試器及相關(guān)的配置選項。●其他選項設(shè)置(MiscellaneousSetting)面板,用于設(shè)置雜類的選項。在DebugSettings對話框中包括下面6個面板,下面對DebugSettings對話框中包括下面6個面板作詳細介紹。下面對DebugSettings對話框中包括下面6個面(1)設(shè)置TargetSettings選項組在DebugSettings對話框中選擇TargetSettings項,如圖6.7所示?!馮argetName文本框用于設(shè)置當(dāng)前生成目標(biāo)的名稱.●Linker下拉列表框用于選擇所使用的連接器,可能的取值如下:ARMLinker——選ARM連接器armlinkt連接編譯器和匯編器生成的目標(biāo)文件。ARMLibrarian——選ARM的librarian工具,將編譯器和匯編器生成的文件轉(zhuǎn)化為ARM庫文件。None——不使用任何連接器,編譯器和匯編器不對工程項目中的文件處理?!馪re-LinkerCodeWarriorIDEforARM當(dāng)前沒有使用本選項。●Post-Linker用于選擇對連接器輸出文件的處理方式,可能的取值如下:None——不進行連接后的處理。ARMfromELF——使用ARM工具fromELF處理連接器輸出的ELF格式的文件,它可以將ELF格式的文件轉(zhuǎn)換成各種二進制文件格式。FTPPost-Linker——CodeWarriorIDEforARM當(dāng)前沒有使用本選項。BatchFileRunner——
在連接完成后運行一個DOS格式的批處理文件。
(1)設(shè)置TargetSettings選項組●OutputDirectory用于定義本工程項目的數(shù)據(jù)目錄。工程項目的生成文件存放在該目錄中。默認的取值為{Project},用戶可以單擊Choose按鈕修改該數(shù)據(jù)目錄。
●單擊Save按鈕保存本組選項的設(shè)置。
注:通常的目標(biāo)設(shè)置如圖6.7所示。
(2)設(shè)置AccessPaths選項組
AccessPaths選項組中的選項如圖6.8所示。
●OutputDirectory用于定義本工程項目的數(shù)●UserPaths單選項按鈕用于指定用戶路經(jīng),其默認值為{Project},是當(dāng)前工程項目所在的路經(jīng)。ADS中各種工具在用戶路經(jīng)中搜索以下內(nèi)容:用戶頭文件——使用include“”的格式來引用。用戶庫文件——也就是用戶頭文件對應(yīng)的庫文件。用戶的源文件——當(dāng)用戶將某個目錄中的源文件添加到工程項目中時,該目錄將自動被CodeWarriorIDE添加到UserPaths中?!馭ystemPaths單選項按鈕用于指定系統(tǒng)路經(jīng),其默認值為{compiler}lib及{compiler}include,其中{compiler}默認為c:\programfiles\ARM\ADSV1_2。●AlwaysSearchUserPaths復(fù)選項框用于指定在用戶路經(jīng)中搜索系統(tǒng)文件。無論是在單選欄中單擊UserPaths單選項按鈕還是選SystemPaths單選項按鈕,都會在列表框中顯示對應(yīng)的用戶路經(jīng)/系統(tǒng)路經(jīng),其中包括了3欄,各欄的含義如下:●UserPaths單選項按鈕用于指定用戶路經(jīng),其默認第1欄為搜索欄,當(dāng)該欄有一個符號“√”時,本行對應(yīng)的第3欄路經(jīng)將會被搜索;否則不會被搜索。可用鼠標(biāo)點擊該位置,使其在兩種狀態(tài)之間進行切換。第2欄為遞歸搜索欄,當(dāng)該欄有一個文件夾符號時,本行對應(yīng)的第3欄中的路經(jīng)及其子路經(jīng)將會被搜索;否則只會被第3欄中的路經(jīng),而不搜索其子路經(jīng)??捎檬髽?biāo)點擊該位置,使其在兩種狀態(tài)之間進行切換。●AddDefault用于將默認的路經(jīng)添加到路經(jīng)列表框中。●Add用于向路經(jīng)列表框中添加路經(jīng)。●Change用于修改路經(jīng)列表框中的路經(jīng)。●Remove用于刪除路經(jīng)列表框中的路經(jīng)。第1欄為搜索欄,當(dāng)該欄有一個符號“√”時,本行對應(yīng)的第(3)設(shè)置BuildExtras選項組BuildExtras選項組中的選項如圖6.9所示?!馯semodificationdatecaching復(fù)選框:選中,對在CodeWarriorIDE之外被修改的源文件不進行修改日期的檢查。當(dāng)使用第三方的編輯器或處于多用戶環(huán)境時,不能選中此復(fù)選框。默認值為選中?!馛achesubprojects復(fù)選框:選中,可提高多工程項目時的更新和連接速度;不選可節(jié)省CodeWarriorIDE所需的存儲空間。默認值為選中?!馎ctivateBrowse復(fù)選框:選中,可產(chǎn)生CodeWarriorIDE所需的瀏覽器信息。這些瀏覽器信息是在下一次生成工程時產(chǎn)生的。若這時選中復(fù)選框internalbrowseinformationaftercompile復(fù)選框,則可以顯示CodeWarriorIDE中編譯器和連接器產(chǎn)生的瀏覽器信息。默認值為不選中。●Usethirdpartydebugger復(fù)選框:選中,可使用第三方的調(diào)試器。默認值為不選中。BuildExtras選項組中的選項通常使用默認值。
(3)設(shè)置BuildExtras選項組ARMADS集成開發(fā)環(huán)境概述講義課件(4)設(shè)置FileMappings選項組
FileMappings選項組中的選項如圖6.10所示。這些選項用于指定特定的文件擴展名稱所對應(yīng)的CodeWarriorIDE中的內(nèi)嵌的工具。通常,這些選項的默認值取決下面兩個條件:●
當(dāng)前工程項目所使用的工程項目模板類型。●
當(dāng)前的生成目標(biāo)。
(4)設(shè)置FileMappings選項組ARMADS集成開發(fā)環(huán)境概述講義課件FileMappings選項組中的各選項的含義及設(shè)置方法如下:●FileMappings列表中列出了各類擴展名與其對應(yīng)的內(nèi)嵌處理工具。每一行有7欄,可以通過列表下面的文本框和下拉列表框來改變當(dāng)前行中各欄的值。各欄的含義如下:第1欄(FileType)為文件的類型,可通過File文本框設(shè)置當(dāng)前行的本欄值。第2欄(Extension)為文件的擴展名,可通過Extension文本框設(shè)置當(dāng)前行的本欄值。第3欄(Resource)為資源文件標(biāo)識符,在CodeWarriorIDEforARM中FileMappings沒有使用這一欄??梢詮腇lags下拉列表框中選擇/取消當(dāng)前行中本欄選項。第4欄(Launchable)表示本類文件是否可以加載。如果本欄被選擇,當(dāng)用戶使用鼠標(biāo)雙擊該類文件時,該文件將被本行所指定的CodeWarriorIDE中的內(nèi)嵌工具打開??梢詮腇lags下拉列表框中選擇/取消當(dāng)前行中本欄選項。第5欄(Precompiled)表示本類文件首先被CodeWarriorIDE中內(nèi)嵌工具處理。得到的結(jié)果可能被其他文件或者編譯器使用。可從Flags下拉列表框中選擇/取消當(dāng)前行中本欄選項。第6欄(IgnoredbyMake)表示CodeWarriorIDE在編譯器/連接工程項目時忽略該類文件??梢詮腇lags下拉列表框中選擇/取消當(dāng)前行中本欄選項。第7欄(Comoiler)表示本類文件對應(yīng)的CodeWarriorIDE中的內(nèi)嵌工具。可通過Comoiler文本框設(shè)置當(dāng)前行的本欄值?!馎dd用于向FileMappings列表中添加選項。●Change用于修改FileMappings列表中的選項。●Remove用于刪除FileMappings列表中的選項。FileMappings選項組中的各選項的含義及設(shè)置方法如(5)設(shè)置SourceTrees選項組
SourceTrees選項組中的選項如圖6.11所示。其中定義的路經(jīng)名稱可以被AccessPaths等選項組的選項使用。
各選項含義及設(shè)置方法如下?!馭ourceTrees列表框中列出了各路經(jīng)信息,它包括兩欄:第一欄為路經(jīng)的名稱;第二欄為該名稱對應(yīng)的實際路經(jīng)?!馭ourceTreeinfo選項組中的選項可以用來定義、添加、修改、刪除各路經(jīng)。其中:Name文本框中為當(dāng)前選中路經(jīng)的名稱;Type下拉列表框可以選擇當(dāng)前選中路經(jīng)的類型;Choose使用本按鈕可以選擇實際的路經(jīng);Add按鈕用于添加一條新的路經(jīng)選項;Change按鈕用于修改當(dāng)前的路經(jīng)選項;Remove按鈕用于刪除當(dāng)前的路經(jīng)選項。(5)設(shè)置SourceTrees選項組ARMADS集成開發(fā)環(huán)境概述講義課件2.編程語言選項設(shè)置(LanguageSettings)編程語言選項設(shè)置(LanguageSettings)包括匯編器選項設(shè)置和編譯器選項設(shè)置,即:ARMAssembler、ARMCCompiler、ARMC++Compiler、ThumbCCompiler、ThumbC++Compiler的設(shè)置。下面主要介紹ARMAssembler、ARMCCompiler的設(shè)置,其他設(shè)置大致相同。(1)匯編器選項設(shè)置(ARMAssembler)在DebugSettings對話框中的TargetSettingsPanels列表中選LanguageSettings下的ARMAssembler項,出現(xiàn)如圖6.12所示的編程語言選項設(shè)置對話框。該對話框中右邊是ARMAssembler選項組的選項,包括6個選項卡,分別是Target、ATPCS、Options、Predefines、Listing、Control和Extras選項卡。2.編程語言選項設(shè)置(LanguageSettings)ARMADS集成開發(fā)環(huán)境概述講義課件◆
Target選項卡圖6.12中各選項的含義及使用方法如下:●ArchitectureorProcessor下拉列表框用于選擇目標(biāo)系統(tǒng)中的ARM體系結(jié)構(gòu)版本號或處理器編號?!馞loatingPoint下拉列表框用于選擇系統(tǒng)中的浮點體系結(jié)構(gòu),設(shè)置本選項后將會使得特定的CPU型號所隱含的浮點部件的體系結(jié)構(gòu)失效。有以下7種可能的取值:①FPAFormatsandInstructions選擇使用浮點加速器(FPA)。②VFPv1FormatsandInstructions系統(tǒng)中包含硬件的向量浮點運算部件,如:ARM10v0,該部件符合vfpv1標(biāo)準(zhǔn)。③VFPv2FormatsandInstructions系統(tǒng)中包含硬件的向量浮點運算部件,如:ARM10v0,該部件符合vfpv2標(biāo)準(zhǔn)?!?/p>
Target選項卡④Old-styleMixed-Endiansoftfp使用軟件的浮點運算庫,該浮點運算庫支持混合的內(nèi)存模式,即可同時包含大端和小端模式(big-endian和little-endian)。⑤Pure-Endiansoftfp使用軟件的浮點運算庫,該浮點運算庫支持單一的內(nèi)存模式,即單一的大端(big-endian)或小端模式(little-endian)。VFPwithsoftfpcallingstandard使用本選項即可支持軟件的浮點運算庫,也支持到硬件VFP的連接。這適合在系統(tǒng)中Thumb存在指令,同時包含硬件VFP的場合。Nofloatingpoint不支持浮點運算指令?!馚yteOrder選項用于選擇大端(big-endian)或小端模式(little-endian)內(nèi)存模式?!馡nitialState選項用于設(shè)置當(dāng)運行用戶程序時,系統(tǒng)的狀態(tài)是ARM狀態(tài)還是Thumb狀態(tài)。設(shè)置該選項并不能切換系統(tǒng)狀態(tài),程序中必須包含進行程序狀態(tài)切換的代碼。④Old-styleMixed-Endiansoft◆
ATPCS選項卡●CallStandard選項組中的單選按鈕選中時表示指定匯編程序代碼遵守一定的ATPCS標(biāo)準(zhǔn)。否則為不遵守一定的ATPCS標(biāo)準(zhǔn)。被C/C++程序調(diào)用的匯編程序,都需要遵守一定的ATPCS標(biāo)準(zhǔn)?!馪redeclaredRegisterNames選項組中單選按鈕被選中時表示指定匯編器認識ATPCS中預(yù)定義的寄存器的名稱。否則,匯編器不認識ATPCS中預(yù)定義的寄存器名稱?!馎RM/Thumbinterwork復(fù)選框,選中為ARM指令和Thumb指令混合使用。●Read-onlypositionindependent復(fù)選框,選中,則指定源程序是ROPI(只讀位置無關(guān))。ARM匯編器的默認是此復(fù)選框不勾選中?!馬ead-writepositionindependent復(fù)選框,選中,則指定源程序是RWPI(讀寫位置無關(guān))。ARM匯編器的默認是此復(fù)選框不勾選中。●Solfwarestack有下面3個單選按鈕:On指定源程序進行軟件數(shù)據(jù)堆棧限制檢查。Off指定源程序不進行軟件數(shù)據(jù)堆棧限制檢查。NotApplicable指定源程序既與進行軟件數(shù)據(jù)堆棧限制檢查的程序兼容,也與不進行軟件數(shù)據(jù)堆棧限制檢查的程序兼容?!?/p>
ATPCS選項卡
圖6.13ATPCS選項卡選項
圖6.13ATPCS選項卡選項◆Options選項卡
◆Options選項卡
●CheckRegisterLists選中該復(fù)選框,則ARM匯編器檢查指令RLIST、LDM、STM中的寄存器列表,保證寄存器列表中的寄存器是按照寄存器編號由小到大的順序排列的,否則將產(chǎn)生警告信息?!馧oWarnings選中該復(fù)選框,則ARM匯編器不產(chǎn)生警告信息?!馭ourceLineDebug選中該復(fù)選框,則ARM匯編器產(chǎn)生DRAWF2格式的調(diào)試信息表。該復(fù)選框選中后會自動選中KeepSymbols選項?!馣eepSymbols選中該復(fù)選框,則ARM匯編器將局部符號保留在目標(biāo)文件的符號表中,供調(diào)試器進行調(diào)試時使用?!馡gnoreC-styleescapecharacters選中該復(fù)選框,則ARM匯編器忽略C風(fēng)格的轉(zhuǎn)義字符,如“\n”等。●FaultlongrunningLoadandStoreMultiples選中該復(fù)選框,則如果指令LDM/STM中的寄存器個數(shù)超標(biāo),ARM匯編器將認為該指令錯誤。●CheckRegisterLists選中該復(fù)選框◆Predefines選項卡
◆Predefines選項卡●Editpredefinedvariable選項組用于定義一個全局變量,并可設(shè)置其值。在variable文本框中輸入全局變量的名稱;在Directive下拉列表框中可選擇為該變量賦值的偽操作;在Numeric文本框中設(shè)置全局變量的值。在完成上面的操作后,可以單擊Add按鈕將該變量加入到工程項目中。●ListofPredefines下拉列表框圖中可以選擇已經(jīng)定義的全局變量,可點擊Replace按鈕,Editpredefinedvariable文本框圖中的選項取代ListofPredefines下拉列表框圖中對應(yīng)的全局變量;點擊Delete按鈕,可以刪除ListofPredefines下拉列表框圖中所選的全局變量。
●Editpredefinedvariable選項◆ListingControl選項卡
◆ListingControl選項卡●Listingon選中該復(fù)選框,則ARM匯編器將其產(chǎn)生的匯編程序列表輸出到一個新的文本編輯窗口中?!馮erse選中該復(fù)選框,源程序中由于條件匯編被排除的代碼將不包含在輸出列表中,當(dāng)不選中該復(fù)選框時,源程序中由于條件匯編被排除的代碼將包含在輸出列表中。●Cross-references選中該復(fù)選框,則ARM匯編器在輸出列表中包含符號的交叉引用信息,比如符號在何處定義,在哪些地方被引用?!馜imensions在選中Listingon復(fù)選框時有效。它定義了輸出列表中每頁的長度和寬度,其中上面的文本框定義頁面寬度,下面的文本框定義頁面長度。當(dāng)選中ContinuousPage復(fù)選框時,輸出列表不分頁。●Listingon選中該復(fù)選框,則ARM匯編器將其(2)編譯器選項卡設(shè)置(ARMCCompiler)下面介紹CodeWarriorIDE中內(nèi)嵌的編譯器的選項設(shè)置。在DebugSettings對話框中的TargetSettingsPanels列表中選LanguageSettings下的ARMCCompiler項,出現(xiàn)如圖6.17所示的包含ARMCCompiler選項的對話框。ARMCCompiler選項組包括8個選項卡,分別是TargetandSource、ATPCS、Warnings、Errors、DebugandOptimization、Preprocessor、CodeGeneration和Extras選項卡。(2)編譯器選項卡設(shè)置(ARMCCompiler)◆TargetandSource選項卡
◆TargetandSource選項卡●ArchitectureorProcessor下拉列表框用于選擇目標(biāo)系統(tǒng)中的ARM體系結(jié)構(gòu)版本號或處理器編號?!馞loatingPoint下拉列表框用于選擇系統(tǒng)中的浮點體系結(jié)構(gòu),設(shè)置本選項后將會使得特定的CPU型號所隱含的浮點部件的體系結(jié)構(gòu)失效。有以下7種可能的取值.●ByteOrder用于選擇大端(big-endian)還是小端模式(little-endian)內(nèi)存模式?!馭ourceLanguage選項組中的下拉列表框用于確定源文件的類型。通常選擇ANSI/ISOStandardC。●ArchitectureorProcessor下拉ATPCS選項卡
ATPCS選項卡●ARM/Thumbinterwork復(fù)選框,選中為ARM指令和Thumb指令混合使用?!馬ead-onlypositionindependent復(fù)選框,選中,則指定源程序是ROPI(只讀位置無關(guān))。ARM匯編器的默認是此復(fù)選框不勾選中?!馬ead-writepositionindependent復(fù)選框,選中,則指定源程序是RWPI(讀寫位置無關(guān))。ARM匯編器的默認是此復(fù)選框不勾選中?!馭oftwarestack選中該復(fù)選框,源程序進行數(shù)據(jù)堆棧限制檢查?!馎RM/Thumbinterwork復(fù)選框,選中為AWarnings選項卡
Warnings選項卡●NoWarnings選中該復(fù)選框,編譯器不產(chǎn)生警告信息?!馱arnforallconditions選中該復(fù)選框,編譯器可以顯示所有的警告信息,包括那些默認情況下被關(guān)閉的警告信息?!馱arnfor(CandC++)選項組列出了對C編譯器和C++編譯器都適應(yīng)的警告信息控制選項?!馱arnfor(C++Only)選項組列出了對C++編譯器有效的警告信息控制選項。Warnnngs選項卡通常取默認值。●NoWarnings選中該復(fù)選框,編譯器不產(chǎn)生警告Errors選項卡
Errors選項卡Errors選項卡圖6.20所示,各選項的含義及使用方法如下:●Implicitpointcast選中該復(fù)選框,隱式的數(shù)據(jù)類型轉(zhuǎn)換而將產(chǎn)生錯誤信息?!馩therdubiouscast若該復(fù)選框不選中,那些由于非法數(shù)據(jù)類型轉(zhuǎn)換而引起的錯誤類型將被降級處理為警告信息。●Junkatendof#endif#else##undef如果該復(fù)選框不選中,將關(guān)閉由于在預(yù)處理行有多余字符而產(chǎn)生的錯誤信息?!馴ero-lengtharrays如果不選中該復(fù)選框,將關(guān)閉由于數(shù)組大小為0而產(chǎn)生的錯誤信息?!馤inkageconflicts若先將一個函數(shù)聲明成extern類型的,然后又將其聲明成static類型,在連接時會產(chǎn)生錯誤信息。如果不選中該復(fù)選框,將關(guān)閉這種錯誤信息。下面這些選項適用于C++編譯器。●Accesscontrolviolations如果不選中該復(fù)選框,將由于訪問控制錯誤而引起的錯誤類型將被降級為警告處理?!馡mplicitinttypes在C++語言中,隱式地使用int數(shù)據(jù)類型時將產(chǎn)生錯誤信息。選中該復(fù)選框,將該錯誤信息轉(zhuǎn)換成為警告信息。Errors選項卡通常取默認值。ARMCCompiler選項組的其他4個選項卡,即:DebugandOptimization、Preprocessor、CodeGeneration和Extras選項卡各選項的設(shè)置通常取默認值,不需要進行設(shè)置。Errors選項卡圖6.20所示,各選項的含義及使用方法如3.連接器選項設(shè)置(Linker)
3.連接器選項設(shè)置(Linker)(1)
Output選項卡Output選項卡用來控制連接器進行連接操作的類型。ARM連接器有3種類型的連接操作,分別是:●Partial選擇該單選框按鈕時,連接器執(zhí)行部分連接操作。部分連接生成ELF格式的目標(biāo)文件。為這些目標(biāo)文件可以在作為進行進一步連接時的輸入文件,也可以作為armar工具的輸入文件。●Simple選擇該單選框按鈕時,連接器根據(jù)連接器選項中指定的地址映射方式,生成簡單的ELF格式的映像文件。這時,所生成的映像文件中地址映射關(guān)系比較簡單,如果地址映射關(guān)系比較復(fù)雜需要使用下一種連接方式?!馭cattered選擇該單選框按鈕時,連接器根據(jù)scatter格式的文件指定的地址映射方式,生成地址映射關(guān)系比較復(fù)雜ELF格式的映像文件。下面分別介紹Simple連接類型和Scattered連接類型。(1)
Output選項卡◆
Output選項卡的Simple連接類型對應(yīng)的選項●選項卡的Simpleimage框中設(shè)置連接的Read-Only(只讀)和Read-Write(讀寫)地址?!馬OBase文本框用于設(shè)置映像文件中RO屬性輸出段的加載時地址和運行時地址。地址必須是字對齊的。如果沒有指定地址值,則使用默認的地址值0x8000。圖6.21中的地址0x30008000是開發(fā)板上SDRAM的真實地址,是由系統(tǒng)的硬件決定的?!馬WBase文本框映像文件中包含RW屬性和ZI屬性的輸出段運行時域的起始地址。地址必須是字對齊的。在圖6.21中,此文本框的地址0x30200000指的是系統(tǒng)可讀寫的內(nèi)存地址。也就是說,在0x30008000~0x30200000之間是只讀區(qū)域,存放程序的代碼段,在0x30200000開始是程序的數(shù)據(jù)段?!?/p>
Output選項卡的Simple連接類型對應(yīng)的選項●●Ropi選中該復(fù)選框,映像文件中RO屬性的加載時域和運行時域是位置無關(guān)的(PIPositionIndependent)。如果沒有選中該復(fù)選框,相應(yīng)的域被標(biāo)記為絕對的。如果選中該復(fù)選框,ARM連接器將保證下面的操作:*檢查各段之間的重定位關(guān)系,保證其是合法的。*保證ARM連接器自身生成的代碼(veneers)是只讀位置無關(guān)的?!馬wpi選中該復(fù)選框,映像文件中包含RW屬性和ZI屬性的輸出段的加載時域和運行時域是位置無關(guān)的。如果沒有選中該復(fù)選框,相應(yīng)的域被標(biāo)記為絕對的。如果選中該復(fù)選框,ARM連接器將保證下面的操作:
*檢查并確保各RW屬性的運行時域包含的各輸入段設(shè)定了PI屬性。*檢查各段之間的重定位關(guān)系,保證其是合法的。*在Region$$Table和ZISection$$Table中添加基于靜態(tài)寄存器sb的選項。通常可寫屬性的輸入段應(yīng)該是讀寫位置無關(guān)的。●Ropi選中該復(fù)選框,映像文件中RO屬性的加載時域●Split選中該復(fù)選框,將包含所有的RW屬性和RO屬性的輸出段的加載時域(loadregion)分割成兩個加載時域。其中:*一個加載時域包含所有的RO屬性的輸出段。其默認的加載時地址為0x8000,可以使用連接選項–ro-baseaddress來更改其加載時地址。*另一個加載時域包含所有的RW屬性的輸出段。該加載時域需要使用連接選項–rw-baseaddress來指定其加載時地址。如果沒有使用選項–rw-baseaddress來指定其加載時地址,默認的使用了–ro-base0。
●Symbol文本框用于指定一個符號定義文件(symdefs)的名稱。符號定義文件是一個文本文件,其使用方法和使用普通的目標(biāo)文件相同,將其作為ARM連接器的輸入文件?!馭plit選中該復(fù)選框,將包含所有的RW屬性和Output選項卡的Scattered連接類型對應(yīng)的選項Output選項卡的Scattered連接類型對應(yīng)的選項●Scatter文本框用于指定ARM連接器使用的Scatter格式的配置文件的名稱。該配置文件是一個文本文件,用于指定映像文件地址映射方式,其中包含了各域及各段的分組和定位信息?!馭ymbol文本框用于指定一個符號定義文件(symdefs)的名稱。在Scatter文本框中輸入scatter文件名scat_ram.scf;然后切換到Options選項卡在ImageEntryPoint框中輸入0x30008000。也可以在圖2-6的CommandLine框中直接輸入-entry0x30008000-scatterscat_ram.scf進行上述設(shè)置。提示:①程序移植到ADS后,程序最開始首先執(zhí)行用匯編寫的初始化代碼——包括中斷向量和堆棧的初始化。在該段代碼中使用IMPORT___main;注意main前面是兩個下劃線B___main進行系統(tǒng)內(nèi)部的標(biāo)準(zhǔn)C函數(shù)初始化,然后調(diào)用用戶在C中定義的main()函數(shù)
兩個main都是小寫),并且在嵌入式應(yīng)用中用戶C的main函數(shù)中不能有參數(shù)(intmain(void))●Scatter文本框用于指定ARM連接器使用的S(2)Layout選項卡(2)Layout選項卡●Placeatbeginningof選項組用于指定將某個輸入段放置在它所在的運行時域的開頭。有下面兩種方法來指定一個輸入段:①
第1種方法是在Object/Symbol文本框中指定一個符號名稱。這時,定義本符號的輸入段被指定。②
第2種方法是在Object/Symbol文本框中指定一個目標(biāo)文件名稱。在Section文本框種指定一個輸段名稱,從而確定了一個輸入段作為指定的輸入段。●Placeatendofimage選項組用于指定將某個輸入段放置在它所在的運行時域的結(jié)尾。Layout選項卡的具體設(shè)置是:在Layout選項卡的Placeatbeginningofimage框中設(shè)置程序的入口模塊。指定在生成的代碼中,程序是從startup.s開始運行的。Object設(shè)為startup.o,section設(shè)為init?!馪laceatbeginningof選項組用于4.FromELF工具的選項設(shè)置
4.FromELF工具的選項設(shè)置●Outputformat——下拉列表框用于選擇目標(biāo)文件格式。其可能的取值如下:①
ExecutableAIF——可執(zhí)行的AIF格式的映像文件。②
NonexecutableAIF——非可執(zhí)行的AIF格式的映像文件。③
Plainbinary——BIN格式映像文件。④
IntellecHex——IHF格式映像文件。⑤
Motorola32bitHexMotorola——32位S格式映像文件。⑥
Intel32bitHexIntel——32位S格式映像文件。⑦
VerilogHexVerilog——16位S格式映像文件。⑧
ELF——可執(zhí)行的連接格式⑨
Textinformation——文本信息●Outputformat——下拉列表框用于選擇目標(biāo)●
Outputfilename文本框用于設(shè)置fromELF工具的輸出文件的名稱。●
Textformatflags在該選項組中,當(dāng)輸出文件為文本信息時,用于置控制文本信息內(nèi)容的選項。●
EquivalentCommandLine文本框中列出了當(dāng)前連接器選項設(shè)置的命令行格式。有一些連接器選項設(shè)置沒有提供圖形界面,需要使用命令行格式來設(shè)置。在圖6.24中Outputfilename文本框中設(shè)置輸出文件名為system.bin,這就是要下載到開發(fā)板的嵌入式應(yīng)用程序文件。以上的配置是按Debug生成目標(biāo)進行配置的?!馩utputfilename文本框用于設(shè)置froARMADS集成開發(fā)環(huán)境概述講義課件6.保存工程模板設(shè)置完成后,將工程文件名改為工程項目模板名,如:2410ARMExecutable.mcp。然后在ADS1.2軟件安裝目錄下的Stationery目錄下新建名為2410ARMExecutableImage的模板目錄,再將剛設(shè)置完的2410ARMExecutable.mcp工程模板文件存放到該目錄下即可。這樣以后在新建工程的時候就能在圖6.4所示的新建工程窗口中看到以2410ARMExecutableImage為名字的模板了。提示:①建議用戶直接將開發(fā)商提供的工程項目模板拷貝到ADS1.2軟件安裝目錄下的Stationery目錄下的工程模板子目錄下,如:將開發(fā)板配套光盤Template/ADS下的2410ARMExecutableImage子目錄直接拷貝到ADS1.2安裝目錄下的Stationery目錄中。②如果用戶原來已安裝了ARMSDT軟件的話,再安裝ADS1.2后可能導(dǎo)致ARMSDT不能正常使用,需要用戶更改系統(tǒng)環(huán)境變量:ARMINC設(shè)置為%ARMSDTPATH%\INCLUDE,ARMLIB設(shè)置為%ARMSDTPATH%\LIB,其中%ARMSDTPATH%指ARMSDT的安裝目錄。6.保存工程模板6.添加和編輯源程序
新建工程后,可以執(zhí)行菜單Project|AddFiles把和工程相關(guān)的所有文件即除inti的所有文件加入到工程中。ADS1.2不能自動按文件類別對這些文件進行分類,需要的話用戶可以執(zhí)行菜單Project|CreateGroup創(chuàng)建文件組,然后分別將不同類的文件加入到不同的組,以方便管理。
6.添加和編輯源程序
新建工程后,可以執(zhí)行菜單Project6.3.3編譯和連接工程
1.工程項目窗口中的3種視圖(1)Files視圖(2)LinkOrder視圖(3)Target視圖6.3.3編譯和連接工程1.工程項目窗口中的3種視圖(1)Files視圖
●
Touch欄:本欄用于標(biāo)識對應(yīng)的文件或子工程項目是否被匯編、編譯或者引入(對于目標(biāo)文件和庫文件而言)。●
File欄:本欄目是以層次結(jié)構(gòu)顯示工程項目中的所有文件及組,一個組中還可以包含其他的子組。雙擊本欄目中某個文件名稱將進入以CodeWarrior中的編輯器打開該文件的編輯狀態(tài),用戶可以對該文件進行編輯?!?/p>
Code欄:本欄目顯示對應(yīng)文件生成目標(biāo)文件的大小,單位為字節(jié)或千字節(jié)。若為組,則顯示該組中所有文件對應(yīng)的目標(biāo)文件的總大小?!?/p>
Data欄:本欄目顯示某個文件生成的可執(zhí)行目標(biāo)文件中數(shù)據(jù)的大小,單位為B、KB或MB。這里所說的數(shù)據(jù)包括ZI段的數(shù)據(jù),但不包括該文件所使用的數(shù)據(jù)棧。如果某個文件的data欄O,表示該文件還沒有被編譯/匯編,或者是該文件對應(yīng)的目標(biāo)文件中不包括數(shù)據(jù)段;如果文件的data欄為n/a,表示該文件不包含在當(dāng)前生成目標(biāo)中。由于連接器在連接時可能刪除沒有被使用的段,所以這里顯示的數(shù)據(jù)大小與包含在最終的映像文件中的數(shù)據(jù)中的數(shù)據(jù)大小可能并不相同?!?/p>
Target欄:本欄目顯示某個文件是否包含在當(dāng)前生成目標(biāo)中。如果該欄為一個符號“?”標(biāo)識對應(yīng)的文件或者組被包含在當(dāng)前生成目標(biāo)中;否則表示對應(yīng)的文件或者組不包含在當(dāng)前生成目標(biāo)中。如果符號“?”為灰色,表示對應(yīng)的子組中只有部分文件被包含在當(dāng)前生成目標(biāo)中?!馜ebug欄:對于某個生成目標(biāo)來說,如果編譯器/匯編器沒有被配置成對所有文件生成調(diào)試信息,則可以使用本欄目為單個文件指定是否生成調(diào)試信息。如果該欄為一個符號“?”標(biāo)識編譯器/匯編器將為對應(yīng)的文件或者該組生成調(diào)試信息;否則編譯器/匯編器將不為對應(yīng)的文件或者該組生成調(diào)試信息。如果符號“?”為灰色,表示編譯器/匯編器將為對應(yīng)的組中部分文件生成調(diào)試信息?!耦^文件彈出菜單:本欄目可以列舉和打開工程項目中的某個文件對應(yīng)的頭文件,還可以設(shè)置該文件對應(yīng)的Touch屬性。(1)Files視圖●Touch欄:本欄用于標(biāo)識對應(yīng)(2)LinkOrder視圖
LinkOrder視圖欄中的欄目與Files視圖欄目大致相同。主要區(qū)別在于,LinkOrder視圖欄中只列舉了那些包含當(dāng)前生成目標(biāo)中的文件,因而它沒有Target欄目。而Files視圖欄中包含了當(dāng)前工程項目中的所有輸入文件,而不論這些文件是否包含在當(dāng)前生成目標(biāo)中。LinkOrder視圖主要用來控制各輸入文件在連接時的順序。默認情況下,LinkOrder視圖中各輸入文件的排列順序與Files視圖中各文件的排列順序是相同。LinkOrder視圖中的其它6個欄:Touch、File、Code、Data、Debug和頭文件彈出菜單欄的說明參考與上面Files視圖中的說明。(2)LinkOrder視圖LinkOrder視圖(3)Target視圖Target視圖中列舉了一個工程項目中的生成目標(biāo)以及它們之間的相互依賴關(guān)系。包含了下面4個生成目標(biāo)?!馭emihosted●Embedded●EmbeddedScatter●EmbeddedScatterRemap(3)Target視圖2.編譯文件
在CodeWarriorIDE中編譯文件,具體包括下面一些操作。(1)編譯當(dāng)前編輯窗口中的文件編譯當(dāng)前編輯窗口中的文件的操作步驟如下所示:a)確保要編譯的文件是當(dāng)前某個打開的工程項目中的文件;b)單擊相應(yīng)的編輯窗口,使其成為當(dāng)前的活動窗口;c)選擇Project|Compile命令。下列情況編譯器不作處理:a)
前沒有打開的工程項目;b)編譯的源文件沒有擴展名。
2.編譯文件在CodeWarriorIDE中編譯文件,(1)
編譯在工程項目窗口中選中的文件在工程項目窗口的Files視圖中的File欄選擇一個或多個源文件進行編譯。其步驟如下:a)
打開需編譯的工程項目;b)
在工程項目窗口的Files視圖的File欄上選擇一個或多個源文件進行編譯;c)
選擇Project|Compile命令;(1)
編譯在工程項目窗口中選中的文件(1)
編譯在工程項目中發(fā)生變化的文件使用BringUpTOData命令可以編譯最近一次編譯后發(fā)生變化的所有文件,包括那些新添加的文件。操作步驟如下:a)
確保需編譯的工程項目所在的窗口是當(dāng)前活動窗口;b)
選擇Project|Compile命令或Project|Make命令。(1)
編譯在工程項目中發(fā)生變化的文件(1)
預(yù)處理源文件命令Preprocess可以預(yù)處理源文件,主要完成以下操作:●解釋以“$”或者“#”開頭的符號,是針對預(yù)處語句的操作?!衩頟reprocess刪除源文件中C/C++風(fēng)格的注釋語句。reprocess命令的用法如下:a)
打開欲進行預(yù)處理操作的文件,或者從工程項目窗口中選擇該文件。b)
選擇Project|Preprocess命令,結(jié)果輸出在一個新的編輯窗口中。c)
可以將結(jié)果保存到一個文件中。(1)
預(yù)處理源文件(1)
對源文件進行語法檢查在CodeWarriorIDE中,可以使用Project|CheckSyntax對一個源文件進行語法檢查,具體的操作如下:打開需編譯的工程項目;在工程項目窗口的Files視圖中選擇待檢查的源文件或打開待檢查的源文件使其進入編輯狀態(tài);選擇Project|CheckSyntax命令。(1)
對源文件進行語法檢查1.
生成工程項目(1)
生成工程項目在CodeWarriorIDE中,通過使用Project|Make命令,或者工具欄上的Make按鈕來生成工程項目。具體的操作方法是:在工程項目窗口的Files視圖的Touch欄上用鼠標(biāo)選擇須包含在生成目標(biāo)中的源文件;然后用選擇Project|Make命令。生成目標(biāo)的輸出文件類型見表6.1所示。(2)
設(shè)置連接順序在工程項目窗口中可以設(shè)置連接順序,具檢的操作步驟如下a)
在工程項目窗口中選擇LinkOrder視圖。b)
在該窗口中通過拖放操作安排各源文件的順序,也就是進行連接操作時的順序。1.
生成工程項目(1)
生成工程項目(1)刪除目標(biāo)文件刪除目標(biāo)文件的步驟如下:a)
選擇待刪除目標(biāo)文件的工程項目。b)
選擇Project|RemoveObjectCode命令后會彈出刪除對話框。c)
若單擊AllTarget按鈕,則刪除所有的生成目標(biāo)中的目標(biāo)文件;單擊CurrentTarget按鈕,則刪除當(dāng)前的生成目標(biāo)中的目標(biāo)文件;單擊Cannel按鈕,則取消步驟b)中的操作。(1)刪除目標(biāo)文件6.4用AXD進行代碼調(diào)試ADX(ARMextendedDebugger)是ADS軟件中獨立于CodeWarriorIDE的圖形軟件,可從CodeWarriorforARMDeveloperSuite中進入ADX下進行調(diào)試,或WINDOWS下:從“程序→ARMDeveloperSuitev1.2→AXDDebugger”進入調(diào)試。要使用AXD必須首先要有生成包含調(diào)試信息的程序,即由CodeWarriorforARMDeveloperSuite編譯生成含有調(diào)試信息的可執(zhí)行ELF格式的映像文件(*.axf)。6.4用AXD進行代碼調(diào)試ADX(ARMextended1.
在AXD中打開調(diào)試文件在菜單File中選擇“Loadimage…”選項,打開Loadimage對話框,找到要裝入的.axf映像文件,點擊“打開”按鈕,就可把映像文件裝載到目標(biāo)內(nèi)存中,如圖6.27所示。利用菜單Execute中的子菜單選項可對可執(zhí)行映像文件進行調(diào)試,各選項的含義如下:●
選擇“Go”選項或按F5,將全速運行代碼;●
選擇“Stop”選項或按shift+F5,將停止運行代碼;●
選擇“StepIn”選項或按F8,以單步執(zhí)行代碼,若遇到函數(shù),則進入函數(shù)內(nèi)執(zhí)行;●
選擇“Step”選項或按F10,以單步執(zhí)行代碼,若遇到函數(shù),則把函數(shù)看成一條語句單步執(zhí)行;●
選擇“StepOut”選項或按shift+F8,在StepIn單步執(zhí)行代碼進入函數(shù)內(nèi)后,若選該項,則可從函數(shù)中跳出返回到上一級程序執(zhí)行;●
選擇“RunTocursor”選項或按F7,以全速運行到光標(biāo)處停下;●
選擇“ShowExecutionContext”選項,可顯示執(zhí)行的內(nèi)容;●
選擇“DeleteAllBreakpoint”選項,清除所有的斷點。1.在AXD中打開調(diào)試文件ARMADS集成開發(fā)環(huán)境概述講義課件1.查看存儲器、寄存器、變量內(nèi)容利用AXD菜單選項“ProcessorViews”和SystemViews中的子菜單選項可查看寄存器、變量值,還可查看某個內(nèi)存單元的數(shù)值等。子菜單的各選項的含義如下:●
選擇“Registers”選項或按Ctrl+R,可查看或修改目標(biāo)板處理器中寄存器中的值;●
選擇“Watch”選項或按Ctrl+E,可對處理器設(shè)置觀察點,觀察點可以是寄存器、地址等,但不能修改。特別注意:菜單選項“ProcessorViews”下的Watch只能觀察處理器。而菜單選項“SystemViews”下的Watch或按Alt+E時,可對目標(biāo)板上的任何資源建立觀察??稍黾踊騽h除觀察點?!?/p>
選擇“Variables”選項或按Ctrl+F,可查看或修改當(dāng)前可執(zhí)行的映像象文件(程序)中的變量值,這些變量可以是局部變量、全局變量、類屬變量??稍黾踊騽h除查看或修改的變量。●
選擇“Memory”選項或按Ctrl+M,可查看或修改存儲器中的值。如在程序運行前,可以先查看兩個宏變量IOPMOD和IOPDATA的當(dāng)前值。方法是:從AXD菜單選項“ProcessorViews”中選擇“Memory”選項或按Ctrl+M后,可可查看或修改存儲器中的值,如圖6.28所示。
1.查看存儲器、寄存器、變量內(nèi)容圖6.28查看/修改存儲單元的內(nèi)容
圖6.28查看/修改存儲單元的內(nèi)容1.
斷點設(shè)置、查看在程序調(diào)試時經(jīng)常設(shè)置斷點,即在程序的某處設(shè)置斷點,當(dāng)程序執(zhí)行到斷點處即可停下,這時,開發(fā)人員可通過前面的方法查看寄存器、存儲器或變量的值,以判定是否程序正常。設(shè)置斷點的方法是:將光標(biāo)移到需設(shè)置斷點處,使用快捷鍵F9在此處設(shè)置斷點??磾帱c的方法是:在菜單選項“SystemViews”下選“breakpointview”選項或按Alt+K可查看各斷點的狀態(tài),在斷點狀態(tài)對話框中,單擊鼠標(biāo)右鍵,利用快捷菜單可增加或刪除斷點。按F5鍵,程序?qū)⑦\行到斷點,如果想進入函數(shù)內(nèi)看如何運行的,可以在Execute菜單中選擇“StepIn”選項或按下F8鍵,進入到子函數(shù)內(nèi)部進行單步程序的調(diào)試。
1.?dāng)帱c設(shè)置、查看
1、最孤獨的時光,會塑造最堅強的自己。
2、把臉一直向著陽光,這樣就不會見到陰影。
3、永遠不要埋怨你已經(jīng)發(fā)生的事情,要么就改變它,要么就安靜的接受它。
4、不論你在什么時候開始,重要的是開始之后就不要停止。
5、通往光明的道路是平坦的,為了成功,為了奮斗的渴望,我們不得不努力。
6、付出了不一定有回報,但不付出永遠沒有回報。
7、成功就是你被擊落到失望的深淵之后反彈得有多高。
8、為了照亮夜空,星星才站在天空的高處。
9、我們的人生必須勵志,不勵志就仿佛沒有靈魂。
10、拼盡全力,逼自己優(yōu)秀一把,青春已所剩不多。
11、一個人如果不能從內(nèi)心去原諒別人,那他就永遠不會心安理得。
12、每個人心里都有一段傷痕,時間才是最好的療劑。
13、如果我不堅強,那就等著別人來嘲笑。
14、早晨給自己一個微笑,種下一天旳陽光。
15、沒有愛不會死,不過有了愛會活過來。
16、失敗的定義:什么都要做,什么都在做,卻從未做完過,也未做好過。
17、當(dāng)我微笑著說我很好的時候,你應(yīng)該對我說,安好就好。
18、人不僅要做好事,更要以準(zhǔn)確的方式做好事。
19、我們并不需要用太華麗的語言來包裹自己,因為我們要做最真實的自己。
20、一個人除非自己有信心,否則無法帶給別人信心。
21、為別人鼓掌的人也是在給自己的生命加油。
22、失去金錢的人損失甚少,失去健康的人損失極多,失去勇氣的人損失一切。
23、相信就是強大,懷疑只會抑制能力,而信仰就是力量。
24、那些嘗試去做某事卻失敗的人,比那些什么也不嘗試做卻成功的人不知要好上多少。
25、自己打敗自己是最可悲的失敗,自己戰(zhàn)勝自己是最可貴的勝利。
26、沒有熱忱,世間便無進步。
27、失敗并不意味你浪費了時間和生命,失敗表明你有理由重新開始。
28、青春如此華美,卻在煙火在散場。
29、生命的道路上永遠沒有捷徑可言,只有腳踏實地走下去。
30、只要還有明天,今天就永遠是起跑線。
31、認真可以把事情做對,而用心卻可以做到完美。
32、如果上帝沒有幫助你那他一定相信你可以。
33、只要有信心,人永遠不會挫敗。
34、珍惜今天的美好就是為了讓明天的回憶更美好。
35、只要你在路上,就不要放棄前進的勇氣,走走停停的生活會一直繼續(xù)。
36、大起大落誰都有拍拍灰塵繼續(xù)走。
37、孤獨并不可怕,每個人都是孤獨的,可怕的是害怕孤獨。
38、寧可失敗在你喜歡的事情上,也不要成功在你所憎惡的事情上。
39、我很平凡,但骨子里的我卻很勇敢。
40、眼中閃爍的淚光,也將化作永不妥協(xié)的堅強。
41、我不去想是否能夠成功,既然選了遠方,便只顧風(fēng)雨兼程。
42、寧可自己去原諒別人,莫等別人來原諒自己。
43、踩著垃圾到達的高度和踩著金子到達的高度是一樣的。
44、每天告訴自己一次:我真的很不錯。
45、人生最大的挑戰(zhàn)沒過于戰(zhàn)勝自己!
46、愚癡的人,一直想要別人了解他。有智慧的人,卻努力的了解自己。
47、現(xiàn)實的壓力壓的我們喘不過氣也壓的我們走向成功。
48、心若有陽光,你便會看見這個世界有那么多美好值得期待和向往。
49、相信自己,你能作繭自縛,就能破繭成蝶。
50、不能強迫別人來愛自己,只能努力讓自己成為值得愛的人。
51、不要拿過去的記憶,來折磨現(xiàn)在的自己。
52、汗水是成功的潤滑劑。
53、人必須有自信,這是成功的秘密。
54、成功的秘密在于始終如一地忠于目標(biāo)。
55、只有一條路不能選擇――那就是放棄。
56、最后的措手不及是因為當(dāng)初游刃有余的自己
57、現(xiàn)實很近又很冷,夢想很遠卻很溫暖。
58、沒有人能替你承受痛苦,也沒有人能搶走你的堅強。
59、不要拿我跟任何人比,我不是誰的影子,更不是誰的替代品,我不知道年少輕狂,我只懂得勝者為。
60、如果你看到面前的陰影,別怕,那是因為你的背后有陽光。
61、寧可笑著流淚,絕不哭著后悔。
62、覺得自己做得到和做不到,只在一念之間。
63、跌倒,撞墻,一敗涂地,都不用害怕,年輕叫你勇敢。
64、做最好的今天,回顧最好的昨天,迎接最美好的明天。
65、每件事情都必須有一個期限,否則,大多數(shù)人都會有多少時間就花掉多少時間。
66、當(dāng)你被壓力壓得透不過氣來的時候,記住,碳正是因為壓力而變成閃耀的鉆石。
67、現(xiàn)實會告訴你,不努力就會被生活給踩死。無需找什么借口,一無所有,就是拼的理由。
68、人生道路,絕大多數(shù)人,絕大多數(shù)時候,人都只能靠自己。
69、不是某人使你煩惱,而是你拿某人的言行來煩惱自己。
70、當(dāng)一個人真正覺悟的一刻,他放棄追尋外在世界的財富,而開始追尋他內(nèi)心世界的真正財富。
71、失敗并不意味你浪費了時間和生命,失敗表明你有理由重新開始。
72、人生應(yīng)該樹立目標(biāo),否則你的精力會白白浪費。
73、山澗的泉水經(jīng)過一路曲折,才唱出一支美妙的歌。
74、時間告訴我,無理取鬧的年齡過了,該懂事了。
75、命運是不存在的,它不過是失敗者拿來逃避現(xiàn)實的借口。
76、人總是在失去了才知道珍惜!
77、要銘記在心:每天都是一年中最美好的日子。
78、生活遠沒有咖啡那么苦澀,關(guān)鍵是喝它的人怎么品味!每個人都喜歡和向往隨心所欲的生活,殊不知隨心所欲根本不是生活。
79、別拿自己的無知說成是別人的愚昧!
80、天空的高度是鳥兒飛出來的,水無論有多深是魚兒游出來的。
81、思想如鉆子,必須集中在一點鉆下去才有力量。
82、如果我堅持什么,就是用大炮也不能打倒我。
83、我們要以今天為坐標(biāo),暢想未來幾年后的自己。
84、日出時,努力使每一天都開心而有意義,不為別人,為自己。
85、有夢就去追,沒死就別停。
86、今天不為學(xué)習(xí)買單,未來就為貧窮買單。
87、因為一無所有這才是拼下去的理由。
88、只要我還有夢,就會看到彩虹!
89、你既認準(zhǔn)這條路,又何必在意要走多久。
90、盡管社會是這樣的現(xiàn)實和殘酷,但我們還是必須往下走。
91、能把在面前行走的機會抓住的人,十有八九都會成功。
92、你能夠先知先覺地領(lǐng)導(dǎo)產(chǎn)業(yè),后知后覺地苦苦追趕,或不知不覺地被淘汰。
93、強烈的信仰會贏取堅強的人,然后又使他們更堅強。
94、人生,不可能一帆風(fēng)順,有得就有失,有愛就有恨,有快樂就會有苦惱,有生就有死,生活就是這樣。
95、好習(xí)慣的養(yǎng)成,在于不受壞習(xí)慣的誘惑。
96、凡過于把幸運之事歸功于自我的聰明和智謀的人多半是結(jié)局很不幸的。
97、如果我們一直告誡自己要開心過每一天,就是說我們并不開心。
98、天氣影響身體,身體決定思想,思想左右心情。
99、不論你在什么時候結(jié)束,重要的是結(jié)束之后就不要悔恨。
100、只要還有明天,今天就永遠是起跑線。1、最孤獨的時光,會塑造最堅強的自己。81第6章ARMADS集成開發(fā)環(huán)境6.1ADS1.2的安裝6.2ADS概述6.3ADS集成開發(fā)環(huán)境的使用6.4用AXD進行代碼調(diào)試第6章ARMADS集成開發(fā)環(huán)境6.1ADS1.2的安裝6.1ADS1.2的安裝
ADS全稱為ARMDeveloperSuite,是ARM公司推出的新一代ARM集成開發(fā)工具?,F(xiàn)在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0,該版本支持包括Windows和Linux在內(nèi)的多種操作系統(tǒng)。安裝步驟如下:1.
在ADS1.2的安裝盤中運行setup.exe即可安裝ARMDeveloperSuitev1.2。2.
ADS1.2的注冊ADS1.2的注冊可在安裝的過程中注冊,也可在ADS1.2安裝完后,再運行注冊向?qū)нM行注冊。下面簡述利用注冊向?qū)нM行注冊的步驟:①點擊“開始→程序→ARMDeveloperSuitev1.2→LicenseInstallationWizard”后,彈出圖6.1所示對話框。6.1ADS1.2的安裝ADS全稱為ARMDevel②點擊
“下一步”,會出現(xiàn)圖6.2所示的對話框。
②點擊“下一步”,會出現(xiàn)圖6.2所示的對話框。③選默認的“InstallLicense”,再點擊“下一步”,會出現(xiàn)圖6.3所示的對話框。④在圖6.3中的注冊碼Code輸入框和注冊文件Location輸入框中兩者只能輸入一個,輸入
③選默認的“InstallLicense”,再點擊“下一步正確后,點擊“下一步”即可完成ADS1.2的安裝。注冊文件為:ProgramFiles\ARM\ADSV1_2\licenses\license.dat或在ADS1.2安裝盤的\ads1.2\CRACK\license.dat。
正確后,點擊“下一步”即可完成ADS1.2的安裝。6.2ADS概述
ADS1.2
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 快遞信息處理員成果強化考核試卷含答案
- 己二腈裝置操作工崗前競爭分析考核試卷含答案
- 方便面制作工崗前安全檢查考核試卷含答案
- 海洋環(huán)境監(jiān)測員操作評估能力考核試卷含答案
- 電力電容器真空浸漬工安全生產(chǎn)基礎(chǔ)知識強化考核試卷含答案
- 快件處理員安全技能測試考核試卷含答案
- 生物柴油裝置操作工安全知識宣貫考核試卷含答案
- 2024年益陽職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 油鋸工崗前趨勢考核試卷含答案
- 鋁電解工崗前技術(shù)操作考核試卷含答案
- 陜西省西安市(2024年-2025年小學(xué)三年級語文)人教版質(zhì)量測試(下學(xué)期)試卷(含答案)
- 部編人教版四年級語文上冊期末試卷及答案1套
- 11340《古代小說戲曲專題》【紙考】2023.12
- 江蘇省南通市啟東市2023-2024學(xué)年九年級上學(xué)期期末考試英語模擬試題(含聽力)附答案
- 基于機器學(xué)習(xí)的缺陷預(yù)測技術(shù)
- 擋土墻、圍墻石砌體作業(yè)安全措施
- 工程勘察設(shè)計收費標(biāo)準(zhǔn)(2002年修訂本)完整版
- GB/T 34956-2017大氣輻射影響航空電子設(shè)備單粒子效應(yīng)防護設(shè)計指南
- 三菱扶梯介紹PLUS概述課件
- 江西樂平工業(yè)園區(qū)污水處理廠提標(biāo)改造工程環(huán)評報告書
- 勞務(wù)作業(yè)分包勞務(wù)分包技術(shù)方案
評論
0/150
提交評論