嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第7章_第1頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第7章_第2頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第7章_第3頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第7章_第4頁(yè)
嵌入式系統(tǒng)設(shè)計(jì)-李秀娟-課件-第7章_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第7章嵌入式Linux應(yīng)用程序開發(fā)與調(diào)試嵌入式應(yīng)用開發(fā)過程的實(shí)質(zhì)和樂趣。

2本章內(nèi)容7.1開發(fā)環(huán)境與工具

17.2Linux下的C語言編程27.3嵌入式系統(tǒng)開發(fā)軟件與調(diào)試工具

37.4ARM仿真器43簡(jiǎn)介本章介紹嵌入式Linux應(yīng)用程序開發(fā)及調(diào)試相關(guān)的軟件環(huán)境及開發(fā)調(diào)試工具。首先闡述了嵌入式Linux環(huán)境下交叉編譯的基本概念,結(jié)合例程講解了常用的編譯器和調(diào)試器的使用方法。接下來,概要介紹Linux系統(tǒng)下的C語言編程的開發(fā)環(huán)境和代碼的編譯及下載方法。針對(duì)所開發(fā)的程序代碼,分析對(duì)比了常見的調(diào)試方式和ADS集成開發(fā)環(huán)境的使用方法。隨后結(jié)合實(shí)際情況介紹了UArmJtag調(diào)試工具及UP-ICE200仿真器的使用,為讀者進(jìn)一步使用并掌握調(diào)試和仿真工具起到拋磚引玉的作用。47.1開發(fā)環(huán)境與工具由于一般的嵌入式系統(tǒng)目標(biāo)機(jī)的片上資源有限,不能為編譯過程提供足夠的資源,因此通常都要在資源較為豐富的PC機(jī)上建立一個(gè)交叉編譯環(huán)境。交叉編譯是指在一種體系結(jié)構(gòu)的平臺(tái)上(如X86架構(gòu)的PC機(jī))上編譯生成可以運(yùn)行于另一種不同體系結(jié)構(gòu)平臺(tái)(如ARM架構(gòu)的開發(fā)板)的代碼的過程。交叉編譯環(huán)境通常是建立在PC機(jī)上,由交叉編譯器、交叉鏈接器和解釋器等組成的一個(gè)集成開發(fā)環(huán)境。7.1.1交叉編譯交叉編譯環(huán)境也是由一系列的工具包組成:針對(duì)ARM目標(biāo)板的gcc(GNUCompilerCollection)編譯器。其中,包括C與C++的編譯器和預(yù)處理器;目標(biāo)板的二進(jìn)制開發(fā)工具包Binutils。其中,包括連接器、匯編器以及其它用于目標(biāo)文件和檔案的工具;提供系統(tǒng)調(diào)用和基本函數(shù)的標(biāo)準(zhǔn)C庫(kù)Glibc。Glibc提供系統(tǒng)調(diào)用和基本函數(shù)C庫(kù)以及目標(biāo)板的Linux內(nèi)核頭文件。57.1.2gcc編譯器Gcc是GNU組織開發(fā)的一套免費(fèi)的編程語言編譯器,遵循GPL及LGPL許可證,也是GNU計(jì)劃的關(guān)鍵組成部分。Gcc最初是指C語言編譯器(GNUCCompiler),是一個(gè)功能強(qiáng)大的ANSI(American

National

Standards

Institute,美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))C兼容編譯器。隨著多年發(fā)展,Gcc已經(jīng)不僅僅支持C和C++語言,還可以編譯Java、Fortran、COBOL、Pascal、Objective-C、Modual-3以及Ada等多種語言。Gcc的含義已經(jīng)變成了GNU編譯器家族(GNUCompilerCollection),已經(jīng)廣泛使用在各個(gè)Linux版本中。6Gcc編譯器幾乎對(duì)所有常見的硬件平臺(tái)都提供了完善的支持,因此可以將編寫的源程序編譯為適應(yīng)多種硬件平臺(tái)的目標(biāo)代碼。Gcc是一個(gè)交叉平臺(tái)編譯器,可以在當(dāng)前CPU體系結(jié)構(gòu)的硬件開發(fā)平臺(tái)上為其他多種不同架構(gòu)類型的開發(fā)板編譯代碼,因此尤其適合嵌入式系統(tǒng)領(lǐng)域源代碼的編譯工作。7使用gcc/g++由C源代碼文件生成可執(zhí)行文件的過程不僅僅是編譯過程,還包括四個(gè)相互關(guān)聯(lián)的過程,預(yù)處理(也稱預(yù)編譯,Preprocessing),編譯(Compilation),匯編(Assembly),鏈接(Linking),如下圖所示。89使用gcc編譯器的一般命令格式為:

gcc[options][filenames]其中的可選項(xiàng)options是以“-”開始的各種編譯選項(xiàng)。filenames是相關(guān)程序的文件名,包括即將生成的可執(zhí)行文件的名字(可選項(xiàng))和要編譯的源程序的名字。在使用gcc進(jìn)行編譯的時(shí)候,需要給出必要的選項(xiàng)和完整的帶后綴名的源文件名。107.1.3GDB調(diào)試器Linux系統(tǒng)下GNU提供了一個(gè)名為gdb(GNUDeBug)的調(diào)試程序,通過與Gcc編譯器的配合使用,為基于Linux操作系統(tǒng)的軟件開發(fā)提供了一個(gè)完善的調(diào)試環(huán)境。gdb是一個(gè)用來調(diào)試C和C++語言源程序的高效調(diào)試器。在程序調(diào)試運(yùn)行時(shí),用戶可以通過gdb調(diào)試器觀察程序的內(nèi)部結(jié)構(gòu)和內(nèi)存的使用情況。gdb所提供的具體功能包括:?jiǎn)尾街鹦袌?zhí)行代碼或程序跟蹤,觀察程序的運(yùn)行狀態(tài);動(dòng)態(tài)監(jiān)視或修改程序中變量的值;設(shè)置斷點(diǎn)以使程序在指定的代碼行上暫停執(zhí)行;程序停止時(shí)可以檢查程序的狀態(tài);分析程序崩潰產(chǎn)生的core文件。11當(dāng)gdb調(diào)試器被適當(dāng)?shù)丶傻侥硞€(gè)嵌入式系統(tǒng)程序中的時(shí)候,其遠(yuǎn)程調(diào)試功能允許開發(fā)人員設(shè)置斷點(diǎn)、分步調(diào)試程序代碼、檢驗(yàn)內(nèi)存,并且同目標(biāo)板交換信息。開發(fā)人員可以將運(yùn)行g(shù)db的宿主機(jī)通過串行端口、網(wǎng)絡(luò)接口或是其他方式連接到目標(biāo)板進(jìn)行遠(yuǎn)程調(diào)試。使用gdb調(diào)試器對(duì)應(yīng)用程序進(jìn)行調(diào)試時(shí),為了使gdb正常工作,在使用gcc編譯器對(duì)源代碼進(jìn)行編譯的時(shí)候,必須使用-g編譯選項(xiàng)開關(guān)來通知編譯器,開發(fā)者希望進(jìn)行程序調(diào)試。12Gdb調(diào)試方式采用文本界面下的交互式調(diào)試方式。在Linux系統(tǒng)下的終端命令行提示符下鍵入gdb并按回車鍵即可啟動(dòng)運(yùn)行g(shù)db調(diào)試器。此外,如果想直接指定想要調(diào)試的程序,也可以使用下面的命令來運(yùn)行g(shù)db:gdb<filename>137.1.4Vi編輯器的使用用戶要在Linux系統(tǒng)下編寫一般文本、數(shù)據(jù)文件或是語言程序,首先都必須選擇一種編輯器工具。圖形模式下有g(shù)rdit、OpenOffice、kwrite等,文本模式下有Vi、VIM(ViImproved)、Emacs、nano等。Vi文本編輯器已經(jīng)成為L(zhǎng)inux系統(tǒng)下最常用的工具之一。Vi即“VisualInterface”的簡(jiǎn)稱,是Linux/Unix自帶的可視化全屏幕文本編輯器,工作在字符模式下。由于不需要圖形界面,使它成了效率很高的交互式文本編輯工具。14Vi編輯器在Linux操作系統(tǒng)上的地位就像Edit程序在DOS上一樣。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對(duì)其進(jìn)行定制,這也是其他編輯程序所沒有的。Vi有三種基本工作模式分別為命令模式(commandmode)、插入模式(Insertmode)以及底行模式(lastlinemode)。15(1)命令模式當(dāng)進(jìn)入Vi編輯器時(shí),首先進(jìn)入的就是命令模式,此時(shí)光標(biāo)位于屏幕上方。在該模式下鍵盤的各種輸入都被作為命令來對(duì)待。用戶可以執(zhí)行控制光標(biāo)移動(dòng),刪除字符,復(fù)制段落等操作。用戶可以輸入各種合法的Vi命令,用于管理自己的文檔。需要注意的是,所輸入的命令通常是不回顯的(并不在屏幕上顯示出來),在該模式下也無法編輯文字。如果用戶在該模式下輸入非法的Vi命令,計(jì)算機(jī)將鳴響報(bào)警。命令模式是vi的核心模式,其他模式是從命令模式轉(zhuǎn)入的,其他任意模式按“Esc”鍵也都可回到命令模式。16(2)插入模式插入模式也稱為文本編輯模式。用戶在命令模式下,通過輸入命令i、附加命令a、打開命令o、修改命令c、取代命令r或替換命令s都可以使vi編輯器進(jìn)入插入模式。此時(shí)屏幕底部出現(xiàn)“INSERT”的提示。只有在插入模式下,用戶才可以進(jìn)行文本的編輯輸入和修改。在該模式下,用戶輸入的任何字符都被Vi編輯器當(dāng)做文件內(nèi)容保存起來,并將其顯示在屏幕上。在新增文字及修改文字結(jié)束后,按“Esc”鍵可回到命令模式。17(3)底行模式在命令模式下,用戶按一般命令“:”鍵、正向搜索“/”鍵或反向搜索“?”鍵即可進(jìn)入底行模式下,此時(shí)Vi會(huì)在屏幕窗口左下角的最后一行,顯示一個(gè)“:”符號(hào)作為底行模式的提示符,光標(biāo)位于此提示符后等待用戶輸入命令。在底行模式下,所有命令都要以“:”開始,此時(shí)從鍵盤上輸入的任何字符都被當(dāng)作編輯命令進(jìn)行解釋處理,如“:q”代表退出,“:w”表示存盤。18需要注意的是,表中所有命令前的冒號(hào)是底行模式的提示符,而不是命令本身的一部分。多數(shù)文件管理命令都是在此模式下執(zhí)行的,功能包括:將文件進(jìn)行保存或退出Vi的操作,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號(hào)等其他操作。底行命令輸入完畢后按Enter鍵盤即可執(zhí)行,之后Vi將自動(dòng)回到命令模式。19上述三種模式是可以相互切換,它們之間的相互轉(zhuǎn)換關(guān)系如圖所示。具體切換方法為:命令模式→i鍵或a鍵或o鍵→編輯模式編輯模式→Esc→命令模式,命令模式→:→底行模式。207.1.5Makefile文件和Make命令如果在一個(gè)軟件工程中包含了幾十個(gè)甚至成百上千個(gè)源代碼文件,而這些源代碼文件中的某個(gè)或某幾個(gè)又包含在其他的源碼文件中,那么,如果其中一個(gè)源代碼文件被改動(dòng),則包含它的那些源文件都要重新使用編譯器執(zhí)行編譯鏈接過程,這樣做的工作量將是十分龐大的。

GNU提供了make命令工具及Makefile文件,可以取代復(fù)雜的編譯命令操作。make及Makefile工具可以高效地處理各個(gè)源文件之間的復(fù)雜關(guān)系,提高應(yīng)用程序的開發(fā)效率。同時(shí),用戶在編譯時(shí)只需要執(zhí)行一次make命令,使得程序的編譯過程變得更為簡(jiǎn)單。211.Makefile文件GNUmake命令執(zhí)行時(shí),需要一個(gè)對(duì)應(yīng)的Makefile文件,通過讀入makefile配置文件的相關(guān)內(nèi)容自動(dòng)完成大量的編譯和鏈接工作。一個(gè)工程中的源文件可能有很多,按其類型、功能、模塊分別存放在若干個(gè)目錄中。Makefile文件描述了目標(biāo)文件之間的依賴關(guān)系,指定了工程編譯過程中使用的編譯工具和鏈接規(guī)則。22Makefile主要包括顯式規(guī)則、隱晦規(guī)則、變量定義、文件指示及注釋五部分。它們定義了一系列的規(guī)則,來指定工程中哪些文件需要編譯以及如何編譯;哪些文件需要先編譯,哪些文件需要后編譯以及哪些文件需要重新編譯;需要?jiǎng)?chuàng)建哪些庫(kù)文件以及如何創(chuàng)建;如何產(chǎn)生最后的可執(zhí)行文件甚至于進(jìn)行更復(fù)雜的功能操作。23Makefile的作用是根據(jù)配置的情況,構(gòu)造出需要編譯的源文件列表,然后分別編譯,并把目標(biāo)代碼鏈接到一起,最終形成可執(zhí)行的二進(jìn)制文件。這樣做帶來的好處就是“自動(dòng)化編譯”,一旦Makefile文件寫好,只需要直接在命令行下執(zhí)行make命令,make命令會(huì)自動(dòng)找當(dāng)前目錄的Makefile文件來執(zhí)行,整個(gè)工程將實(shí)現(xiàn)完全自動(dòng)編譯,極大地提高了軟件開發(fā)的效率。24Makefile文件是make命令規(guī)則的描述腳本,其文件中代碼規(guī)則的格式如下:targets:prerequisitescommands//該行必須以“Tab”鍵開頭或targets:prerequisites;commandscommands252.Make命令GNUmake是一個(gè)解釋Makefile文件指令的命令工具,格式為:make[-ffilename][options][targets]該make命令常用的命令行參數(shù)見表7.8所示。如果直接運(yùn)行make命令而不加可選項(xiàng),則只建立makefile文件中的第一個(gè)目標(biāo)。26make命令的具體工作過程如下:首先在當(dāng)前目錄下依次尋找名為“GNUmakefile”、“makefile”或“Makefile”的文件,找到后將會(huì)尋找Makefile文件中的第一個(gè)目標(biāo)文件targets。如果targets文件不存在,或是targets文件所依賴的后面的.o文件比它還要更新,則make會(huì)執(zhí)行后面的命令來生成目標(biāo)文件targets;否則會(huì)在當(dāng)前文件中尋找.o文件的依賴性,找到后再根據(jù)規(guī)則生成.o文件。之后再用生成的.o文件鏈接生成可執(zhí)行文件。277.2Linux下的C語言編程由于ARM處理器具有較強(qiáng)的運(yùn)算能力,并且與匯編語言、C++語言相比,C語言結(jié)構(gòu)性較好、容易理解且有大量的支持庫(kù),因此基于ARM的程序代碼可以使用匯編語言與C語言混合編程。C語言已經(jīng)成為嵌入式系統(tǒng)程序設(shè)計(jì)中經(jīng)常會(huì)用到的程序設(shè)計(jì)語言。嵌入式C語言程序設(shè)計(jì)就是利用基礎(chǔ)的C語言知識(shí),面向嵌入式軟件工程實(shí)際應(yīng)用進(jìn)行程序設(shè)計(jì)。287.2.1嵌入式C語言程序設(shè)計(jì)Linux系統(tǒng)下的C語言程序設(shè)計(jì)與其他操作系統(tǒng)環(huán)境下的C程序設(shè)計(jì)是一樣的,主要涉及程序編輯器、編譯器、調(diào)試器和項(xiàng)目管理器等四種環(huán)境工具。(1)程序編輯器最早時(shí)Linux系統(tǒng)下并沒有類似于Windows系統(tǒng)下的VisualC++、C++Builder等集成化程序開發(fā)環(huán)境,程序的編輯工具與編譯工作是分開的。程序編輯器主要完成程序代碼的編輯、錄入等功能。Linux系統(tǒng)下C語言編程常用的文本編輯器包括Vi、VIM(ViImproved)以及Emacs、nano等。Vi編輯器功能強(qiáng)大且使用方便,已經(jīng)成為開發(fā)人員常用的程序編輯工具。29(2)編譯器Linux系統(tǒng)下常用的C語言編譯器主要是GNU的Gcc編譯器,其具體編譯過程如圖7.20所示。Gcc編譯器采用命令行交互式編譯方式。與其他一般的編譯工具相比,Gcc編譯器功能強(qiáng)大、執(zhí)行效率高,性能更為優(yōu)越。30(3)調(diào)試器在一個(gè)軟件工程開發(fā)運(yùn)行過程中,如果發(fā)現(xiàn)Bug就需要確定程序出錯(cuò)的位置、原因和參數(shù),因此程序代碼的調(diào)試是必不可少的。Linux下C語言編程常用的調(diào)試器是GDB調(diào)試器。該調(diào)試器在執(zhí)行設(shè)置斷點(diǎn)、單步跟蹤等操作時(shí)使用較為方便、功能更為強(qiáng)大。31(4)項(xiàng)目管理器如果所開發(fā)的嵌入式源程序包括很多源文件,則需要把每個(gè)源文件都編譯成目標(biāo)代碼,最后再鏈接成可執(zhí)行文件,該過程需要手工輸入大量的命令,無疑是非常繁瑣的。幸運(yùn)的是,在Linux下C語言編程過程中,GNU提供了make項(xiàng)目管理器編譯工具及Makefile文件,可以自動(dòng)編譯、管理編譯軟件的內(nèi)容、時(shí)間和方式,以取代復(fù)雜的編譯命令和操作。這些措施使得程序員能夠真正把精力集中在代碼的開發(fā)上而不是源代碼文件的組織上。327.2.2程序的編譯與下載使用RS232串口通過超級(jí)終端向目標(biāo)板燒寫文件是常用一種的燒寫方式。該方式使用loadflash命令通過串口將代碼文件從PC機(jī)下載至ARM開發(fā)平臺(tái)。受制于串口數(shù)據(jù)傳輸速率的限制,串口常用來下載Bootloader(vivi)、操作系統(tǒng)內(nèi)核映像文件(zImage)和根文件系統(tǒng)文件(root.cramfs)等。33另外一種就是PC機(jī)與ARM開發(fā)平臺(tái)之間使用網(wǎng)絡(luò)連接方式下載文件,主要是使用網(wǎng)絡(luò)文件系統(tǒng)NFS協(xié)議的方式,將PC機(jī)上需要下載的代碼所在的共享文件夾安裝(mount)到目標(biāo)板上,之后在目標(biāo)板上就能像訪問本機(jī)目錄一樣方便地訪問PC用戶的共享目錄了。此外,也可以利用FTP文件傳輸協(xié)議(FileTransgerProtocol),通過網(wǎng)絡(luò)接口將應(yīng)用程序的壓縮包下載到ARM開發(fā)平臺(tái)的Flash存儲(chǔ)空間內(nèi)。347.3嵌入式系統(tǒng)開發(fā)軟件與調(diào)試工具開發(fā)人員在進(jìn)行嵌入式系統(tǒng)的工程開發(fā)過程中,選擇一套含有程序文本編輯軟件、編譯工具、鏈接工具、調(diào)試軟件、項(xiàng)目管理和函數(shù)庫(kù)的集成開發(fā)環(huán)境IDE是必不可少的,如ARM公司的ADS(ARMDeveloperSuite)、SDT和RealView等。一般來說,使用集成開發(fā)環(huán)境開發(fā)嵌入式系統(tǒng)工程項(xiàng)目的時(shí)候,程序文本的編輯、編譯、匯編和鏈接過程都是在宿主機(jī)上進(jìn)行的,程序的下載和調(diào)試則需要相應(yīng)的借助仿真調(diào)試工具。357.3.1嵌入式系統(tǒng)調(diào)試方法概述7.3.2常用調(diào)試方式嵌入式系統(tǒng)常用的系統(tǒng)仿真調(diào)試技術(shù)主要包括:模擬器調(diào)試方式、駐留監(jiān)控軟件調(diào)試方式、在線仿真器方式、在線調(diào)試器(如JTAG)方式等。367.3.3ADS集成開發(fā)環(huán)境的使用ADS(ARMDeveloperSuite)集成開發(fā)環(huán)境是ARM公司開發(fā)的新一代ARM核嵌入式微控制器集成開發(fā)工具,用來取代之前推出的ARMSDT工具。ADS目前比較成熟的版本為1.2版,支持C/C++源程序,支持軟件調(diào)試和JTAG硬件仿真調(diào)試,是一種快速高效的嵌入式系統(tǒng)應(yīng)用程序開發(fā)解決方案。37ADS1.2可以安裝在微軟WindowsXP以及RedHatLinux等多款操作系統(tǒng)上,支持ARM7、ARM9、ARM9E、ARM10、StrongARM、Xscale等ARM10之前所有系列的多種類型的處理器內(nèi)核,具有功能強(qiáng)大的系統(tǒng)庫(kù)、編譯效率高等優(yōu)點(diǎn)。ADS主要用于無操作系統(tǒng)(可理解成高級(jí)單片機(jī))的ARM嵌入式系統(tǒng)的開發(fā),有良好的測(cè)試環(huán)境和極佳的偵錯(cuò)性能,有助于開發(fā)人員對(duì)ARM處理器和底層原理的理解。38ADS主要由以下6個(gè)部分組成:(1)CodeWarrior集成開發(fā)環(huán)境(2)AXD調(diào)試器(3)ARM應(yīng)用庫(kù)(4)ARM指令集模擬器ARMulator(5)ARM開發(fā)包(6)代碼生成工具和實(shí)用程序工具397.3.4用AXD進(jìn)行代碼調(diào)試AXD代碼調(diào)試器即ADS軟件中獨(dú)立于CodeWarriorIDE的ARM擴(kuò)展調(diào)試器(ARMeXtendedDebugger),其主窗口如下圖所示。AXD支持硬件仿真或是指令集軟件仿真(ARMulator),包括了ADW/ADU的所有特性。仿真時(shí)AXD可以將映像文件裝載到目標(biāo)板的Flash中,支持單步、全速和斷點(diǎn)調(diào)試,在調(diào)試過程中可以方便地查看寄存器值、變量的值以及某個(gè)內(nèi)存單元的數(shù)值等。40417.4ARM仿真器UArmJtag2.0是博創(chuàng)科技開發(fā)的一款高性能、低成本的ARM仿真調(diào)試工具,支持ADS1.2開發(fā)環(huán)境,支持常見的并口模擬簡(jiǎn)易仿真器,可獨(dú)立實(shí)現(xiàn)開發(fā)板Flash芯片的在線編程和燒寫功能,支持ARM7/ARM9系列嵌入式微處理器的在線調(diào)試。UArmJtag2.0性能穩(wěn)定可靠,在ADS1.2開發(fā)環(huán)境下,使簡(jiǎn)易仿真器在仿真調(diào)試的速度和功能方面達(dá)到甚至超過部分通用的ARM硬件仿真器。427.4.1UArmJtag的JTAG在線仿真調(diào)試7.4.2UP-ICE200仿真器的使用UP-ICE200仿真器是博創(chuàng)科技開發(fā)的一款實(shí)時(shí)硬件仿真器,可用于程序調(diào)試及目標(biāo)板Flash的編程與燒寫。它支持常見的ARM7、ARM9等系列的ARM處理器,內(nèi)置了專門針對(duì)JTAG狀態(tài)機(jī)優(yōu)化的硬件系統(tǒng),完全支持大型程序在ADS1.2和ARMSDT2.51環(huán)境下的JTAG仿真調(diào)試,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論