環(huán)境管理_ads集成開發(fā)環(huán)境的使用教材_第1頁
環(huán)境管理_ads集成開發(fā)環(huán)境的使用教材_第2頁
環(huán)境管理_ads集成開發(fā)環(huán)境的使用教材_第3頁
環(huán)境管理_ads集成開發(fā)環(huán)境的使用教材_第4頁
環(huán)境管理_ads集成開發(fā)環(huán)境的使用教材_第5頁
已閱讀5頁,還剩175頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章ADS集成開發(fā)環(huán)境的使用 吉林大學(xué)珠海學(xué)院文全剛 教學(xué)目的 掌握ADS集成開發(fā)環(huán)境的使用 嵌入式系統(tǒng)開發(fā)流程CodeWarriorIDE的使用AXD調(diào)試器的使用 教學(xué)內(nèi)容 6 1嵌入式系統(tǒng)開發(fā)基礎(chǔ)6 2ADS1 2集成開發(fā)環(huán)境介紹6 3程序的編輯6 4程序的編譯6 5程序的連接6 6程序的調(diào)試 6 1嵌入式系統(tǒng)開發(fā)基礎(chǔ) 6 1 1嵌入式系統(tǒng)開發(fā)流程6 1 2嵌入式軟件開發(fā)6 1 3ARMDeveloperSuite ADS 的安裝 6 1 1嵌入式系統(tǒng)開發(fā)流程 嵌入式系統(tǒng)開發(fā)的基本流程為 1 系統(tǒng)定義與需求分析 2 系統(tǒng)設(shè)計(jì)方案的初步確立 3 初步設(shè)計(jì)方案性價(jià)比評(píng)估與方案評(píng)審論證 4 完善初步方案 初步方案實(shí)施 5 軟硬件集成測(cè)試 6 系統(tǒng)功能性能測(cè)試及可靠性測(cè)試 嵌入式系統(tǒng)的開發(fā)必然有其自身的許多特點(diǎn) 軟硬件可配置 功能可靠 成本低 體積小 功耗低 實(shí)時(shí)性強(qiáng) 嵌入式系統(tǒng)受功能和具體應(yīng)用環(huán)境的約束 其開發(fā)流程就就不同于一般的通用計(jì)算機(jī)系統(tǒng) 嵌入式系統(tǒng)設(shè)計(jì)是使用一組物理硬件和軟件來完成所需功能的過程 系統(tǒng)是指任何由硬件 軟件或者兩者的結(jié)合而構(gòu)成的功能設(shè)備 由于嵌入式系統(tǒng)是一個(gè)專用系統(tǒng) 所以在嵌入式產(chǎn)品的設(shè)計(jì)過程中 軟件設(shè)計(jì)和硬件設(shè)計(jì)是緊密結(jié)合 相互協(xié)調(diào)的 這就產(chǎn)生了一種全新的設(shè)計(jì)理論 軟硬件協(xié)同設(shè)計(jì) 如圖6 1所示 圖6 1軟硬件協(xié)同設(shè)計(jì) 這種方法的特點(diǎn)是 在設(shè)計(jì)時(shí)從系統(tǒng)功能的實(shí)現(xiàn)考慮 把實(shí)現(xiàn)時(shí)的軟硬件同時(shí)考慮進(jìn)去 硬件設(shè)計(jì)包括芯片級(jí) 功能定制 設(shè)計(jì) 既可最大限度地利用有效資源 縮短開發(fā)周期 又能取得更好的設(shè)計(jì)效果 系統(tǒng)協(xié)同設(shè)計(jì)的整個(gè)流程從確定系統(tǒng)要求開始 包含系統(tǒng)要求的功能 性能 功耗 成本 可靠性和開發(fā)時(shí)間等 這些要求形成了由項(xiàng)目開發(fā)小組和市場(chǎng)專家共同制定的初步說明文檔 系統(tǒng)設(shè)計(jì)首先確定所需的功能 復(fù)雜系統(tǒng)設(shè)計(jì)最常用的方法是將整個(gè)系統(tǒng)劃分為較簡(jiǎn)單的子系統(tǒng)及這些子系統(tǒng)的模塊組合 然后以一種選定的語言對(duì)各個(gè)對(duì)象子系統(tǒng)加以描述 產(chǎn)生設(shè)計(jì)說明文檔 其次 是把系統(tǒng)功能轉(zhuǎn)換成組織結(jié)構(gòu) 將抽象的功能描述模型轉(zhuǎn)換成組織結(jié)構(gòu)模型 由于針對(duì)一個(gè)系統(tǒng)可建立多種模型 因此應(yīng)根據(jù)系統(tǒng)的仿真和先前的經(jīng)驗(yàn)來選擇模型 6 1 2嵌入式軟件開發(fā) 不同于通用計(jì)算機(jī)和工作站上的軟件開發(fā)工程 一個(gè)嵌入式軟件的開發(fā)過程具有很多特點(diǎn)和不確定性 其中最重要的一點(diǎn)是軟件跟硬件的緊密耦合特性 由于嵌入式系統(tǒng)的靈活性和多樣性 這樣就給軟件設(shè)計(jì)人員帶來了極大地困難 第一 在軟件設(shè)計(jì)過程中過多地考慮硬件 給開發(fā)和調(diào)試都帶來了很多不便 第二 如果所有的軟件工作都需要在硬件平臺(tái)就緒之后進(jìn)行 自然就延長(zhǎng)了整個(gè)的系統(tǒng)開發(fā)周期 為了解決這個(gè)問題 我們可以在特定的EDA工具環(huán)境下面進(jìn)行開發(fā) 通過后再進(jìn)行移植到硬件平臺(tái)的工作 這樣既可以保證程序邏輯設(shè)計(jì)的正確性 同時(shí)使得軟件開發(fā)可平行甚至超前于硬件開發(fā)進(jìn)程 我們把脫離于硬件的嵌入式軟件開發(fā)階段稱之為 PC軟件 的開發(fā) 圖6 2說明了一個(gè)嵌入式系統(tǒng)軟件的開發(fā)模式 圖6 2嵌入式軟件開發(fā)方法 在 PC軟件 開發(fā)階段 可以用軟件仿真 即指令集模擬的方法 來對(duì)用戶程序進(jìn)行驗(yàn)證 在模擬環(huán)境下 用戶可以設(shè)置ARM處理器的型號(hào) 時(shí)鐘頻率等 同時(shí)還可以配置存儲(chǔ)器訪問接口的時(shí)序參數(shù) 程序在模擬環(huán)境下運(yùn)行 不但能夠進(jìn)行程序的運(yùn)行流程和邏輯測(cè)試 還能夠統(tǒng)計(jì)系統(tǒng)運(yùn)行的時(shí)鐘周期數(shù) 存儲(chǔ)器訪問周期數(shù) 處理器運(yùn)行時(shí)的流水線狀態(tài) 有效周期 等待周期 連續(xù)和非連續(xù)訪問周期 等信息 這些寶貴的信息是在硬件調(diào)試階段都無法取得的 對(duì)于程序的性能評(píng)估非常有價(jià)值 為了更加完整和真實(shí)地模擬一個(gè)目標(biāo)系統(tǒng) ARMulator和ISS還提供了一個(gè)開放的API編程環(huán)境 用戶可以用標(biāo)準(zhǔn)C來描述各種各樣的硬件模塊 連同工具提供的內(nèi)核模塊一起 組成一個(gè)完整的 軟 硬件環(huán)境 在這個(gè)環(huán)境下面開發(fā)的軟件 可以更大程度地接近最終的目標(biāo) 利用這種先進(jìn)的EDA工具環(huán)境 極大地方便了程序開發(fā)人員進(jìn)行嵌入式開發(fā)的工作 當(dāng)完成一個(gè) PC軟件 的開發(fā)之后 只要進(jìn)行正確的移植 一個(gè)真正的嵌入式軟件就開發(fā)成功了 由上可知 嵌入式軟件開發(fā)是基于一個(gè)交叉開發(fā)環(huán)境 其開發(fā)流程如下 開發(fā)環(huán)境的建立 源代碼編輯階段 交叉編譯和鏈接 重定位和下載 聯(lián)機(jī)調(diào)試 如圖6 3所示 圖6 3嵌入式軟件開發(fā)流程圖 6 1 3ARMDeveloperSuite ADS 的安裝 在安裝新版本的ADS之前 要?jiǎng)h除其它版本 從而使安裝的版本更完美地工作 下面介紹ADS1 2的安裝步驟 在ADS1 2安裝目錄下 找到SETUP EXE 圖6 4ADS安裝步驟一 在圖6 4所示的界面中 雙擊執(zhí)行SETUP EXE 進(jìn)入安裝界面 點(diǎn)擊Browse 確定安裝目錄 或者按照默認(rèn)目錄安裝 并點(diǎn)擊Next 如圖6 5所示 圖6 5ADS安裝步驟二 在圖6 6所示的界面中選擇安裝類型 選Full類型安裝 并點(diǎn)擊Next 圖6 6ADS安裝步驟三 安裝完畢 如圖6 7所示 圖6 7ADS安裝步驟四 安裝License 選擇要執(zhí)行的動(dòng)作為InstallLicense 點(diǎn)擊Next 如圖6 8所示 圖6 8ADS安裝步驟五 點(diǎn)擊Browse 選擇license dat或license txt所在的路徑 然后打開 如圖6 9所示 圖6 9ADS安裝步驟六 安裝license完畢 點(diǎn)擊完成 如圖6 10所示 圖6 10ADS安裝步驟七 ADS1 2全部安裝完畢 點(diǎn)擊Finished 以上是ADS1 2的安裝全過程 在 開始 菜單中可以找到安裝的程序 如圖6 11所示 圖6 11ADS的啟動(dòng) 可以看到我們安裝的東西 其中 CodeWarriorforARMDeveloperSuite是代碼的編譯連接開發(fā)環(huán)境 AXDDebugger是調(diào)試的開發(fā)環(huán)境 它能配合Multi icesever和硬件Multi ice調(diào)試器 完成板級(jí)調(diào)試 下面幾節(jié)將詳細(xì)地介紹本開發(fā)系統(tǒng)的使用方法 6 2ADS1 2集成開發(fā)環(huán)境介紹 6 2 1CodeWarriorIDE簡(jiǎn)介6 2 2AXD調(diào)試器簡(jiǎn)介6 2 3ADS開發(fā)系統(tǒng)的系統(tǒng)資源6 2 4系統(tǒng)軟件開發(fā)步驟 6 2ADS1 2集成開發(fā)環(huán)境介紹 ARMADS全稱為ARMDeveloperSuite 是ARM公司推出的新一代ARM集成開發(fā)工具 ADS由命令行開發(fā)工具 ARM時(shí)實(shí)庫 GUI開發(fā)環(huán)境 CodeWarrior和AXD 實(shí)用程序和支持軟件組成 如表6 1所列 有了這些部件 用戶就可以為ARM系列的RISC處理器編寫和調(diào)試自己的開發(fā)應(yīng)用程序了 6 2 1CodeWarriorIDE簡(jiǎn)介 CodeWarriorforARM是一套完整的集成開發(fā)工具 充分發(fā)揮了ARMRISC的優(yōu)勢(shì) 使產(chǎn)品開發(fā)人員能夠很好的應(yīng)用尖端的片上系統(tǒng)技術(shù) 該工具是專為基于ARMRISC的處理器而設(shè)計(jì)的 它可加速并簡(jiǎn)化嵌入式開發(fā)過程中的每一個(gè)環(huán)節(jié) 使得開發(fā)人員只需通過一個(gè)集成軟件開發(fā)環(huán)境就能研制出ARM產(chǎn)品 在整個(gè)開發(fā)周期中 開發(fā)人員無需離開CodeWarrior開發(fā)環(huán)境 因此節(jié)省了在操作工具上花的時(shí)間 使得開發(fā)人員有更多的精力投入到代碼編寫上來 CodeWarriorIDE主窗口如圖6 12所示 圖6 12ADS集成開發(fā)環(huán)境界面 ADS的CodeWarrior集成開發(fā)環(huán)境 IDE 為管理和開發(fā)項(xiàng)目提供了簡(jiǎn)單多樣化的圖形用戶界面 針對(duì)ARM的配置面板為用戶提供了在CodeWarriorIDE集成環(huán)境下配置各種ARM開發(fā)工具的能力 用戶可以使用ADS的CodeWarriorIDE為ARM和Thumb處理器開發(fā)用C C 或ARM匯編語言的程序代碼 CodeWarriorIDE為用戶提供下面的功能 源代碼編輯器 它集成在CodeWarriorIDE的瀏覽器中 能夠根據(jù)語法格式 使用不同的顏色顯示代碼 源代碼瀏覽器 它保存了源碼中定義的所有符號(hào) 能夠使用戶在源碼中快速方便的跳轉(zhuǎn) 查找和替換功能 用戶可以在多個(gè)文件中 利用字符串通配符 進(jìn)行字符串搜索和替換 文件比較功能 可以使用戶比較路徑中的不同文本文件的內(nèi)容 由于ARM調(diào)試器 AXD 沒有集成在CodeWarriorIDE中 這就意味著 用戶不能在CodeWarriorIDE中進(jìn)行斷點(diǎn)調(diào)試和查看變量 在CodeWarriorIDEforARM中有很多的菜單或子菜單是不能使用的 下面列出了這些選項(xiàng) 1 View菜單下不能使用的菜單選項(xiàng)有 Processes Expressions GlobalVariable Breakpoints Registers 2 Project菜單不能使用的菜單選項(xiàng) Precompile子菜單 因?yàn)锳RM編譯器不支持預(yù)編譯的頭文件 3 Debug菜單 該菜單中沒有一個(gè)子菜單是可以使用的 4 Browser菜單中不能使用的菜單選項(xiàng) NewProperty NewMethod和NewEventSet 5 Helpmenu中不能用于ADS的菜單選項(xiàng)有 CodeWarriorHelp Index Search和OnlineManuals 6 2 2AXD調(diào)試器簡(jiǎn)介 AXD調(diào)試器為ARM擴(kuò)展調(diào)試器 即ARMeXtendedDebugger 包括ADW ADU的所有特性 支持硬件仿真和軟件仿真 ARMulator AXD能夠裝載映像文件到目標(biāo)內(nèi)存 具有單步 全速和斷點(diǎn)等調(diào)試功能 可以觀察變量 寄存器和內(nèi)存的數(shù)據(jù)等等 AXD調(diào)試器主窗口如圖6 13所示 圖6 13AXD調(diào)試器界面 6 2 3ADS開發(fā)系統(tǒng)的系統(tǒng)資源 1 ADS系統(tǒng)包含的文件ADS系統(tǒng)包含下列可選文件 1 系統(tǒng)文件Executables類文件 系統(tǒng)所有可執(zhí)行的二進(jìn)制文件 包括編譯文件 命令行工具和GUI組件 Clibraries bigendian 用于大端系統(tǒng)的C語言連接庫文件 Clibraries littleendian 用于小端系統(tǒng)的C語言連接庫文件 C libraries bigendian 用于大端系統(tǒng)的C 連接庫文件 C libraries littleendian 用于小端系統(tǒng)的C 連接文件 Includefiles 包含用戶源程序的所有C和C 頭文件 HelpFiles 這些文件包括用于GUI程序的在線幫助信息 是否安裝這些程序都不影響運(yùn)行 2 其它文件ExampleFiles 一組程序舉例 包含源代碼和CodeWarrior工程文件 可以在ADS中使用 HTMLdocuments 適用于RogueWaveC 庫的文檔 可以適用網(wǎng)絡(luò)閱覽器閱讀 DynaTextdocuments ADS的連機(jī)在線格式的文檔 為適用DynaTex閱覽器而設(shè)計(jì) PDF ONLYDOCUMENTS PDF格式文件 ARM體系結(jié)構(gòu)手冊(cè) 適用AdobeAcrobat閱覽器 ARMulatorextensionkit 擴(kuò)展的ARM仿真工具包 ARMFPAsources ARM中FPA源文件 Source ARM應(yīng)用軟件庫源文件 Documentation PDF格式ARM應(yīng)用軟件庫文件 適用于AdobeAcrobatReader閱覽器 以上這些都是基本的ADS系統(tǒng)文件 2 ADS環(huán)境中的文件類型ADS開發(fā)環(huán)境中包含很多種文件 主要列舉如下 1 程序員通過編輯環(huán)境建立的文件Csourcefile C語言源文件 擴(kuò)展名是c 這種文件是程序員輸入的C語言源文件 C sourcefile C 語言源文件 擴(kuò)展名cpp 這種文件是程序員輸入的C 語言源文件 Assemblesourcefile 匯編語言源文件 擴(kuò)展名是s 這種文件是程序員輸入的ARM匯編語言源文件 包含ARM指令和Thumb指令 CodeWarriorprojeketfile CodeWarrior的工程項(xiàng)目管理文件 擴(kuò)展名是mcp 這種文件是程序員在建立工程項(xiàng)目時(shí)生成的文件 包含工程項(xiàng)目?jī)?nèi)的所有源文件 也包含這些源文件的調(diào)試信息 2 通過編譯器和連接器生成的文件filename h 頭文件 filename o 編譯器輸出的ELF格式的目標(biāo)文件 filename lst 編譯器輸出的包含錯(cuò)誤信息的列表文件 filename axf 連接器生成的可執(zhí)行的映象文件 symdefs 格式文件 時(shí)連接器生成的全局符號(hào)表文件 3 經(jīng)常使用的工具文件armcc ARMC語言編譯器 把C語言源程序 擴(kuò)展名c 編譯成32位ARM代碼 tcc ARMC語言編譯器 把C語言源程序 擴(kuò)展名c 編譯成16位Thumb代碼 armcpp ARMC 語言編譯器 把C 語言源程序 擴(kuò)展名cpp 編譯成32位ARM代碼 tcpp ARMC 語言編譯器 把C 語言源程序 擴(kuò)展名cpp 編譯成16位Thumb代碼 armasm ARM匯編語言編譯器 把ARM指令和Thumb指令的匯編語言源文件編譯成相應(yīng)的代碼 armlink ARM連接器 把編譯輸出的ELF格式的目標(biāo)文件以及相關(guān)的C和C 運(yùn)行時(shí)庫連接在一起 生成可執(zhí)行的映象文件 6 2 4系統(tǒng)軟件開發(fā)步驟 利用ADS開發(fā)平臺(tái)開發(fā)軟件的其基本步驟如圖6 14所示 圖6 14應(yīng)用ADS開發(fā)軟件的步驟 程序的編輯 編譯和連接是不依賴于硬件的 這些可以在CodeWarriorforADS中實(shí)現(xiàn) 而ARMeXtendedDebugger可以實(shí)現(xiàn)軟件仿真環(huán)境 在進(jìn)行軟件仿真時(shí)可以不依賴于硬件 6 3程序的編輯 6 3 1建立工程6 3 2建立文件6 3 3添加文件到工程6 3 4文件管理6 3 5編輯畫面的設(shè)置6 3 6ADS編輯功能介紹6 3 7屏幕分割設(shè)置 6 3 1建立工程 工程將所有的源碼文件組織在一起 并能夠決定最終生成文件存放的路徑 輸出的格式等 在CodeWarrior中新建一個(gè)工程的方法有兩種 可以在工具欄中單擊 New 按鈕 也可以在 File 菜單中選擇 New 菜單 這樣就會(huì)打開一個(gè)如圖6 15所示的對(duì)話框 圖6 15新建工程對(duì)話框 在這個(gè)對(duì)話框中為用戶提供了7種可選擇的工程類型 ARMExecutablImage 由ARM指令的代碼生成ELF格式的可執(zhí)行映像文件 ARMObjectLibrary 由ARM指令的代碼生成一個(gè)armar格式的目標(biāo)文件庫 EmptyProject 創(chuàng)建一個(gè)不包含任何庫或源文件的工程 MakefileImporterWizard 將VisualC的nmake或GNUmake文件轉(zhuǎn)入到CodeWarriorIDE工程文件 ThumbARMExecutableImage 由ARM指令和Thumb指令的混和代碼生成一個(gè)可執(zhí)行的ELF格式的映像文件 ThumbExecutableimage 由Thumb指令創(chuàng)建的ELF格式的映像文件 ThumbObjectLibrary 由Thumb指令的代碼生成armar格式的目標(biāo)文件庫 在這里選擇ARMExecutableImage 在 Projectname 中輸入工程文件名 本例為 test 點(diǎn)擊 Location 文本框的 Set 按鈕 瀏覽選擇想要將該工程保存的路徑 將這些設(shè)置好后 點(diǎn)擊 確定 即可建立一個(gè)新的名為test的工程 6 3 2建立文件 在CodeWarriorforADS中建立一個(gè)新的源文件的步驟如下 1 打開CodeWarriorforADS 單擊菜單欄的File 打開下拉菜單中的New選項(xiàng) 見圖6 16 在圖中的3個(gè)標(biāo)簽中單擊File標(biāo)簽 彈出如圖6 16所示的對(duì)話框 2 然后在File標(biāo)簽頁中建立源文件 在文件名Filename對(duì)話框中輸入要建立的文件的名字 在這里命名位test s 一定要注意文件的擴(kuò)展名 匯編語言文件的擴(kuò)展名是S 3 在文件路徑Location對(duì)話框中輸入文件的路徑 這里是D EXAMPLE 單擊 確定 按鈕 一個(gè)匯編語言的源文件建立完畢 圖6 16選擇File后彈出新建文件對(duì)話框 或者在CodeWarriorforADS界面中單擊TextFile選項(xiàng) 建立一個(gè)文本文件 單擊File NewTextFile圖標(biāo)按鈕 如圖6 17所示 圖6 17建立文件 在完成上述過程選擇 確定 按鈕后 就打開一個(gè)文件編輯器 然后在新建的文件中編寫源程序 按照匯編語言的規(guī)則 我們輸入test s所示的一段程序 輸入這段程序后 使用File菜單中SaveAs選項(xiàng)或面板上存儲(chǔ)按鈕 把文件存儲(chǔ)到C TEST中去 至此 我們使用ADS的CodeWarrior完成了一個(gè)匯編語言的文件 test s文件的內(nèi)容如下 addrequ0 x80000100AREAtext CODE READONLYENTRYCODE32STARTLDRR0 addrMOVR1 10MOVR2 20ADDR1 R1 R2STRR1 R0 BSTARTEND 6 3 3添加文件到工程 在工程窗口的File窗口空白處右擊鼠標(biāo) 彈出浮動(dòng)菜單 選擇AddFiles命令即可彈出Selectfiletoadd對(duì)話框 選擇相應(yīng)的源文件 可按著Ctrl鍵一次選擇多個(gè)文件 然后單擊 打開 按鈕即可 如圖6 18所示 圖6 18添加文件到工程方法一 在建立好一個(gè)工程時(shí) 默認(rèn)的target是DebugRel 還有另外兩個(gè)可用的target 分別為Realse和Debug 如圖6 19 這三個(gè)target的含義分別為 DebugRel 使用該目標(biāo) 在生成目標(biāo)的時(shí)候 會(huì)為每一個(gè)源文件生成調(diào)試信息 Debug 使用該目標(biāo)為每一個(gè)源文件生成最完全的調(diào)試信息 Release 使用該目標(biāo)不會(huì)生成任何調(diào)試信息 目標(biāo)代碼的優(yōu)化等級(jí)最高 在本例中 使用默認(rèn)的DebugRel目標(biāo) 現(xiàn)在已經(jīng)新建了一個(gè)源文件 要把這個(gè)源文件添加到工程中去 圖6 19目標(biāo)選項(xiàng) 另外 用戶也可以通過在Project菜單中選擇AddFiles命令來添加源文件 或使用New對(duì)話框選擇File標(biāo)簽頁在建立源文件時(shí)選擇加入工程 即選擇AddtoProject命令項(xiàng) 添加文件操作如圖6 20所示 圖6 20添加文件到工程方法二 6 3 4文件管理 在CodeWarrior環(huán)境下文件的打開方法和保存方法 1 怎樣打開一個(gè)文件打開一個(gè)文件有多種方法 一種方法是使用File菜單中的Open選項(xiàng) 另一種方法是使用工具欄中的按鈕 無論使用那種方法 都會(huì)彈出一個(gè)圖6 20所示的文件搜索對(duì)話框 提示搜索想要打開的文件 只要輸入正確的路徑和文件名 就會(huì)打開該文件 還有一種方法就是打開曾經(jīng)使用過的文件 使用File菜單中的OpenRecent選項(xiàng) 2 怎樣打開一個(gè)工程項(xiàng)目如果僅僅是為了編輯一個(gè)源文件 那么 使用上述打開文件的方法打開源文件后 就可以輸入程序 進(jìn)行文件的編輯了 如果還要對(duì)源文件進(jìn)行編譯操作 那么這樣還不夠 還要打開包含這個(gè)文件的工程項(xiàng)目 才能夠?qū)崿F(xiàn)對(duì)原文件的編譯操作 因?yàn)榫幾g后的目標(biāo)文件 列表文件等要存儲(chǔ)在工程項(xiàng)目文件夾中 打開一個(gè)工程項(xiàng)目的方法和上述打開一個(gè)文件的方法相同 但打開工程項(xiàng)目是打開工程項(xiàng)目文件夾的同名字的文件 擴(kuò)展名是mcp 例如 我們以上建立的工程項(xiàng)目名稱是test 打開該工程項(xiàng)目就是打開test文件夾下的test mcp文件 同樣 要打開一個(gè)曾經(jīng)使用過的工程項(xiàng)目 可以使用File菜單中的OpenRecent選項(xiàng) 3 怎樣保存文件和工程項(xiàng)目保存文件或保存工程項(xiàng)目有兩種方法 一種方法是使用 文件 菜單中的Save 或者SaveAs SaveAll等 選項(xiàng) 另一種是使用工具欄中按鈕 6 3 5編輯畫面的設(shè)置 ADS提供一些設(shè)置選項(xiàng)來設(shè)置編輯畫面 軟件工程師可以通過這些選項(xiàng)設(shè)置出具有個(gè)性的編輯畫面 這些選項(xiàng)位于Edit下拉菜單中的Preference菜單欄 下面介紹這些選項(xiàng)的用法 打開Edit下拉菜單中的Preference菜單欄 這組選項(xiàng)集中在Editor子菜單中 1 EditorSettings選項(xiàng)卡打開EditorSettings選項(xiàng)卡 如圖6 21所示 圖6 21EdiorSettings選項(xiàng)卡 第1部分是設(shè)置Remember 保存 選項(xiàng) Fontpreferences 選擇這個(gè)選項(xiàng) 系統(tǒng)會(huì)為每個(gè)文件保存程序員輸入時(shí)選定的字體信息 如果不選擇該選項(xiàng) 所有的文件都默認(rèn)由CodeWarriorIDE設(shè)置的字體 Windowpositionandsize 選擇這個(gè)選項(xiàng) 系統(tǒng)會(huì)自動(dòng)保存程序編輯窗口在關(guān)閉時(shí)的位置和尺寸 以便在下次打開編輯窗口時(shí)與這次完全相同 如果不選擇該選項(xiàng) 每次打開的編輯窗口都時(shí)CodeWarriorIDE默認(rèn)的位置和尺寸 Selectionposition 該選項(xiàng)決定文件打開時(shí)程序在編輯窗口中的位置 如果不選擇該選項(xiàng) 則文件打開時(shí)程序的第1行位于編輯窗口的第1行 如果選擇該選項(xiàng) 則文件打開時(shí)程序在編輯窗口中的位置與關(guān)閉該文件時(shí)相同 第2部分是設(shè)置級(jí)聯(lián) Contextual 菜單 在ADS的很多窗口中 都有一個(gè)級(jí)聯(lián)菜單 在編輯器窗口中右擊 也會(huì)打開一個(gè)級(jí)聯(lián)菜單 在這個(gè)級(jí)聯(lián)菜單中 所包含的操作命令由以下選項(xiàng)設(shè)置 EditCommand 選擇該選項(xiàng) 在編輯器窗口級(jí)聯(lián)菜單中將包含常用的編輯命令 在編輯窗口中右擊 系統(tǒng)將彈出這個(gè)級(jí)聯(lián)菜單 在這個(gè)菜單中 上層是常用的編輯命令 中間是項(xiàng)目操作命令 ProjectCommand 選擇該選項(xiàng) 在編輯器窗口的級(jí)聯(lián)菜單中將包含常用的項(xiàng)目操作命令 Compile Proprocess和Disassemble 不選擇該選項(xiàng) 則不會(huì)包含這些命令 VCSCommad 選擇該選項(xiàng) 在編輯器窗口的級(jí)聯(lián)菜單中將包含常用的版本控制命令 不選擇該選項(xiàng) 則不會(huì)包含這些命令 BrowserComnands 選擇該選項(xiàng) 在編輯器窗口的級(jí)聯(lián)菜單中增加一條瀏覽器命令 比如用C語言編程時(shí) 右擊main 所彈出的級(jí)聯(lián)菜單中有一行是 gotofunctiondefinitionofmain InsertTemplateCommands 在ADS中 Debug功能是不使用的 因此 本選項(xiàng)無效 第3部分是其它一些設(shè)置 Balancewhiletyping 這個(gè)選項(xiàng)要求CodeWarriorIDE檢測(cè)圓括號(hào) 方括號(hào)和大括弧匹配性 Usemutipleundo 在編輯菜單中 有一個(gè)UndoTyping功能和一個(gè)RedoTyping功能 RelaxedCpopupparsing 如果在源代碼中使用K R風(fēng)格的代碼轉(zhuǎn)換 就應(yīng)該選擇該選項(xiàng) Draganddropediting 在ADS中 編輯屏幕可以分割成多個(gè)編輯窗口 如果選擇該選項(xiàng) 可以在不同的編輯窗口之間拖拽選中的程序片段 實(shí)現(xiàn)程序拷貝功能 如果不選擇該選項(xiàng) 則沒有這個(gè)功能 Leftmarginclickselectsline 這個(gè)選項(xiàng)是左邊沿編輯功能選項(xiàng) Sortfunctionpopup 函數(shù)分類選項(xiàng) EnableVirtualSpace 不選擇該選項(xiàng)時(shí) 在編輯程序過程中 右移鍵 移到程序行結(jié)尾時(shí) 會(huì)自動(dòng)跳出下一行的開始 選擇該選項(xiàng)時(shí) 當(dāng)右移鍵 移到程序行結(jié)尾時(shí) 可繼續(xù)右移 系統(tǒng)自動(dòng)在程序行后填充空格 也就是 選擇該選項(xiàng) 可以在源程序行后面任意位置進(jìn)行插入操作 BalanceFlashDelay 在上面Balancewhiletyping選項(xiàng)中所應(yīng)用的時(shí)間延時(shí) 單位是1 60s Defaultfileformat 系統(tǒng)默認(rèn)的文本文件格式 在這個(gè)下拉菜單中 有3個(gè)選項(xiàng) 分別是DOS UNIX和Macintosh CodeWarriorIDE會(huì)按照所選擇的格式存儲(chǔ)編輯的文件 2 Font Tabs選項(xiàng)卡打開Font Tab選項(xiàng)卡 彈出如圖6 22所示的對(duì)話窗口 圖6 22Font Tabs選項(xiàng)卡 這個(gè)選項(xiàng)卡是關(guān)于字體和制表鍵的選項(xiàng)卡 這些選項(xiàng)是應(yīng)用于一個(gè)文件 還是用于所有文件 取決于EditorSettings選項(xiàng)卡中Fontpreferences的選項(xiàng) 第1部分是編輯程序使用的字體選項(xiàng) Font 該選項(xiàng)是字體選項(xiàng) 在下拉菜單中 有三十多項(xiàng)西文選項(xiàng)和十幾項(xiàng)常見的中文選項(xiàng) 中文選項(xiàng)取決于計(jì)算機(jī)中的中文字體 Size 該選項(xiàng)用于決定輸入字符的尺寸 在下拉菜單中 有2 24種可選項(xiàng) Script 該欄不是可選項(xiàng) 當(dāng)Font欄選擇西文時(shí) 該欄顯示 西方語言 當(dāng)Font欄選擇中文時(shí) 該欄顯示 CHINESE GB2312 Sample 樣本顯示欄 顯示所選中的字體的樣本 第2部分是關(guān)于Tab 制表鍵 的選項(xiàng)Tab 在這個(gè)欄輸入一個(gè)表達(dá)空格數(shù)量的數(shù)值 這個(gè)空格數(shù)就是Tab鍵跳過的空格數(shù) Tabindentsselection Tab行縮進(jìn)選項(xiàng) 選擇該選項(xiàng) 按Tab鍵時(shí) 選中的行會(huì)右移Tab規(guī)定的空格數(shù) 不選擇該選項(xiàng) 按Tab鍵時(shí) 選中的行會(huì)被Tab字符 一般是空格 替換掉 注意 以上選中的行一定是整行 而不是一行中的一部分 不僅僅是程序中的字符 也包括字符后面的空格 也可以選中多行 AutoIndent 編輯行自動(dòng)縮進(jìn)選項(xiàng) 選擇該選項(xiàng) 按回車鍵開始下一行時(shí) 光標(biāo)在新一行的開始處自動(dòng)與上一行對(duì)齊 不選擇該選項(xiàng) 按回車鍵后光標(biāo)頂格開始新一行 TabInsertSpaces 選擇該選項(xiàng)時(shí) 按Tab鍵時(shí)插入的是空格字符 而不是制表字符 3 TextColors選項(xiàng)卡這個(gè)選項(xiàng)卡是關(guān)于文本顏色設(shè)置的選項(xiàng)卡 打開TextColors選項(xiàng)卡 彈出如圖6 23所示的對(duì)話窗口 圖6 23TextColors選項(xiàng)卡 各項(xiàng)顏色設(shè)置說明如下 1 文本顏色選項(xiàng)有兩項(xiàng) Foreground 該選項(xiàng)指定的顏色用于文本中除下列各選項(xiàng)規(guī)定的字符外的所有其余字符 Background 該選項(xiàng)指定編輯畫面的背景顏色 2 以下是把文本中的字符按語法分類配置顏色的選項(xiàng) 在改變這些選項(xiàng)前 必須選擇ActivateSyntaxColoring選項(xiàng)欄 Comments 文本注釋顏色選項(xiàng) Keywords 關(guān)鍵字顏色選項(xiàng) 只適用于C和C 語言 不包括宏 變量等 Strings 字符串顏色選項(xiàng) 不包括注釋 關(guān)鍵字以及自定義的關(guān)鍵字 包括變量名 路徑名和類型名 3 Set1 Set4 用于設(shè)置自定義的關(guān)鍵字的顏色 這4個(gè)選項(xiàng)可以設(shè)置4種自定義的關(guān)鍵字的顏色 這些設(shè)置對(duì)CodeWarriorIDE所有文件發(fā)生作用 4 以下是瀏覽器顏色選項(xiàng) 在改變這些選項(xiàng)之前 一定要先選擇ActivateBrowserColoring選項(xiàng)欄 Classes 類別顏色選項(xiàng) Functions 函數(shù)顏色選項(xiàng) Temlates 模版顏色選項(xiàng) Constants 常量顏色選項(xiàng) Globals 全局變量顏色選項(xiàng) Enums 枚舉顏色選項(xiàng) Macros 宏顏色選項(xiàng) Other 其它顏色選項(xiàng) 6 3 6ADS編輯功能介紹 當(dāng)使用ADS輸入程序時(shí) 除以上介紹的選項(xiàng)會(huì)帶來很多方便外 還有一些編輯功能可以供我們使用 特別是在使用C或C 語言時(shí) ADS所提供的編輯功能和C或C 其它編輯工具所提供的功能相近 圖6 24是ADS編輯器畫面 圖6 24編輯器畫面 圖中編輯窗口path中顯示了文件名 第2行是工具欄 工具欄是可以隱藏的 隱藏和顯示是通過編輯屏幕右上角的工具欄控制按鈕實(shí)現(xiàn)的 在工具欄已經(jīng)被隱藏時(shí) 單擊這個(gè)按鈕可以顯示工具欄 在顯示工具欄的情況下 單擊這個(gè)按鈕可以隱藏工具欄 編輯器的一些功能 1 頭文件下拉菜單單擊圖標(biāo) 會(huì)彈出一個(gè)頭文件下拉菜單 在這個(gè)下拉菜單中 包含當(dāng)前文件涉及的所有文件 只要單擊頭文件名就可以打開所選中的頭文件 這樣修改頭文件就比較方便 2 函數(shù)下拉菜單單擊圖標(biāo) 會(huì)彈出一個(gè)函數(shù)下拉菜單 在這個(gè)下拉菜單中 包含當(dāng)前文件所有的函數(shù) 3 標(biāo)簽下拉菜單單擊圖標(biāo) 會(huì)彈出一個(gè)標(biāo)簽下拉菜單 在這個(gè)下拉菜單中 包含當(dāng)前文件中所有的標(biāo)簽 標(biāo)簽排列的順序與源文件中的先后順序一致 4 文檔設(shè)置下拉菜單單擊圖標(biāo) 會(huì)彈出一個(gè)文檔設(shè)置下拉菜單 這個(gè)菜單中可以打開或關(guān)閉當(dāng)前編輯畫面的顏色 關(guān)閉顏色會(huì)使畫面變成單色 打開顏色會(huì)使畫面變成由菜單Edit Editor TextColors所設(shè)置的顏色 5 版本控制下拉菜單單擊圖標(biāo) 會(huì)彈出一個(gè)版本控制下拉菜單VCS VersionControlSystem 這個(gè)下拉菜單提供當(dāng)前文件的操作記錄 可以幫助維護(hù)源程序的數(shù)據(jù)庫 也可以使用這個(gè)下拉菜單從源文件中拷貝程序 檢查修改的文件 6 文件修改標(biāo)志文件修改標(biāo)志包括和 這兩個(gè)標(biāo)志在編輯屏幕的右上角 如果當(dāng)前程序從上一次存儲(chǔ)以來沒有修改過 則顯示標(biāo)志 如果程序被修改過 則顯示 程序存儲(chǔ)后又重新顯示標(biāo)志 6 3 7屏幕分割設(shè)置 ADS編輯窗口可以實(shí)現(xiàn)下列設(shè)置 打開多個(gè)文件 每個(gè)文件又一個(gè)獨(dú)立的編輯窗口 但只能編輯最后打開或激活的當(dāng)前文件 為一個(gè)文件設(shè)置多個(gè)窗口 下面介紹怎樣為一個(gè)文件設(shè)置多個(gè)窗口 圖6 25是一個(gè)ADS編輯窗口 在這個(gè)窗口的右上角和左上角分別又一個(gè)屏幕分割控制條 把右上角的分割控制條用鼠標(biāo)向下拉 可以分割成上下兩個(gè)屏幕 把左下角的分割控制條用鼠標(biāo)向右拉 可以左右分割成兩個(gè)屏幕 這樣就可以實(shí)現(xiàn)分割屏幕的要求 屏幕是可以分割成很多小屏幕的 在所有的屏幕中 都是同一個(gè)源文件 這些不同屏幕內(nèi)的程序是同步操作的 也就是說 對(duì)其中一個(gè)屏幕的修改 選中 粘貼和刪除等操作 在其它屏幕內(nèi)也有相同的修改 選中 粘貼和刪除等效果 圖6 25屏幕的分割 6 4程序的編譯 6 4 1命令行開發(fā)工具6 4 2圖形界面的ARM匯編工具6 4 3ARMC編譯器6 4 4圖形界面編譯器的應(yīng)用6 4 5編譯連接工程 6 4 1命令行開發(fā)工具 ADS系統(tǒng)提供了兩種方式實(shí)現(xiàn)程序的編譯和連接 一種是命令行方式 它是在DOS環(huán)境下實(shí)現(xiàn)的編譯和連接 另一種方式是圖形用戶界面 就是上面介紹的CodeWarriorIDE界面 兩種方式所利用的都是同一ADS系統(tǒng)資源 實(shí)現(xiàn)的功能也是相同的 ADS提供下面的命令行開發(fā)工具 1 armccarmcc是ARMC編譯器 這個(gè)編譯器通過了PlumHallCValidationSuite為ANSIC的一致性測(cè)試 armcc用于將用ANSIC編寫的程序編譯成32位ARM指令代碼 2 armcpparmcpp是ARMC 編譯器 它將ISOC 或EC 編譯成32位ARM指令代碼 3 tcctcc是ThumbC編譯器 該編譯器通過了PlumHallCValidationSuite為ANSI一致性的測(cè)試 tcc將ANSIC源代碼編譯成16位的Thumb指令代碼 4 tcpptcpp是ThumbC 編譯器 它將ISOC 和EC 源碼編譯成16位Thumb指令代碼 5 armasmarmasm是ARM和Thumb的匯編器 它對(duì)ARM匯編語言和Thumb匯編語言源代碼進(jìn)行匯編 6 armlinkarmlink是ARM連接器 該命令既可以將編譯得到的一個(gè)或多個(gè)目標(biāo)文件和相關(guān)的一個(gè)或多個(gè)庫文件進(jìn)行鏈接 生成一個(gè)可執(zhí)行文件 也可以將多個(gè)目標(biāo)文件部分鏈接成一個(gè)目標(biāo)文件 以供進(jìn)一步的鏈接 ARM鏈接器生成的是ELF格式的可執(zhí)行映像文件 7 armsdarmsd是ARM和Thumb的符號(hào)調(diào)試器 它能夠進(jìn)行源碼級(jí)的程序調(diào)試 用戶可以在用C或匯編語言寫的代碼中進(jìn)行單步調(diào)試 設(shè)置斷點(diǎn) 查看變量值和內(nèi)存單元的內(nèi)容 6 4 2圖形界面的ARM匯編工具 在進(jìn)行編譯和鏈接前 首先介紹一下與生成目標(biāo)有關(guān)的配置 點(diǎn)擊Edit菜單 選擇 DebugRelSettings 注意 這個(gè)選項(xiàng)會(huì)因用戶選擇的不同目標(biāo)而有所不同 出現(xiàn)如圖6 26所示的對(duì)話框 圖6 26DebugRel設(shè)置對(duì)話框 這個(gè)對(duì)話框中的設(shè)置很多 在這里只介紹一些最為常用的設(shè)置選項(xiàng) 1 TargetSetting設(shè)置選項(xiàng)TargetSetting設(shè)置選項(xiàng)包括如下選項(xiàng) 1 TargetName TargetName文本框顯示了當(dāng)前的目標(biāo)設(shè)置 2 Linker Linker選項(xiàng)供用戶選擇要使用的連接器 3 Pre linker 目前CodeWarriorIDE不支持該選項(xiàng) 4 Post Linker 選擇在連接完成后 還要對(duì)輸出文件進(jìn)行的操作 2 ARMAssembler設(shè)置選中LanguageSettings 該設(shè)置選項(xiàng)包括如下選項(xiàng) ARMAssemblerARMCCompilerARMC CompilerThumbCCompilerThumbC Compiler 重點(diǎn)介紹ARMAssembler和ARMCCompiler兩個(gè)選項(xiàng)的設(shè)置 ARMAssembler包括如圖6 27中所示的選項(xiàng)卡 圖6 27Assembler設(shè)置 1 Target選項(xiàng)卡如圖6 28所示 Target選項(xiàng)卡中包括以下選項(xiàng) 圖6 28Target選項(xiàng)卡 InitialState 指令代碼類型選項(xiàng) ByteOrder 大端小端選項(xiàng)卡 只能選其中之一 ArchitectureorProcessor 用于設(shè)置目標(biāo)CPU類型 ARM不同系列的產(chǎn)品其體系結(jié)構(gòu)和版本不同 如果程序的指令版本和目標(biāo)CPU不符 會(huì)給出錯(cuò)誤或者報(bào)警 FloatingPoint 用于選擇浮點(diǎn)運(yùn)算單元 fpu floating point unit 的體系結(jié)構(gòu)選項(xiàng) 2 ATPCS選項(xiàng)卡如圖6 29所示 ATPCS選項(xiàng)卡包括以下選項(xiàng) 圖6 29ATPCS選項(xiàng)卡 CallingStandard 選中ATPCS則表示設(shè)置ATPCS選項(xiàng) ATPCS ARMandThumbProcedureCallStandard 是ARM和Thumb指令程序互相調(diào)用的標(biāo)準(zhǔn) ATPCS 該標(biāo)簽下有三個(gè)選項(xiàng)ARM Thumbinterwork 該選項(xiàng)支持ARM指令和Thumb指令混合使用 選擇該選項(xiàng) 匯編器在匯編源程序時(shí) 對(duì)于兩種指令的子程序調(diào)用能夠生成一段代碼veneers 支持子程序調(diào)用時(shí)的狀態(tài)切換 Read onlypositionindependent 選中該選項(xiàng)表示指定源程序被匯編為只讀的和位置無關(guān)的代碼或數(shù)據(jù) Read writeonlyindependent 選中該選項(xiàng)表示指定源程序被匯編為讀 寫的和位置無關(guān)的代碼或數(shù)據(jù) 系統(tǒng)默認(rèn)為不選中 Softwarestack 選擇On表示對(duì)源程序匯編時(shí) 會(huì)進(jìn)行軟件數(shù)據(jù)棧限制檢查 PredeclaredRegisterNames noregs 不預(yù)定寄存器名稱選項(xiàng) 3 Options選項(xiàng)卡如圖6 30所示 Options選項(xiàng)卡包括以下選項(xiàng) 圖6 30Options選項(xiàng)卡 Checkreglist 寄存器列表順序核對(duì)選項(xiàng) Nowarn 報(bào)警信息選項(xiàng) 選擇該選項(xiàng)時(shí) 匯編時(shí)不生成報(bào)警信息 SourceLineDebug 選中該選項(xiàng) 編譯時(shí)生成DWARF2格式的調(diào)試信息表 此項(xiàng)是默認(rèn)選項(xiàng) KeepSymbols 選中該選項(xiàng) 匯編時(shí)會(huì)把局部標(biāo)號(hào)保留在目標(biāo)文件的符號(hào)表中 供調(diào)試使用 IgnoreC styleescapecharacters 選中該選項(xiàng) 對(duì)源文件匯編時(shí) 忽略C風(fēng)格的換碼字符 如 n和 t等 FaultlongrunningLoadandStoreMultiples 選擇該選項(xiàng) 在對(duì)源程序匯編時(shí) 為了避免多寄存器傳輸引起中斷延時(shí) 將檢查指令LDM和STM的寄存器列表 要求寄存器列表符合下列條件 對(duì)于所有的STM指令 寄存器列表不得超過5個(gè) 對(duì)于所有的LDM指令 寄存器列表不得超過5個(gè)且不得包含PC 如果LDM指令包含PC 則寄存器列表不得超過4個(gè) 4 Predefines選項(xiàng)卡如圖6 31所示 Predefines選項(xiàng)卡包括以下選項(xiàng) 圖6 31Predefines選項(xiàng)卡 predefines 定義全局變量選項(xiàng) 這個(gè)選項(xiàng)可以在匯編源程序時(shí)定義全局變量 5 ListingControl選項(xiàng)卡如圖6 32所示 ListingControl選項(xiàng)卡包括以下選項(xiàng) 圖6 32ListingControl選項(xiàng)卡 Miscellaneous標(biāo)簽包括 Listingon 列表文件選項(xiàng) 選擇該選項(xiàng) 匯編時(shí)會(huì)生成一個(gè)詳細(xì)的列表文件 如果沒有給出文件名 匯編器會(huì)給出和源文件同名字的列表文件 擴(kuò)展名是LST Terse 精簡(jiǎn)列表文件選項(xiàng) 匯編器在編譯源程序時(shí) 有些條件語句因條件不滿足而不需要執(zhí)行 例如IF條件后面的語句 這些語句不被編譯成目標(biāo)代碼 如果選擇該選項(xiàng) 則這些語句不包含在列表文件之中 如果不選擇這一項(xiàng) 則這些語句包含在列表文件之中 Dimensions標(biāo)簽包括 列表文件寬度選項(xiàng) 系統(tǒng)默認(rèn)79個(gè)字符寬度 列表文件長(zhǎng)度選項(xiàng) 系統(tǒng)默認(rèn)66行長(zhǎng)度 6 Extras選項(xiàng)卡如圖6 33所示 Extras選項(xiàng)卡包括以下選項(xiàng) 圖6 33Extras選項(xiàng)卡 viafile 使用via格式文件選項(xiàng) 在做軟件設(shè)計(jì)時(shí) 一般使用CodeWarriorIDE圖形方式而不用命令行方式 起碼在學(xué)習(xí)和使用的初級(jí)階段是這樣 上面已經(jīng)舉例說過匯編器的應(yīng)用 這里再做進(jìn)一步說明 1 使用時(shí)應(yīng)該注意的幾個(gè)方面一般使用匯編器應(yīng)該注意以下以點(diǎn) 1 在同一個(gè)工程項(xiàng)目?jī)?nèi)可以有多種語言文件 除了匯編語言文件外 還可以包含C和C 語言文件 在對(duì)匯編語言文件進(jìn)行匯編時(shí) 使用的是匯編器 在對(duì)其它語言文件編譯時(shí) 會(huì)用到其它編譯器 如果不對(duì)這些編譯器進(jìn)行設(shè)置 則它們會(huì)以默認(rèn)的選項(xiàng)對(duì)文件進(jìn)行編譯 2 在一個(gè)包含多個(gè)文件的工程項(xiàng)目?jī)?nèi) 當(dāng)對(duì)選中的文件進(jìn)行編譯操作 Compile 時(shí) 與工程項(xiàng)目?jī)?nèi)其它文件不發(fā)生關(guān)聯(lián) 3 在對(duì)文件進(jìn)行編譯時(shí) 應(yīng)該使用Project下拉菜單中的Compile功能 這個(gè)功能可以查找源程序中的錯(cuò)誤并提出警告 可以生成列表文件和生成目標(biāo)文件 4 在很多情況下 出現(xiàn)錯(cuò)誤可能是因?yàn)樵O(shè)置不正確引起的 因此 要正確設(shè)置各種選項(xiàng) 各選項(xiàng)都可以恢復(fù)到默認(rèn)狀態(tài) 匯編器的使用使用圖形方式匯編一個(gè)工程項(xiàng)目 一般應(yīng)遵循下面的順序 1 打開CodeWarriorIDE圖形窗口 然后打開工程項(xiàng)目和所要編譯的文件 2 打開Edit下拉菜單 單擊DebugrelSetings 打開目標(biāo)選項(xiàng)面板TargetSettingsPanels 3 單擊ARMAssembler 打開ARM匯編選項(xiàng)窗口 4 根據(jù)以上對(duì)選項(xiàng)的介紹 對(duì)所有選項(xiàng)進(jìn)行設(shè)置 然后從Apply退出 5 選中要匯編或編譯的文件 使用Project菜單中的Compile功能 實(shí)現(xiàn)匯編或編譯 6 窗口中給出錯(cuò)誤信息列表 根據(jù)錯(cuò)誤信息的提示 對(duì)源文件進(jìn)行修改 匯編器給出的錯(cuò)誤信息或報(bào)警信息匯編器在匯編時(shí) 會(huì)給出錯(cuò)誤信息或報(bào)警信息 報(bào)警信息不影響程序的連接和調(diào)試 報(bào)警是一種不能確定的問題 可能是一種錯(cuò)誤 也可能不是一種錯(cuò)誤 在對(duì)源程序進(jìn)行匯編時(shí) 匯編器會(huì)查找源程序的錯(cuò)誤 這個(gè)查找過程是通過對(duì)源程序多遍掃描來完成的 原則是先查找簡(jiǎn)單的錯(cuò)誤 然后查找復(fù)雜的錯(cuò)誤 先查找語法或符號(hào)的錯(cuò)誤 然后查找邏輯錯(cuò)誤 很多情況下 錯(cuò)誤不是一次可以查清的 因此 源程序要經(jīng)過多次修改才能消除所有錯(cuò)誤 6 4 3ARMC編譯器 ARMC編譯器包括如下選項(xiàng)卡 1 TargetandSource選項(xiàng)卡如圖6 34所示 TargetandSource選項(xiàng)卡包括以下選項(xiàng) 圖6 34ARMC編譯器 ArchitetoreorProcessor 目標(biāo)處理器型號(hào)和體系結(jié)構(gòu)選項(xiàng) 下拉菜單給出了所有的可選項(xiàng) FloatingPoint 用于選擇浮點(diǎn)運(yùn)算單元 fpu floating point unit 的體系結(jié)構(gòu)選項(xiàng) Source language 語言類別選項(xiàng) 指定了編譯器可以接受的源程序的語言種類 對(duì)于 編譯器 默認(rèn)的語言是ANSIC 對(duì)于C 編譯器 默認(rèn)的語言是ISO IECC ByteOrder littleendian該選項(xiàng)指定編譯器為ARM處理器生成小端格式的代碼 這種代碼格式是把低位字節(jié)存放到低地址單元 2 ATPCS選項(xiàng)卡如圖6 35所示 ATPCS選項(xiàng)卡包括以下選項(xiàng) 圖6 35ATPCS選項(xiàng)卡 ARM Thumbinterwork 該選項(xiàng)支持ARM指令和Thumb指令混合使用 選擇該選項(xiàng) 匯編器在匯編源程序時(shí) 對(duì)于兩種指令的子程序調(diào)用能夠生成一段代碼veneers 支持子程序調(diào)用時(shí)的狀態(tài)切換 Softwarestackcheck 軟件數(shù)據(jù)棧檢查類型的ATPCS選項(xiàng) Read onlypositionindependent 選中該選項(xiàng)表示指定源程序被匯編為只讀的和位置無關(guān)的代碼或數(shù)據(jù) Read writeonlyindependent 選中該選項(xiàng)表示指定源程序被匯編為讀 寫的和位置無關(guān)的代碼或數(shù)據(jù) 系統(tǒng)默認(rèn)為不選中 3 Warnings選項(xiàng)卡如圖6 36所示 Warnings選項(xiàng)卡包括以下選項(xiàng) 圖6 36Warnings選項(xiàng)卡 Warnforallconditions 選擇該選項(xiàng)時(shí) 編譯器打開所有的報(bào)警信息 包括系統(tǒng)默認(rèn)關(guān)閉的報(bào)警信息 特別指定的除外 1 Assignmentincondition 這個(gè)選項(xiàng)關(guān)閉C2961W報(bào)警信息 C2961WUseoftheassignmentoperatorinaconditioncontext 2 ANSICextension 這個(gè)選項(xiàng)關(guān)閉由于擴(kuò)展ANSIC而產(chǎn)生的報(bào)警信息 3 Headerfilenotguarded 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2819W Heagerfilenotguardedagainstmultipleinclusion 4 Unuseddeclaration 有時(shí)聲明過的變量或函數(shù)沒有使用會(huì)引起報(bào)警 5 Non ANSIheader 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2812W Non ANSI include 6 Paddinginsertedinstruct 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2221W paddinginsertedinstruct S 7 CtoC incompatibility 這個(gè)選項(xiàng)關(guān)閉C語言程序中將來可能與C 引起兼容性問題的報(bào)警信息 8 Lowerprecisioninwidercontext 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C295W lowerprecisioninwidercontext 9 imlicitnarrowing 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C292W imlicitnarrowingcast 10 Doubletofloat 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2621W doubleconstantautomaticallyconvertedtofloat 11 Memberandbaseinitsoutoforder 這個(gè)選項(xiàng)關(guān)閉由C 程序器 constructor 初始化的順序而引起的報(bào)警信息 12 Unusedthisinnon staticmemberfuntion 這個(gè)選項(xiàng)關(guān)閉了沒有使用的this報(bào)警 C2924W this unusedinnon staticmemberfuntion 13 Implicitconstructor 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2887 implicitconstructor structX 14 Doubletofloat 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2621W doubleconstantautomaticallyconvertedtofloat 15 Implicitvirtual 這個(gè)選項(xiàng)關(guān)閉報(bào)警信息 C2997W Derved f inheritsimplicitvirtualfrom Base f 4 Error選項(xiàng)卡如圖6 37所示 Error選項(xiàng)卡包括以下選項(xiàng) 圖6 37Erros選項(xiàng)卡 1 Implicitpointercast該選項(xiàng)關(guān)閉一些隱含錯(cuò)誤 2 Otherdubiouscast 該選項(xiàng)關(guān)閉一些模糊不清的錯(cuò)誤 3 Junkatendof endif else undef 該選項(xiàng)關(guān)閉由于預(yù)處理行結(jié)尾有多余的字符而引起的錯(cuò)誤信息 不選該項(xiàng) 顯示 Ep 4 Zero lengtharrays 該選項(xiàng)關(guān)閉由于數(shù)組長(zhǎng)度為零而引起的錯(cuò)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論