![ADS開(kāi)發(fā)工具的使用市公開(kāi)課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第1頁(yè)](http://file4.renrendoc.com/view/a4f61037fd62eb9b459b04252777fc6c/a4f61037fd62eb9b459b04252777fc6c1.gif)
![ADS開(kāi)發(fā)工具的使用市公開(kāi)課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第2頁(yè)](http://file4.renrendoc.com/view/a4f61037fd62eb9b459b04252777fc6c/a4f61037fd62eb9b459b04252777fc6c2.gif)
![ADS開(kāi)發(fā)工具的使用市公開(kāi)課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第3頁(yè)](http://file4.renrendoc.com/view/a4f61037fd62eb9b459b04252777fc6c/a4f61037fd62eb9b459b04252777fc6c3.gif)
![ADS開(kāi)發(fā)工具的使用市公開(kāi)課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第4頁(yè)](http://file4.renrendoc.com/view/a4f61037fd62eb9b459b04252777fc6c/a4f61037fd62eb9b459b04252777fc6c4.gif)
![ADS開(kāi)發(fā)工具的使用市公開(kāi)課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第5頁(yè)](http://file4.renrendoc.com/view/a4f61037fd62eb9b459b04252777fc6c/a4f61037fd62eb9b459b04252777fc6c5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章ADS1.2開(kāi)發(fā)工具使用一、軟件開(kāi)發(fā)二、程序編輯三、程序匯編與編譯四、程序鏈接五、本節(jié)附錄ADS開(kāi)發(fā)工具的使用第1頁(yè)一、軟件開(kāi)發(fā)系統(tǒng)軟件開(kāi)發(fā)步驟圖:系統(tǒng)軟件開(kāi)發(fā)大致上可分為四個(gè)步驟:
1、程序編輯 2、編譯 3、鏈接 4、調(diào)試。ADS開(kāi)發(fā)工具的使用第2頁(yè)硬件調(diào)試示意圖ADS開(kāi)發(fā)工具的使用第3頁(yè)1.1ADS集成開(kāi)發(fā)工具名稱(chēng)描述使用方式集成開(kāi)發(fā)環(huán)境CodeWarriorforADS,IDE開(kāi)發(fā)環(huán)境集成了工程管理、程序編輯、編譯和鏈接等功效代碼生成工具針對(duì)ARM匯編器,C、C++編譯器,鏈接器DOS命令行方式調(diào)用,或IDE圖形方式調(diào)用調(diào)試器AXD,ADW/ADU,armsd仿真調(diào)試、下載指令模擬器ARMulator由AXD調(diào)用,軟件仿真ARM開(kāi)發(fā)包一些底層例程,實(shí)用程序用戶(hù)使用ARM應(yīng)用庫(kù)C、C++函數(shù)庫(kù)等用戶(hù)程序使用ARMADS全稱(chēng)為ARMDeveloperSuite,是ARM企業(yè)推出新一代ARM集成開(kāi)發(fā)工具。最新版本是ADS1.2
ADS集成開(kāi)發(fā)工具組成部分:ADS開(kāi)發(fā)工具的使用第4頁(yè)CodeWarriorIDE集成了ARM匯編、ARMC/C++編譯器、ThumbC/C++編譯器、ARM鏈接器,包含工程管理器、代碼生成接口、編輯器、源文件、類(lèi)瀏覽器等等。 CodeWarriorIDE窗口:1.CodeWarriorIDE介紹ADS開(kāi)發(fā)工具的使用第5頁(yè)AXD調(diào)試器為ARM擴(kuò)展調(diào)試器(ARMeXtendedDebugger),包含ADW/ADU全部特征,支持硬件仿真和軟件仿真(ARMulator)。AXD調(diào)試器窗口如圖所表示:2.AXD調(diào)試器介紹ADS開(kāi)發(fā)工具的使用第6頁(yè)1.2ADS開(kāi)發(fā)環(huán)境系統(tǒng)資源1.ADS安裝系統(tǒng)包含可選文件ADS安裝系統(tǒng)包含組件:ProgramFiles(主程序文件)、ExampleFiles(例子程序)、Onlinedocumentation(在線(xiàn)文檔)、Extensionkits(擴(kuò)展ARM仿真工具包)、ApplicationsLibrary(應(yīng)用庫(kù))等,在安裝過(guò)程中能夠按照需要選擇安裝。如圖所表示。ADS開(kāi)發(fā)工具的使用第7頁(yè)2.ADS環(huán)境中主要目錄假設(shè)ADS1.2開(kāi)發(fā)工具包安裝路徑為install_directory,①ARM中C/C++庫(kù)存放位置:install_directory\lib\armlib;install_directory\lib\cpplib,對(duì)應(yīng)頭文件存放在nstall_directory\include下。②ARM中工具文件存放位置:全部工具文件都在路徑為install_directory\bin目錄下,在這個(gè)bin目錄下包含了一些非常主要工具文件,如圖所表示。ADS開(kāi)發(fā)工具的使用第8頁(yè)主要工具文件:armasm:ARM匯編語(yǔ)言編譯器,把ARM/Thumb指令匯編語(yǔ)言源文件編譯成對(duì)應(yīng)二進(jìn)制代碼。armcc:ARMC語(yǔ)言編譯器,把C語(yǔ)言源程序編譯成32位ARM指令代碼;armcpp:ARMC++語(yǔ)言編譯器,把C++語(yǔ)言源程序編譯成32位ARM指令代碼;tcc:ARMC語(yǔ)言編譯器,把C語(yǔ)言源程序編譯成16位Thumb指令代碼;tcpp:ARMC++語(yǔ)言編譯器,把C++語(yǔ)言源程序編譯成16位Thumb指令代碼;armlink:ARM鏈接器,把編譯輸出ELF格式目標(biāo)文件以及相關(guān)C和C++運(yùn)行庫(kù)鏈接在一起,依據(jù)提供地址信息生成可執(zhí)行映像文件。ADS開(kāi)發(fā)工具的使用第9頁(yè)二、程序編輯1.1工程管理窗口介紹1.為何要建立工程項(xiàng)目把相互關(guān)聯(lián)文件包含在一個(gè)工程項(xiàng)目里,便于管理和編譯。ADS開(kāi)發(fā)工具的使用第10頁(yè)工程模板含義分別是:1、ARMExecutableImage:以這個(gè)模板建立工程項(xiàng)目中,全部源文件中ARM代碼可編譯成一個(gè)可執(zhí)行ELF格式映像文件;2、ARMObjectLibrary:以這個(gè)模板建立工程項(xiàng)目中,全部源文件中ARM代碼可編譯成一個(gè)armar格式目標(biāo)庫(kù);3、EmptyProject:創(chuàng)建一個(gè)空工程項(xiàng)目;4、MakefileImportWizard:導(dǎo)入Makefile文件,編譯后可轉(zhuǎn)化成CodeWarrior工程文件;5、ThumbARMInterworkingImage:以這個(gè)模板建立工程項(xiàng)目中,支持ARM和Thumb代碼混合編程,全部源代碼可編譯成一個(gè)可執(zhí)行ELF格式映像文件;6、ThumbExecutableImage:以這個(gè)模板建立工程項(xiàng)目中,全部源文件中Thumb代碼可編譯成一個(gè)可執(zhí)行ELF格式映像文件;7、ThumbObjectLibrary:以這個(gè)模板建立工程項(xiàng)目中,全部源文件中Thumb代碼可編譯成一個(gè)armar格式目標(biāo)庫(kù)。ADS開(kāi)發(fā)工具的使用第11頁(yè)2.工程管理窗口界面介紹工程管理窗口提供了編輯、查看、編譯和鏈接工程等各種功效。工程管理窗口圖:ADS開(kāi)發(fā)工具的使用第12頁(yè)按鈕詳細(xì)功效:生成目標(biāo):下拉菜單,選擇該工程生成目標(biāo)。可選生成目標(biāo)有Debug、DebugRel、Release三個(gè);標(biāo)簽欄:點(diǎn)擊標(biāo)簽欄,分別顯示不一樣窗口;工具條:列舉了一些慣用功效快捷按鈕,實(shí)現(xiàn)對(duì)本工程項(xiàng)目設(shè)置參數(shù)、編譯、調(diào)試、運(yùn)行等操作;Touch列:指示該文件是否被編譯或匯編,假如某個(gè)文件對(duì)應(yīng)Touch列打上,則表示該文件需要重新編譯或匯編;Code列:顯示源文件中代碼大小或者該組源文件代碼大小之和,單位為字節(jié);Data列:顯示源文件中數(shù)據(jù)大小或者該組源文件數(shù)據(jù)大小之和,單位為字節(jié);下拉列:在某個(gè)文件下拉列處單擊,會(huì)彈出一個(gè)下拉菜單,下拉菜單包含以下內(nèi)容:列舉該文件包含頭文件,用戶(hù)能夠點(diǎn)擊打開(kāi)某個(gè)頭文件;允許用戶(hù)標(biāo)識(shí)該文件重新編譯或匯編。ADS開(kāi)發(fā)工具的使用第13頁(yè)1.2代碼編輯窗口介紹
ADS開(kāi)發(fā)工具的使用第14頁(yè) 單擊圖標(biāo),會(huì)彈出一個(gè)頭文件下拉萊單。在這個(gè)下拉菜單中,包含當(dāng)前文件包括全部頭文件,如圖所表示。1.頭文件下拉菜單ADS開(kāi)發(fā)工具的使用第15頁(yè) 單擊圖標(biāo),會(huì)彈出一個(gè)函數(shù)下拉菜單。在這個(gè)下拉菜單中,包含當(dāng)前文件全部函數(shù)。函數(shù)排列次序有兩種:第一個(gè)默認(rèn)按照在源文件中先后次序排列;另外一個(gè)也能夠設(shè)置為按英文字符次序排列。 3.標(biāo)簽下拉菜單 單擊圖標(biāo),會(huì)彈出一個(gè)標(biāo)簽下拉菜單。在這個(gè)下拉菜單中,包含當(dāng)前文件中全部標(biāo)簽。標(biāo)簽排列次序與源文件中先后次序一致。2.函數(shù)下拉萊單圖中,標(biāo)簽下拉菜單第1行Addmarker是加標(biāo)簽選項(xiàng)按紐,第2行Removemarkers是刪除標(biāo)簽選項(xiàng)按紐。ADS開(kāi)發(fā)工具的使用第16頁(yè)4.文檔設(shè)置下拉菜單單擊圖標(biāo),會(huì)彈出一個(gè)文檔設(shè)置下拉菜單。從這個(gè)菜單中能夠打開(kāi)或關(guān)閉當(dāng)前編輯畫(huà)面顏色,關(guān)閉顏色會(huì)使畫(huà)面變成單色,打開(kāi)顏色會(huì)使畫(huà)面變成由菜單“Edit”→“Preferences”→“Editor”→“TextColors”所設(shè)置顏色。5.版本控制下拉菜單單擊圖標(biāo),彈出一個(gè)版本控制下拉菜單VCS(VersionControlSystem)。這個(gè)下拉菜單提供當(dāng)前文件操作統(tǒng)計(jì),能夠幫助維護(hù)源程序數(shù)據(jù)庫(kù),也能夠使用這個(gè)下拉菜單從源文件中拷貝程序,檢驗(yàn)修改文件。 VCS功效使用條件: 一個(gè)是在CodewarriorIDE中裝入所需要VCS插件程序; 另一個(gè)就是在VCS功效配置選項(xiàng)中打開(kāi)該項(xiàng)功效。6.文件修改標(biāo)志 文件修改標(biāo)志包含和,這兩個(gè)標(biāo)志在編輯屏幕右上角。假如當(dāng)前途序從上一次存放以來(lái)沒(méi)有修改過(guò),則顯示標(biāo)志;假如程序被修改過(guò),則顯示標(biāo)志,程序存放后又重新顯示標(biāo)志。ADS開(kāi)發(fā)工具的使用第17頁(yè)1.3編輯畫(huà)面設(shè)置ADS開(kāi)發(fā)工具的使用第18頁(yè)1.EditorSettings選項(xiàng)卡⑴設(shè)置Remember(保留)選項(xiàng)①Fontpreferences系統(tǒng)會(huì)為每個(gè)文件保留程序員輸入時(shí)選定字體信假如不選擇該選項(xiàng),全部文件都默認(rèn)由CodewarriorIDE設(shè)置字體。②Windowpositionandsize系統(tǒng)會(huì)自動(dòng)保留程序編輯窗口在關(guān)閉時(shí)位置和尺寸,方便在下次打開(kāi)編輯窗口時(shí)與這次完全相同。③Selectionposition該選項(xiàng)決定文件打開(kāi)時(shí)程序在編輯窗口中位置。ADS開(kāi)發(fā)工具的使用第19頁(yè)⑵設(shè)置Contextual(級(jí)聯(lián))選項(xiàng)①EditCommands選擇該選項(xiàng),在編輯器窗口級(jí)聯(lián)菜單中將包含慣用編輯命令。②ProjectCommands選擇該選項(xiàng),在編輯器窗口級(jí)聯(lián)菜中將包含慣用項(xiàng)目操作命令:Compile、Proprocess和Disassemble。③VCSCommands選擇該選項(xiàng),在編輯器窗口級(jí)聯(lián)萊中將包含慣用版本控制命令。④BrowserCommands選擇該選項(xiàng),在編輯器窗口級(jí)聯(lián)菜中增加一條瀏覽器命令。⑤InsertTemplateCommands插入函數(shù)模板選項(xiàng)。⑥D(zhuǎn)ebuggerCommands在CodeWarriorIDE中,Debug功效是不使用,本選項(xiàng)無(wú)效。ADS開(kāi)發(fā)工具的使用第20頁(yè)⑶其它設(shè)置①Balancewhiletyping:這個(gè)選項(xiàng)要求CodeWarriorIDE檢測(cè)圓括號(hào)、方括號(hào)和大括弧匹配性。②Usemultipleundo:在編輯菜單中,有一個(gè)Undo功效和一個(gè)Redo功效。③RelaxedCpopupparsing:假如在源代碼中使用K&R格調(diào)代碼轉(zhuǎn)換,就應(yīng)該選擇該選項(xiàng)④Draganddropediting:將編輯屏幕分割成多個(gè)編輯窗口功效。⑤Leftmarginclickselectsline:左邊緣編輯功效選項(xiàng)。⑥Sortfuctionpopup:函數(shù)分類(lèi)選項(xiàng)。在編輯窗口有一排工具圖標(biāo),其中左邊起第2個(gè)是函數(shù)列表圖標(biāo)。⑦EnableVirtualSpace:選擇該選項(xiàng),能夠在源程序行后面任意位置進(jìn)行插入操作。⑧BalanceFlashDelay:在上面Balancewhiletyping選項(xiàng)中所應(yīng)用時(shí)間延時(shí),單位是1/60s。⑨Defaultfileformat:系統(tǒng)默認(rèn)文本文件格式ADS開(kāi)發(fā)工具的使用第21頁(yè)
2.Font&Tabs選項(xiàng)卡ADS開(kāi)發(fā)工具的使用第22頁(yè)⑴Fontsettings詳細(xì)內(nèi)容以下: ①Font 該選項(xiàng)是字體選項(xiàng)。 ②Size 該選項(xiàng)用于決定輸入字符尺寸。 ③Script 該欄不是可選項(xiàng),當(dāng)Font欄選擇西文時(shí),該欄顯示“西方”;當(dāng) Font欄選擇漢字時(shí),該欄顯示“CHINESE_GB2312”。 ④Sample 樣本顯示欄。⑵Documenttabsettings和Globaltabsettings ①Tab 空格數(shù)。 ②AutoIndent 編輯行自動(dòng)縮進(jìn)選項(xiàng)。 ③Tabindentsselection Tab行縮進(jìn)選項(xiàng)。 ④TabInsertsSpaces 選擇該選項(xiàng)時(shí),按Tab鍵時(shí)插入是空格字符,而不是制表字符。ADS開(kāi)發(fā)工具的使用第23頁(yè)3.TextColors選項(xiàng)卡ADS開(kāi)發(fā)工具的使用第24頁(yè)Foreground:該選項(xiàng)指定顏色用于文本中除以下各選項(xiàng)要求字符外全部其余字符;Background:該選項(xiàng)指定編輯畫(huà)面背景顏色;Comments:文本注釋顏色選項(xiàng);Keywords:關(guān)鍵字顏色選項(xiàng);Strings:字符串顏色選項(xiàng);CustomKeywords:自定義關(guān)鍵字顏色(Set1~Set4);Classes:類(lèi)別顏色;Functions:函數(shù)顏色;Temlates:模板顏色;Constants:常量顏色;Globals:全局變量顏色;Enums:枚舉顏色;Macros:宏顏色;Other:其它顏色。ADS開(kāi)發(fā)工具的使用第25頁(yè)三、程序匯編與編譯1.1匯編與編譯通常把從匯編語(yǔ)言變換到目標(biāo)代碼過(guò)程稱(chēng)為匯編,通常把從其它高級(jí)語(yǔ)言變換到匯編語(yǔ)言過(guò)程稱(chēng)為編譯,編譯器名稱(chēng)編譯器種類(lèi)源文件類(lèi)型源文件后綴輸出目標(biāo)文件類(lèi)型armccCC*.c32位ARM代碼TccCC*.c16位Thumb代碼armcppC++C/C++*.c/*.cpp32位ARM代碼TcppC++C/C++*.c/*.cpp16位Thumb代碼ADS1.2集成開(kāi)發(fā)環(huán)境中C/C++編譯器ADS開(kāi)發(fā)工具的使用第26頁(yè)ADS1.2集成開(kāi)發(fā)環(huán)境就是使用工具任務(wù):①查找程序中存在錯(cuò)誤,比如語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤等②把C/C++語(yǔ)言程序編譯成匯編語(yǔ)言程序,然后再把匯編語(yǔ)言程序匯編成目標(biāo)代碼。③生成列表文件和供鏈接用目標(biāo)代碼文件等。用兩種方式實(shí)現(xiàn)同一個(gè)源文件匯編ADS開(kāi)發(fā)工具的使用第27頁(yè)DebugRelSettings對(duì)話(huà)框ADS開(kāi)發(fā)工具的使用第28頁(yè)1.Target生成目標(biāo)基本選項(xiàng)設(shè)置面板,用于設(shè)置當(dāng)前生成目標(biāo)一些基本信息。2.LanguageSettings匯編器、編譯器工具選項(xiàng)設(shè)置面板,這些選項(xiàng)設(shè)置直接關(guān)系到匯編/編譯工具怎樣對(duì)工程中全部源文件進(jìn)行匯編和編譯。設(shè)置面板名稱(chēng)ARMAssemblerARMCCompilerARMC++CompilerThumbCCompilerThumbC++Compiler對(duì)應(yīng)工具名稱(chēng)armasmarmccarmcpptcctcpp3.Linker鏈接器選項(xiàng)設(shè)置面板,用于設(shè)置與鏈接器相關(guān)選項(xiàng)以及fromELF工具相關(guān)選項(xiàng)。4.Editor編輯器選項(xiàng)設(shè)置面板,用于設(shè)置用戶(hù)個(gè)性化關(guān)鍵詞顯示方式。5.Debugger調(diào)試器選項(xiàng)設(shè)置面板,用于設(shè)置系統(tǒng)中選取調(diào)試器以及相關(guān)配置選項(xiàng)。6.MiscellaneousSettings其它選項(xiàng)設(shè)置面板,用于設(shè)置一些雜類(lèi)選項(xiàng)。ADS開(kāi)發(fā)工具的使用第29頁(yè)1.2ARM匯編器armasm設(shè)置ADS開(kāi)發(fā)工具的使用第30頁(yè)1.Target選項(xiàng)卡①ArchitectureorProcessor設(shè)置目標(biāo)CPU類(lèi)型,等同于命令行中[-cpucpu]選項(xiàng)。②FloatingPoint選擇fpu體系結(jié)構(gòu),等同于命令行中[-fpuname]選項(xiàng)。③InitialState設(shè)置初始狀態(tài)下指令代碼類(lèi)型,等同于命令行中[-16|-32]選項(xiàng)。④
ByteOrder選擇大端或小端數(shù)據(jù)格式,等同于命令行中[-bigend|-littleend]選項(xiàng)。⑤EquivalentCommandLine等效命令行。ADS開(kāi)發(fā)工具的使用第31頁(yè)2.ATPCS選項(xiàng)卡①CallingStandard該選項(xiàng)欄下指定是否選擇ATPCS標(biāo)準(zhǔn)。②PredeclaredRegisterNames預(yù)定義存放器名,假如選中了ATPCS單項(xiàng)選擇框,表示ADS系統(tǒng)默認(rèn)存放器預(yù)定義功效。③ARM/ThumbProcedureCallStandardOptions這個(gè)選項(xiàng)欄中包含了許多子選項(xiàng)。④Softwarestack 是否支持軟件堆棧。ADS開(kāi)發(fā)工具的使用第32頁(yè)3.Options選項(xiàng)卡ADS開(kāi)發(fā)工具的使用第33頁(yè)①CheckRegisterLists存放器列表次序查對(duì)選項(xiàng)。②NoWarnings報(bào)警信息選項(xiàng)。選擇該選項(xiàng)時(shí),匯編時(shí)不生成警告信息。③SourceLineDebug選中該項(xiàng),匯編時(shí)生成DWARF2格式調(diào)試信息表。④KeepSymbols選中該項(xiàng),對(duì)源文件匯編時(shí)會(huì)把局部標(biāo)號(hào)保留在目標(biāo)文件符號(hào)表中,供調(diào)試使用。⑤IgnoreC-styleescapecharacters選中該選項(xiàng),對(duì)源文件匯編時(shí),忽略C格調(diào)換碼字符,如\n和\t等。⑥FaultlongrunningLoadandStoreMultiples選擇該選項(xiàng),在對(duì)源程序匯編時(shí),將檢驗(yàn)指令LDM和STM存放器列表不得超出5個(gè)。ADS開(kāi)發(fā)工具的使用第34頁(yè)4.Predefines選項(xiàng)卡在Variable文本框中填寫(xiě)count,在Directive下拉框中選擇SETA(下拉框中包含SETA、SETL、SETS),在Numeric文本框中填寫(xiě)數(shù)字10,然后單擊Add按鈕,則全局變量count定義完成,并在ListofPredefines列表欄中會(huì)顯示countSETA10。ADS開(kāi)發(fā)工具的使用第35頁(yè)5.ListingControl選項(xiàng)卡①M(fèi)iscellaneousListingon:選中該選項(xiàng),則匯編時(shí)會(huì)生成一個(gè)詳細(xì)列表文件,文件名與源文件名相同,后綴為.lst。Terse:精簡(jiǎn)列表文件選項(xiàng)。Cross-references:符號(hào)交叉引用信息選項(xiàng)。②Dimensions該選項(xiàng)欄中能夠定義列表文件寬度和長(zhǎng)度,系統(tǒng)默認(rèn)列表文件79個(gè)字符寬度,66行長(zhǎng)度。ADS開(kāi)發(fā)工具的使用第36頁(yè)6.Extras選項(xiàng)卡在Viafilename編輯欄中可直接填寫(xiě)對(duì)應(yīng)via文件。該選項(xiàng)等同于命令行方式下[-viafilename]選項(xiàng)。
7.未列舉在圖形方式下其它主要選項(xiàng)①-errorserrorfile:錯(cuò)誤列表文件選項(xiàng)。
②-ofilename:目標(biāo)文件名選項(xiàng)。ADS開(kāi)發(fā)工具的使用第37頁(yè)1.3ARM編譯器armcc設(shè)置armcc編譯器設(shè)置ADS開(kāi)發(fā)工具的使用第38頁(yè)1.TargetandSource選項(xiàng)卡ArchitetoreorProcess選項(xiàng):設(shè)置目標(biāo)CPU類(lèi)型SourceLanguage選項(xiàng):語(yǔ)言類(lèi)別。ByteOrder選項(xiàng):選擇大端小端;FloatingPoint選項(xiàng):選擇fpu體系結(jié)構(gòu)2.ATPCS選項(xiàng)卡ATPCS(ARMandThumbProcedureCallStandard)是ARM和Thumb指令程序相互調(diào)用標(biāo)準(zhǔn)。ARM/Thumbinterworking:ARM代碼和Thumb代碼代碼混合使用選項(xiàng);Softwarestackcheck:軟件數(shù)據(jù)棧檢驗(yàn)選項(xiàng);Read-onlypositionindepen:只讀位置選項(xiàng);Read-writepositionindeper:可讀可寫(xiě)位置選項(xiàng)。ADS開(kāi)發(fā)工具的使用第39頁(yè)3.Warnings選項(xiàng)卡Nowarnings:指定編譯器關(guān)閉全部報(bào)警信息;Warnforallcondition:指定編譯器打開(kāi)全部報(bào)警信息;4.Errors選項(xiàng)卡
Errors選項(xiàng)卡如圖,選取這些選項(xiàng)會(huì)忽略一些錯(cuò)誤信息,這意味著這么編譯源程序不嚴(yán)格遵照C或C++標(biāo)準(zhǔn)。ADS開(kāi)發(fā)工具的使用第40頁(yè)5.Debug/Option選項(xiàng)卡⑴DebugControlEnabledebugtablegeneration:此選項(xiàng)在編譯輸出文件中會(huì)包含調(diào)換信息表;Includepreprocessorsymbol:此選項(xiàng)對(duì)于宏定義較多源文件;Enabledebugofinlinefunction:此選項(xiàng)不使用函數(shù)內(nèi)嵌功效。⑵OptimizationLevelMinimum:這是最低級(jí)別優(yōu)化;Most:這個(gè)級(jí)別優(yōu)化是不完全優(yōu)化;All:這是一個(gè)對(duì)輸出對(duì)代碼完全優(yōu)化級(jí)別。⑶OptimizationCriterionForspace:此選項(xiàng)優(yōu)化目標(biāo)代碼尺寸,而犧牲代碼執(zhí)行性能;Fortime:此選項(xiàng)優(yōu)化目標(biāo)代碼執(zhí)行時(shí)間,而犧牲代碼存放空間。ADS開(kāi)發(fā)工具的使用第41頁(yè)7.CodeGen選項(xiàng)卡6.Preprocessor選項(xiàng)卡
此選項(xiàng)卡指定了預(yù)處理器特征,包含預(yù)處理器輸出和宏定義。8.Extras選項(xiàng)卡在這個(gè)選項(xiàng)卡中能夠設(shè)置一個(gè)Via格式配置文件,這么各種選項(xiàng)就能夠從Via配置文件輸入,防止全部選項(xiàng)一一設(shè)置帶來(lái)麻煩。ADS開(kāi)發(fā)工具的使用第42頁(yè)9.未列舉在圖形方式下其它主要選項(xiàng)①output-format該選項(xiàng)設(shè)置編譯輸出文件格式,能夠使用這個(gè)選項(xiàng)產(chǎn)生匯編語(yǔ)言列表文件和生成目標(biāo)文件。②-asm
該選項(xiàng)指定編譯器生成一個(gè)匯編語(yǔ)言列表文件。③-C
該選項(xiàng)指定編譯器只進(jìn)行編譯但不準(zhǔn)備鏈接。④-S
該選項(xiàng)指定把編譯器生成匯編指令包含到列表文件中,但與-asm選項(xiàng)不一樣,該選項(xiàng)不能產(chǎn)生目標(biāo)代碼。⑤-list
該選項(xiàng)指定編譯器生成一個(gè)列表文件,列表文件包含源程序行、錯(cuò)誤信息和警告信息。文件內(nèi)容能夠使用選項(xiàng)-fi、-fj和-fu控制。⑥-Ofilename
該選項(xiàng)指定一個(gè)文件,這個(gè)文件用來(lái)存放編譯輸出結(jié)果。⑦search–Paths該選項(xiàng)設(shè)置包含文件搜索路徑。⑧additional–check附加核查選項(xiàng)。ADS開(kāi)發(fā)工具的使用第43頁(yè)四、程序鏈接
1.1與鏈接相關(guān)文件 對(duì)程序進(jìn)行鏈接時(shí),會(huì)包括到以下一些相關(guān)文件: ①目標(biāo)文件 ②Via文件 ③分散加載文件 ④映像文件 ⑤信息列表文件 ⑥錯(cuò)誤信息列表文件 ⑦全局符號(hào)表文件 其中①~③都是鏈接器輸入文件; ④~⑥都是鏈接器輸出文件; ⑦既能夠是鏈接器輸入文件,也能夠是鏈接器輸出文件。ADS開(kāi)發(fā)工具的使用第44頁(yè)1.2ARM映像文件1.ARM映像文件組成①ARM映像文件組成部分ARM映像文件是一個(gè)層次性結(jié)構(gòu)文件,其中包含了域(region)、輸出段(outputsection)、輸入段(inputsection)。映像文件組成結(jié)構(gòu)示意圖 輸入段:輸入段中包含了4類(lèi)內(nèi)容:代碼、已經(jīng)初始化數(shù)據(jù)、未經(jīng)過(guò)初始化存放區(qū)域、內(nèi)容初始化成0存放區(qū)域。 輸出段:一個(gè)輸出段中包含了一系列含有相同RO、RW和ZI屬性輸入段。 域:一個(gè)域中包含l~3個(gè)輸出段,其中各輸出段屬性各不相同。各輸出段排列次序是由其屬性決定。ADS開(kāi)發(fā)工具的使用第45頁(yè)
②ARM映像文件各組成部分地址映射
ARM映像文件各組成部分在存放系統(tǒng)中地址有兩種: 一個(gè)是在映像文件位于存放器中時(shí)地址,稱(chēng)為加載時(shí)地址; 一個(gè)是在映像文件運(yùn)行時(shí)地址,稱(chēng)為運(yùn)行時(shí)地址。當(dāng)映像文件中地址映射關(guān)系更復(fù)雜時(shí),能夠使用一個(gè)配置文件告訴鏈接器相關(guān)地址映射關(guān)系。設(shè)置地址映射關(guān)系A(chǔ)DS開(kāi)發(fā)工具的使用第46頁(yè)
2.ARM映像文件入口點(diǎn)①兩類(lèi)入口點(diǎn)初始入口點(diǎn)(initialentrypoint); 初始入口點(diǎn)是映像文件運(yùn)行時(shí)入口點(diǎn),每個(gè)映像文件只有一個(gè)唯一初始入口點(diǎn),它保留在ELF頭文件中。普通入口點(diǎn)(entrypoint)。 普通入口點(diǎn)是在匯編程序中用ENTRY偽操作定義。②定義初始入口點(diǎn)初始入口點(diǎn)必須滿(mǎn)足下面兩個(gè)條件:初始入口點(diǎn)必須位于映像文件運(yùn)行時(shí)域內(nèi);包含初始入口點(diǎn)運(yùn)行時(shí)域不能被覆蓋,它加載時(shí)地址和運(yùn)行時(shí)地址必須是相同(這種域稱(chēng)為固定域rootregion)。ADS開(kāi)發(fā)工具的使用第47頁(yè)能夠使用鏈接選項(xiàng)-entryaddress來(lái)指定映像文件初始入口點(diǎn),也能夠在圖形方式下設(shè)置初始入口點(diǎn)地址③普通入口點(diǎn)使用方法普通入口點(diǎn)是在匯編程序中用ENTRY偽操作定義。在嵌入式應(yīng)用系統(tǒng)中,各種異常中止(如IRQ、FIQ、SVC、Undef、Abort)處理程序入口使用普通入口點(diǎn)標(biāo)識(shí)。ADS開(kāi)發(fā)工具的使用第48頁(yè)能夠使用鏈接選項(xiàng)-first、-last來(lái)改變輸入段排序次序規(guī)則:輸入段屬性輸入段名稱(chēng)各輸入段在鏈接命令行輸入段列表中排列次序。3.輸入段排序規(guī)則各輸入段起始地址由兩個(gè)原因決定:輸出段起始地址輸入段在輸出段中排列次序。ADS開(kāi)發(fā)工具的使用第49頁(yè)1.3ARM鏈接器生成符號(hào)1.鏈接器生成與域相關(guān)符號(hào)符號(hào)名稱(chēng)含義Load$$region_name$$Base域region_name加載時(shí)起始地址。Image$$region_name$$Base域region_name運(yùn)行時(shí)起始地址。Image$$region_name$$Length域region_name運(yùn)行時(shí)長(zhǎng)度(為4字節(jié)倍數(shù))。Image$$region_name$$Limit域region_name運(yùn)行時(shí)存放區(qū)域末尾下一個(gè)字節(jié)地址(該地址不屬于域region_name所占存放區(qū)域)。對(duì)于只讀域,使用名稱(chēng)ERRO;對(duì)于可讀寫(xiě)域,使用名稱(chēng)ERRW;對(duì)于使用0初始化域,使用名稱(chēng)ERZI。ADS開(kāi)發(fā)工具的使用第50頁(yè)鏈接器為ZI輸出段生成另外符號(hào)符號(hào)名稱(chēng)含義Image$$region_name$$ZI$$Base域region_name中ZI輸出段運(yùn)行時(shí)起始地址。Image$$region_name$$ZI$$Length域region_name中ZI輸出段運(yùn)行時(shí)長(zhǎng)度。Image$$region_name$$ZI$$Limit域region_name中ZI輸出段運(yùn)行時(shí)存放區(qū)域末尾下一個(gè)字節(jié)地址。ADS開(kāi)發(fā)工具的使用第51頁(yè)2.鏈接器生成與輸出段相關(guān)符號(hào)符號(hào)名稱(chēng)含義Image$$RO$$BaseRO輸出段運(yùn)行時(shí)起始地址。Image$$RO$$LimitRO輸出段運(yùn)行時(shí)存放區(qū)域界限。Image$$RW$$BaseRW輸出段運(yùn)行時(shí)起始地址。Image$$RW$$LimitRW輸出段運(yùn)行時(shí)存放區(qū)域界限。Image$$ZI$$BaseZI輸出段運(yùn)行時(shí)起始地址。Image$$ZI$$LimitZI輸出段運(yùn)行時(shí)存放區(qū)域界限。3.鏈接器生成與輸入段相關(guān)符號(hào)符號(hào)名稱(chēng)含義SectionName$$BaseSectionName輸入段運(yùn)行時(shí)起始地址。SectionName$$LimitSectionName輸入段運(yùn)行時(shí)存放區(qū)域界限。ADS開(kāi)發(fā)工具的使用第52頁(yè)1.4鏈接器armlink設(shè)置
ARMLinker設(shè)置對(duì)話(huà)框ADS開(kāi)發(fā)工具的使用第53頁(yè)1.Output選項(xiàng)卡①Partial該選項(xiàng)指示鏈接器對(duì)目標(biāo)文件進(jìn)行部分鏈接,部分鏈接生成擴(kuò)展名為OELF格式目標(biāo)文件,這個(gè)鏈接是為了以后鏈接使用,不生成可執(zhí)行映像文件。②Simple該選項(xiàng)指示鏈接器對(duì)目標(biāo)文件進(jìn)行簡(jiǎn)單鏈接,鏈接生成可執(zhí)行映像文件。③
Scatter該選項(xiàng)引入一個(gè)配置文件。這個(gè)配置文件是一個(gè)文本文件,由程序員編制而成。④Symbol使用該選項(xiàng)能夠生成一個(gè)全局符號(hào)列表文件,這個(gè)文件包含符號(hào)是映像文件中所使用全局符號(hào)。⑤Symbolediting使用該選項(xiàng)能夠指定一個(gè)steering格式文件。ADS開(kāi)發(fā)工具的使用第54頁(yè)2.Option選項(xiàng)卡①RemoveunusedsectionsRead-only:刪除RO類(lèi)型未被使用段;Read-write:刪除RW類(lèi)型未被使用段;Zero-initial:刪除ZI類(lèi)型未被使用段;
②Imageentrypoint設(shè)置映像文件入口點(diǎn)。③其它選項(xiàng)ADS開(kāi)發(fā)工具的使用第55頁(yè)3.Layout選項(xiàng)卡⑴Placeatbeginningofimage選項(xiàng)組用于指定將某個(gè)輸入段放置在它所在運(yùn)行時(shí)域起始位置。①在Object/Symbol文本框中指定一個(gè)符號(hào)名稱(chēng),定義本符號(hào)輸入段被指定。②在Object/Symbol文本框中指定一個(gè)目標(biāo)文件名稱(chēng),在Section文本框中指定一個(gè)輸入段名稱(chēng),從而確定了一個(gè)輸入段作為指定輸入段。⑵Placeatendofimage選項(xiàng)組用于指定將某個(gè)輸入段放置在它所在執(zhí)行時(shí)域結(jié)尾,指定一個(gè)輸入段2種方法與Placeatbeginningof選項(xiàng)組相同。ADS開(kāi)發(fā)工具的使用第56頁(yè)4.Listings選項(xiàng)卡ADS開(kāi)發(fā)工具的使用第57頁(yè)⑴Listings選項(xiàng)組Imagemap:此選項(xiàng)使鏈接器產(chǎn)生一個(gè)關(guān)于映像文件信息圖;Symbols:此選項(xiàng)使鏈接器列出鏈接過(guò)程中局部和全局符號(hào)及其數(shù)值,半空鏈接器產(chǎn)生符號(hào);MangledC++:此選項(xiàng)使鏈接器在診療信息和鏈接選項(xiàng)-xref、-xreffrom、-xrefto、-symbol產(chǎn)生列表中顯示mangledC++符號(hào)名稱(chēng);Sectioncross-reference:此選項(xiàng)使鏈接器列出全部輸入段間交叉引用;Listfile:此選項(xiàng)用于指定列表文件名稱(chēng)及其路徑;Staticcallgraph:選中該選項(xiàng)鏈接器顯示程序間調(diào)用關(guān)系。⑵GiveInformationon選項(xiàng)組Sizes:此選項(xiàng)使鏈接器列出映像文件中各輸入目標(biāo)文件和使用到庫(kù)文件尺寸;Totals:此選項(xiàng)使鏈接器列出映像文件中全部輸入目標(biāo)文件和使用到庫(kù)文件尺寸總和;Unused:此選項(xiàng)使鏈接器列出被刪除沒(méi)有被使用輸入段信息;Veneers:此選項(xiàng)使鏈接器列出生成veneers信息。ADS開(kāi)發(fā)工具的使用第58頁(yè)5.Extras選項(xiàng)卡①M(fèi)akeundefinedsymbolsreferto在該文本框中輸入一個(gè)已經(jīng)定義全局符號(hào),用來(lái)代替映像文件中全部未定義符號(hào)。②Viafilename在該文本框中選擇一個(gè)via格式文件。Via格式文件中包含了ARM鏈接器各命令行選項(xiàng),ARM鏈接器能夠從該為文件中讀取對(duì)應(yīng)鏈接器命令行選項(xiàng)。ADS開(kāi)發(fā)工具的使用第59頁(yè)五、本節(jié)附錄1.1配置生成目標(biāo)1)工程項(xiàng)目標(biāo)生成目標(biāo) 依據(jù)選擇,鏈接器生成映像文件能夠有3種不一樣特征,稱(chēng)為3種生成目標(biāo)如圖。DebugRel 在生成輸出文件時(shí),會(huì)生成必要調(diào)試信息;Release 在生成輸出文件時(shí),將不包含調(diào)試信息;Debug 在生成輸出文件時(shí),會(huì)生成完全調(diào)試信息。ADS開(kāi)發(fā)工具的使用第60頁(yè)2)Settings對(duì)話(huà)框打開(kāi)DebugSettings對(duì)話(huà)框操作步驟以下:打開(kāi)一個(gè)工程項(xiàng)目;在工程項(xiàng)目窗口中選擇Debug生成目標(biāo);經(jīng)過(guò)下面任何一個(gè)操作彈出DebugSettings對(duì)話(huà)框;在工程項(xiàng)目窗口中單擊TargetSettings按鈕;選擇“Edit”→“DebugSettings”命令;在DebugSettings對(duì)話(huà)框中包含下面6個(gè)面板,其步驟以下:TargetSettings 生成目標(biāo)基本選項(xiàng)設(shè)置;LanguageSettings 編程語(yǔ)言選項(xiàng)設(shè)置;Linker 鏈接器選項(xiàng)設(shè)置;Editor 編輯器選項(xiàng)設(shè)置面板; Debugger 調(diào)試器選項(xiàng)設(shè)置面板;MiscellaneousSettings 其它選項(xiàng)設(shè)置面板。ADS開(kāi)發(fā)工具的使用第61頁(yè) 生成目標(biāo)基本選項(xiàng)用于設(shè)置當(dāng)前生成目標(biāo)一些基本信息,包含生成目標(biāo)名稱(chēng)、所使用鏈接器等。它包含下面幾組選項(xiàng)。下面分別介紹其含義與設(shè)置方法:TargetSettings選項(xiàng)組;AccessPaths選項(xiàng)組;BuildExtras選項(xiàng)組;FileMappings選項(xiàng)組;SourceTrees選項(xiàng)組。ADS開(kāi)發(fā)工具的使用第62頁(yè)⑴設(shè)置TargetSettings選項(xiàng)組3)設(shè)置生成目標(biāo)基本選項(xiàng)ADS開(kāi)發(fā)工具的使用第63頁(yè)①TargetName 設(shè)置當(dāng)前生成目標(biāo)名稱(chēng)②Linker 選擇使用鏈接器。 ARMLinker 選擇armlink工具編譯和鏈接文件; ARMLibrarian選擇librarian工具,將文件轉(zhuǎn)會(huì)成ARM庫(kù)文件; None 不使用任何鏈接器。③Pre-Linker CodeWarriorIDEforARM當(dāng)前沒(méi)有使用本選項(xiàng)④Post-Linker 用于選擇對(duì)鏈接器輸出文件處理方式,可能取值以下: None 不進(jìn)行鏈接后處理; ARMfromELF 使用fromELF工具處理鏈接器輸出ELF格式文件,⑤OutputDirectory 用于定義本工程項(xiàng)目標(biāo)數(shù)據(jù)目錄。ADS開(kāi)發(fā)工具的使用第64頁(yè)⑵設(shè)置AccessPaths選項(xiàng)組①UserPaths單項(xiàng)選擇按鈕,用于指定用戶(hù)路徑。②SystemPaths單項(xiàng)選擇按鈕,用于指定系統(tǒng)路徑。③AlwaysSearchUserPaths復(fù)選框,用于指定在用戶(hù)路徑中搜索系統(tǒng)頭文件。④
其它按鈕ADS開(kāi)發(fā)工具的使用第65頁(yè)⑶設(shè)置BuildExtras選項(xiàng)組 這些選項(xiàng)用于設(shè)置是否檢驗(yàn)源文件修改日期、是否緩存子工程項(xiàng)目、是否使用第三方調(diào)試器等等。ADS開(kāi)發(fā)工具的使用第66頁(yè)⑷設(shè)置FileMappings選項(xiàng)FileMappings選項(xiàng)組默認(rèn)取值取決于下面兩個(gè)條件:當(dāng)前工程項(xiàng)目所使用工程項(xiàng)目模板類(lèi)型;當(dāng)前生成目標(biāo)。ADS開(kāi)發(fā)工具的使用第67頁(yè)⑸設(shè)置SourceTrees選項(xiàng)組Name 文本框中為當(dāng)前選中路徑名稱(chēng);Type 下拉列表框能夠選擇當(dāng)前選中路徑類(lèi)型;Choose 使用本按鈕能夠選擇實(shí)際路徑;Add 按鈕用于添加一條新路徑選項(xiàng);Change 按鈕用于修改當(dāng)前路徑選項(xiàng);Remove 按鈕用于刪除當(dāng)前路徑選項(xiàng)。ADS開(kāi)發(fā)工具的使用第68頁(yè)1)Scatter文件結(jié)構(gòu)scatter文件中能夠指定以下信息:a.各個(gè)加載時(shí)域加載時(shí)起始地址、最大尺寸和屬性;b.每個(gè)加載時(shí)域包含輸出段;c.各個(gè)輸出段運(yùn)行時(shí)起始地址、最大尺寸、存放訪(fǎng)問(wèn)特征和屬性;d.各個(gè)輸出段中包含輸入段。1.2Scatter文件編寫(xiě)Scatter文件結(jié)構(gòu)示意圖ADS開(kāi)發(fā)工具的使用第69頁(yè)①加載時(shí)域描述加載時(shí)域格式以下所表示:②輸出段描述輸出段格式以下所表示:③輸入段描述輸入段里描述了一個(gè)文本字符串模式,匹配該模式輸入段都將被包含在當(dāng)前域中。模式中能夠使用匹配符,符號(hào)"*"代表零個(gè)或者多個(gè)字符,符號(hào)"?"代表單個(gè)字符。進(jìn)行匹配時(shí),全部字符是大小寫(xiě)無(wú)關(guān)。Load_name base_designator attribute max_size{……}output_name base_designator attribute max_size{……}ADS開(kāi)發(fā)工具的使用第70頁(yè)簡(jiǎn)單scatter文件Load_1 0x4000 ;定義加載時(shí)域名稱(chēng)為L(zhǎng)oad_1,起始地址為0x4000{ER_RO+0 ;輸出段名ER_RO,地址偏移量0,所以起始地址為0x4000{*(+RO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 構(gòu)建安全辦公環(huán)境從網(wǎng)絡(luò)安全培訓(xùn)開(kāi)始
- 醫(yī)療護(hù)理醫(yī)學(xué)培訓(xùn) 有創(chuàng)動(dòng)脈壓監(jiān)測(cè)波形分析課件
- 生產(chǎn)現(xiàn)場(chǎng)管理對(duì)效率的提升作用
- 現(xiàn)代企業(yè)管理中高效團(tuán)隊(duì)溝通的秘密
- 生態(tài)美學(xué)在洗浴空間設(shè)計(jì)中的應(yīng)用
- 現(xiàn)代辦公環(huán)境下實(shí)踐教學(xué)資源的整合與創(chuàng)新
- 現(xiàn)代辦公環(huán)境下的金融科技創(chuàng)新
- Unit 2 Shopping Lesson3(說(shuō)課稿)-2024-2025學(xué)年北師大版(三起)英語(yǔ)四年級(jí)上冊(cè)
- 8 安全記心上(說(shuō)課稿)-2024-2025學(xué)年道德與法治三年級(jí)上冊(cè)統(tǒng)編版
- 2023三年級(jí)英語(yǔ)下冊(cè) Fun Time 1(Recycle 2)說(shuō)課稿 人教精通版(三起)
- 美容衛(wèi)生管理制度
- 銅陵2025年安徽銅陵郊區(qū)周潭鎮(zhèn)招聘鄉(xiāng)村振興專(zhuān)干和村級(jí)后備干部5人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年紀(jì)檢辦公室工作計(jì)劃范文
- 七年級(jí)上學(xué)期歷史期末考試模擬卷02(原卷版)
- 橋梁建設(shè)施工組織設(shè)計(jì)方案
- (新版)中國(guó)動(dòng)態(tài)血壓監(jiān)測(cè)基層應(yīng)用指南(2024年)
- 礦物加工工程基礎(chǔ)知識(shí)單選題100道及答案解析
- 2024年同等學(xué)力申碩英語(yǔ)考試真題
- 浙江省杭州市2024年中考語(yǔ)文試卷(含答案)
- 世說(shuō)新語(yǔ)原文及翻譯-副本
- 電力通信光纜檢修標(biāo)準(zhǔn)化作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論