環境管理_ads集成開發環境的使用教材_第1頁
環境管理_ads集成開發環境的使用教材_第2頁
環境管理_ads集成開發環境的使用教材_第3頁
環境管理_ads集成開發環境的使用教材_第4頁
環境管理_ads集成開發環境的使用教材_第5頁
已閱讀5頁,還剩175頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論