軟件設(shè)計與開發(fā)_第1頁
軟件設(shè)計與開發(fā)_第2頁
軟件設(shè)計與開發(fā)_第3頁
軟件設(shè)計與開發(fā)_第4頁
軟件設(shè)計與開發(fā)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件設(shè)計與開發(fā)硬件軟件成本比較%硬件HW、軟件SW成本比較HWSWt系統(tǒng)的成本軟件取代硬件例子:計算器詞典:金山詞霸VCD播放器電子圖書e_bookPID調(diào)節(jié)器:運放,模擬->數(shù)字化,軟件化第2頁,共62頁,2024年2月25日,星期天開發(fā)工具開發(fā)工具硬件:

TIXDS510(ExtendedDevelopmentSystem)硬件仿真器(Emulator)(JTAG接口:基于掃描的仿真)

DSK初學(xué)者開發(fā)套件(DSPStarterKit)聞亭XDS-EPPDSP開發(fā)系統(tǒng)

(PC機插卡式-EISA,PCI總線,并口式,USB接口式,RS232串口式-PC機通過串口與評估板相連)第3頁,共62頁,2024年2月25日,星期天EVM評估板(Evaluation,DEMO板,實驗板板上資源):DSP芯片(定時器,WD),JTAG接口,A/D轉(zhuǎn)換,PWM輸出,捕獲單元輸入,QEP輸入,并行接口,RS232串口,SPI接口,CAN接口,片外擴展的程序存儲器與數(shù)據(jù)存儲器,鍵盤顯示人機交互接口,電源(如5V轉(zhuǎn)3.3V芯片TITPS77666),有源晶體振蕩器,復(fù)位電路

軟件:集成開發(fā)環(huán)境CC/CCS第4頁,共62頁,2024年2月25日,星期天開發(fā)工具:仿真器第5頁,共62頁,2024年2月25日,星期天開發(fā)工具:評估板(EVM)第6頁,共62頁,2024年2月25日,星期天軟件開發(fā)流程

編輯:生成源程序(*.asm,*.c)與命令文件(*.cmd)編譯與匯編:生成目標(biāo)文件(*.obj為COFF格式)及列表文件(*.lst)連接:生成可執(zhí)行代碼(*.out)及映射文件(*.map)調(diào)試:通過JTAG接口下載到目標(biāo)系統(tǒng)EVM程序固化燒寫到FlashEPROM第7頁,共62頁,2024年2月25日,星期天軟件開發(fā)流程第8頁,共62頁,2024年2月25日,星期天幾種基本文件源文件源程序:

匯編語言文件(*.asm),C文件(*.c)頭文件(*.h):定義寄存器映射地址,用戶自定義的常量等命令文件(*.cmd)實現(xiàn)程序存儲器空間和數(shù)據(jù)存儲器空間的分配庫文件(*.lib)生成文件目標(biāo)文件(*.obj):COFF目標(biāo)文件格式列表文件(*.lst):匯編生成的文件映射文件(*.map):存儲器分配可執(zhí)行代碼文件(*.out)第9頁,共62頁,2024年2月25日,星期天匯編語言命令(偽指令)

段(塊、Section)定義命令共用目標(biāo)文件格式COFF:TI的匯編與聯(lián)接程序建立的目標(biāo)文件采用共用目標(biāo)文件格式COFF(CommonObjectFileFormat)。其核心是程序員在編寫DSP程序時基于代碼塊和數(shù)據(jù)塊的概念,而不是一條條指令,一個個數(shù)據(jù)?;谶@種文件格式編寫的DSP程序,具有可讀性強,可移植性好等特點。便于模塊化編程、管理代碼段和存儲器,即不必為程序代碼或變量指定目標(biāo)地址。第10頁,共62頁,2024年2月25日,星期天段是目標(biāo)文件的最小單位,是在存儲器中占據(jù)連續(xù)空間的代碼和數(shù)據(jù)塊,各段相互獨立。

COFF文件格式包括三個缺省的段:.text段,通常包含可執(zhí)行代碼。.data段,通常包含已初始化的數(shù)據(jù)。.bss段,通常為未初始化的數(shù)據(jù)保留空間。第11頁,共62頁,2024年2月25日,星期天匯編語言命令段可分為已初始化段與未初始化段:已初始化段:包含程序代碼和數(shù)據(jù),.text,.data.sect,.asect匯編命令創(chuàng)建的段;未初始化段:為未初始化的數(shù)據(jù)在存儲器中保留空,.bss,.usect匯編命令創(chuàng)建的段。確定段的地址由連接程序完成。第12頁,共62頁,2024年2月25日,星期天定義已初始化段的命令:.text;建立的段名為.text.data;建立的段名為.data.sect“段名”;自定義段.asect“段名”,地址;建立的段具有絕對地址,一般不用

第13頁,共62頁,2024年2月25日,星期天匯編語言命令定義未初始化段的命令:

.bss符號,字?jǐn)?shù)

.符號usect

“段名”,字?jǐn)?shù)(自定義段)常數(shù)初始化命令

.word

將一個或多個16bit的值,放入當(dāng)前段中的連續(xù)字中

.byte將一個或多個8bit的值,放入當(dāng)前段中的連續(xù)字中

.bes,.space在當(dāng)前段內(nèi)保留特定的bit數(shù)第14頁,共62頁,2024年2月25日,星期天

.float計算單精度32bitIEEE浮點的數(shù)值,并將其存入當(dāng)前段中的兩個連續(xù)的字中

.int將一個或多個16bit的數(shù),放入當(dāng)前段中的連續(xù)字中

.long將32bit的數(shù),放入當(dāng)前段的連續(xù)字中

.string將一個或多個8bit的字符放入當(dāng)前段第15頁,共62頁,2024年2月25日,星期天匯編語言命令例,使用.word,.byte,.float,.int,.string匯編指令的例子。0000aa.byte0AAH,0BBH0001bb0002cccc.word0CCCCH0003dddd.int0DDDDH0004ffff.long0EEEEFFFFH0005eeee00066865.string“help”00076c700008ffa8.float1.9999900093fff第16頁,共62頁,2024年2月25日,星期天匯編語言命令其它命令.include告訴匯編器從其它文件讀入源語句.global定義一個全局符號,在連接時可供其他模塊使用外部符號指在一個模塊中定義,在另一個模塊中使用的符號??墒褂?def、.ref或.global匯編偽指令將符號定義為外部符號。.def在當(dāng)前模塊中定義,可以在別的模塊中使用的符號;.ref在當(dāng)前模塊中引用,但在別的模塊中定義的符號;.global可用于以上任何一種情況.if/.elseif/.else/.endif條件匯編命令.set和.equ為一個符號設(shè)置一個常數(shù)值。該符號存在符號表中,不能再定義.end匯編結(jié)束宏定義、宏指令、宏展開第17頁,共62頁,2024年2月25日,星期天匯編語言程序舉例1指示燈閃爍程序;FileName:xfdemo.asm;本程序使XfLED閃爍

global_c_int0;全局符號

.text;text段包含可執(zhí)行代碼_c_int0:;_c_int0符號用于CodeComposerC規(guī)范

clrcxf;xf=0,LED亮

setcxf;xf=1,LED滅,用于單步調(diào)試_start:clrcxf;LED亮

calldelay;調(diào)用延時程序

setcxf;LED滅

calldelay;延時

b_start;循環(huán)閃爍第18頁,共62頁,2024年2月25日,星期天匯編語言程序舉例1;延時子程序delay: larar2,#10h;延時常數(shù)delay0: nop larar1,#0ffffh nopdelay1: nop mar*,ar1;ar1設(shè)為當(dāng)前ar banzdelay1 mar*,ar2 banzdelay0 retend;匯編語言程序結(jié)束第19頁,共62頁,2024年2月25日,星期天匯編語言程序舉例2求W=5X+10Y-3Z。;File:aa.asm;W=5X+10Y-3Zx.set2f96hy.set18f5hz.set053ahw.usect“sum”,2;定義一個段sum,符號w占2個字

.text;建立一個段為.text的代碼段START:MAR*,AR2;AR2為當(dāng)前AR LARAR2,#x;x的地址

LT*;T←x第20頁,共62頁,2024年2月25日,星期天匯編語言程序舉例2MPY#5;P←5xLARAR2,#y;y的地址LTP*;y→T,P→ACCMPY#10LARAR2,#zLTA*;z→T,ACC+P→ACCLARAR2,#wspm0;SACL*+要加入rpt#2;或mpy#3;SACH*subar2;spac;.end第21頁,共62頁,2024年2月25日,星期天連接器命令文件連接器命令文件(*.cmd):該文件實現(xiàn)對程序存儲器和數(shù)據(jù)存儲器空間的分配。該文件常用的偽指令有MEMORY和SECTIONS。

MEMORY偽指令定義目標(biāo)系統(tǒng)中可以使用的存儲器范圍,每個存儲器范圍具有名字、起始地址和長度。一般形式為

MEMORY{

PAGE0:name:origin=constant,length=constant;

PAGEn:name:origin=constant,length=constant;}PAGEn:定義存儲器空間。n=0-254.通常PAGE0定義程序存儲器,

PAGE1定義數(shù)據(jù)存儲器。name:

存儲器范圍的名字??梢允?-8個字符。origin或o:存儲器范圍的起始地址。length或l:存儲器范圍的長度。第22頁,共62頁,2024年2月25日,星期天連接器命令文件SECTIONS定義段。一般形式為SECTIONS{name:[property,property,…]name:[property,property,…]

…}在段名之后是是特性列表,定義段的內(nèi)容以及是怎樣分配的。段的可能的特性是:裝載位置、運行位置、輸入段、段類型等。第23頁,共62頁,2024年2月25日,星期天連接器命令文件例1命令文件/*Name:xfdemo.cmd*//*連接器命令,存儲器分配*/ xfdemo.obj -oxfdemo.out/* 存儲器分配*/MEMORY{ PAGE0: /*程序存儲器*/ PM_F:origin=8000hlength=7e00h /*PAGE1: /*數(shù)據(jù)存儲器*/}SECTIONS{ .text: {}>PM_F PAGE0}第24頁,共62頁,2024年2月25日,星期天連接器命令文件例2命令文件

**//*LINKERCOMMANDFILE-MEMORYSPECIFICATION*//*FORMSK243BOARD*//**//*Name:pmsms.cmdFile*//**//*LINKERDIRECTIVES連接命令*//**//**/-c/*LINKUSINGCCONVENTIONS用C規(guī)范連接*/"pmsms.obj"-lc:\2xxtool\rts2xx.lib/*RUN-TIMESUPPORT-STACKMODEL*/-l第25頁,共62頁,2024年2月25日,星期天連接器命令文件例2..\obj\logdata.obj..\obj\pi_id_a.obj..\obj\pi_iq_a.obj..\obj\pi_omg_a.obj..\obj\refer.obj-mpmsms.map/*映射文件*/-opmsms.out/*輸出可執(zhí)行文件*//**//*MEMORYALLOCATION存儲器分配*//**/MEMORY{PAGE0:/*Programmemory程序存儲器*/FLASH:origin=0,length=0x2000/*on-chipFlash8K字*/PM_F:o=8000H,l=7e00H/*externalSRAMPM擴展*/第26頁,共62頁,2024年2月25日,星期天連接器命令文件例2

B0PM_F:o=0xfe00,l=0x100/*B0PM*/

PAGE1:/*Datamemory數(shù)據(jù)存儲器*/REGS:o=0,l=0x60/*memory-mapedregs.*/INTVEC:o=0x60,l=0x20/*DMB2int.vectors*/B0DM_F:o=0x200,l=0x100/*DMB0free*/M_VARS:o=0x300,l=0x60/*DMB1usedbymonitor*/SPS:o=0x360,l=0x20/*stackassignedbymonitor*/B1_F:o=0x380,l=0x20/*DMB1free*/DM_F:o=8000H,l=2000H/*externalSRAMDMfree*/BMCK:o=0xa000,l=0x2000/*MCK_DEMOVariables*/B_SAV:o=0xc000,l=0x2000/*SAVEDRESULTSBUFFER*/REF:o=0xe000,l=0x200/*externalDMfree*/}第27頁,共62頁,2024年2月25日,星期天連接器命令文件例2SECTIONS/*Linkerdirectivetospecifysectionplacementinthememorymap*/{/*vectors:{}>FLASHPAGE0/*INTERRRUPTVECTORTABLE00-3FH*//*CODE0040-1FFFH*/vectors:{}>PM_FPAGE0.text:{}>PM_FPAGE0/*CODE:8000~FE00*/.cinit:{}>PM_FPAGE0/*._c_int0:{}>PM_FPAGE0*//*.switch:{}>PM_FPAGE0*/.const:{}>PM_FPAGE0.data:{}>PM_FPAGE0/*.sysmem{}>B1_FPAGE1*/RAM_B11:{}>B1_F1PAGE1

第28頁,共62頁,2024年2月25日,星期天連接器命令文件例2

/*.bss:{}>B1_FPAGE1*/MCK_DEMO:{}>BMCKPAGE1RES:{}>B_SAVPAGE1 .stack:{}>B1_FPAGE1/*user'sstack*/LOGGER:{}>B_SAVPAGE1/*采集記錄*/REFER:{}>REFPAGE1/*指令參考值給定*/}第29頁,共62頁,2024年2月25日,星期天C語言程序設(shè)計C語言程序設(shè)計優(yōu)缺點C24xC語言基礎(chǔ)存儲器模式寄存器規(guī)則中斷處理匯編與C語言混合編程C程序舉例第30頁,共62頁,2024年2月25日,星期天C語言程序設(shè)計優(yōu)缺點匯編語言程序設(shè)計:

執(zhí)行速度快開發(fā)周期長、移植性和可讀性差C語言程序設(shè)計:

開發(fā)周期短、移植性和可讀性好執(zhí)行速度可以滿足要求第31頁,共62頁,2024年2月25日,星期天C語言基礎(chǔ):段C24x將存儲器處理為程序存儲器和數(shù)據(jù)存儲器兩個線性塊。程序存儲器包含可執(zhí)行代碼;數(shù)據(jù)存儲器主要包含外部變量、靜態(tài)變量和系統(tǒng)堆棧。編譯器的任務(wù)是產(chǎn)生可重定位的代碼,允許鏈接器將代碼和數(shù)據(jù)定位進(jìn)合適的存儲空間。C編譯器對C語言編譯后除了生成3個基本段,即.text、.data、.bss外,還生成.cinit、.const、.stack、.sysmem段。第32頁,共62頁,2024年2月25日,星期天C語言基礎(chǔ):C系統(tǒng)堆棧:.stack不同于DSP匯編指令定義的堆棧。DSP匯編程序中要將堆棧指針SP指向一塊RAM,用于保存中斷、調(diào)用時的返回地址,存放PUSH指令的壓棧內(nèi)容。.stack定義的系統(tǒng)堆棧實現(xiàn)的功能是保護(hù)函數(shù)的返回地址,分配局部變量,在調(diào)用函數(shù)時用于傳遞參數(shù),保護(hù)臨時結(jié)果。.stack定義的段大?。ǘ褩4笮。┛捎面溄悠鬟x項-stacksize設(shè)定,鏈接器還產(chǎn)生一個全局符號__STACK_SIZE,并賦給它等于堆棧長度的值,以字為單位,缺省值為1K。第33頁,共62頁,2024年2月25日,星期天C程序設(shè)計:存儲器分配(1)運行時間支持函數(shù)。(2)動態(tài)存儲器分配。(3)靜態(tài)和全局變量的存儲器分配。(4)位域/結(jié)構(gòu)的對準(zhǔn)。第34頁,共62頁,2024年2月25日,星期天C程序設(shè)計:寄存器規(guī)則寄存器規(guī)則明確了編譯器如何使用寄存器以及在函數(shù)調(diào)用過程中如何保護(hù)寄存器。(1)輔助寄存器(2)堆棧指針SP(3)ARP(4)在默認(rèn)情況下,編譯器總是假定ST0中的OVM在硬件復(fù)位時被清0。若在匯編代碼中對OVM置位為1,返回到C環(huán)境時必須復(fù)位。(5)寄存器變量(可以加快變量訪問速度)第35頁,共62頁,2024年2月25日,星期天寄存器規(guī)則寄存器用法調(diào)用時是否保存AR0幀指針是AR1堆棧指針是AR2-AR5局部變量指針否AR3-AR5表達(dá)式分析否AR6-AR7寄存器變量是ACC表達(dá)式分析/返回值否P表達(dá)式分析否T表達(dá)式分析否第36頁,共62頁,2024年2月25日,星期天域名稱預(yù)設(shè)值修改ARP輔助寄存器指針1是C進(jìn)位位-是DP數(shù)據(jù)頁指針-是OV溢出位-是OVM溢出模式0否PM成績移位模式0否SXM符號擴展位-是TC測試控制位-是第37頁,共62頁,2024年2月25日,星期天C語言程序設(shè)計:中斷處理

(1)中斷的使能和屏蔽必須由程序員自己來設(shè)置。(2)中斷程序沒有參數(shù)傳遞,即使說明,也會被忽略(3)中斷處理程序不能被正常的C程序調(diào)用。(4)為了使中斷程序與中斷一致,在相應(yīng)的中斷矢量中必須放置一條轉(zhuǎn)移指令,可以用.sect匯編偽指令建立一個簡單的跳轉(zhuǎn)指令表來完成此項功能。第38頁,共62頁,2024年2月25日,星期天(5)在匯編語言中,注意在符號名前面加上一個下劃線,例如c_int00記為_c_int00。(6)中斷程序使用的所有寄存器,包括狀態(tài)寄存器和程序中調(diào)用函數(shù)使用的寄存器都必須予以保護(hù)。(7)C24xC編譯器將C語言進(jìn)行了擴展,中斷可以利用interrupt關(guān)鍵字由C/C++函數(shù)直接處理。第39頁,共62頁,2024年2月25日,星期天匯編與C語言混合編程獨立的C模塊和匯編模塊接口獨立編寫C程序與匯編程序,分別編譯、匯編生成目標(biāo)代碼模塊,然后用連接器連接起來。從C程序中訪問匯編程序變量在C程序中直接嵌入?yún)R編語句第40頁,共62頁,2024年2月25日,星期天訪問I/O端口空間關(guān)鍵字ioport使DSP能夠訪問I/O端口空間。關(guān)鍵字格式為:ioporttypeporthex_num其中,關(guān)鍵字ioport指明這是一個端口變量,變量類型必須為charshortint或unsigned,porthex_num為16進(jìn)制端口號示例:ioportunsignedport10;

/*端口號為10h的I/O端口變量*/intfunc(){……port10=a;……b=port10;……}第41頁,共62頁,2024年2月25日,星期天獨立的C模塊和匯編模塊接口在編寫?yīng)毩⒌膮R編程序時,必須注意以下幾點:(1)不論是用C語言編寫的函數(shù)還是用匯編語言編寫的函數(shù),都必須遵循寄存器使用規(guī)則。(2)必須保護(hù)函數(shù)要用到的幾個特定寄存器。(3)中斷程序必須保護(hù)所有用到的寄存器。(4)從匯編程序調(diào)用C函數(shù)時,第一個參數(shù)(最左邊)必須放入累加器A中,剩下的參數(shù)按自右向左的順序壓入堆棧。(5)調(diào)用C函數(shù)時,注意C函數(shù)只保護(hù)了幾個特定的寄存器,而其他是可以自由使用的。第42頁,共62頁,2024年2月25日,星期天獨立的C模塊和匯編模塊接口(6)長整型和浮點數(shù)在存儲器中存放的順序是低位字在高地址,高位字在低地址。

(7)如果函數(shù)有返回值,返回值存放在累加器A中。(8)匯編語言模塊不能改變由C模塊產(chǎn)生的.cinit段,如果改變其內(nèi)容將會引起不可預(yù)測的后果。(9)編譯器在所有標(biāo)識符(函數(shù)名、變量名等)前加下劃線“_”。

(10)任何在匯編程序中定義的對象或函數(shù),如果需要在C程序中訪問或調(diào)用,則必須用匯編指令.global定義。第43頁,共62頁,2024年2月25日,星期天從C程序中訪問匯編程序變量從C程序中訪問在匯編程序中定義的變量或常數(shù),可以分為以下3種情況:(1)訪問在.bss塊中定義的變量;(2)對于訪問不在.bss塊中定義的變量;(3)對于在匯編程序中用.set和.global偽指令定義的全局常數(shù),也可以使用特殊的操作從C程序中訪問它們。第44頁,共62頁,2024年2月25日,星期天在C程序中直接嵌入?yún)R編語句在C程序中嵌入?yún)R編語句是一種直接的C模塊和匯編模塊接口方法。采用這種方法一方面可以在C程序中實現(xiàn)用C語言難以實現(xiàn)的一些硬件控制功能。另一方面,也可以用這種方法在C程序中的關(guān)鍵部分用匯編語句代替C語句以優(yōu)化程序。采用這種方法的一個缺點是它比較容易破壞C環(huán)境,因為C編譯器在編譯嵌入了匯編語句的C程序時并不檢查或分析所嵌入的匯編語句。直接在C語言程序中相應(yīng)位置嵌入?yún)R編語句,只需在匯編語句加上雙引號和小括號,前面加ASM標(biāo)識符號。即,

ASM

(“匯編語句”)例如ASM(“LACC#10H”)第45頁,共62頁,2024年2月25日,星期天C程序舉例1-Lab0102intx,y,z;main(){

x=1;y=2; while(1){ z=x+y; //x++;y++;}}第46頁,共62頁,2024年2月25日,星期天C程序舉例2-Lab0301-Led:4個指示燈顯示#include"DSP281x_Device.h"http://DSP281xHeaderfileIncludeFile#include"DSP281x_Examples.h"http://DSP281xExamplesIncludeFile#include"f2812a.h"http://定義指示燈寄存器地址和寄存器類型#defineLBDS(*((unsignedint*)0xc0000))voidDelay(unsignedintnDelay); //延時子程序main(){ unsignedintuLED[4]={1,2,4,8};//控制字0001,0010,0100,1000 inti; InitSysCtrl(); //初始化DSP運行時鐘

while(1) {第47頁,共62頁,2024年2月25日,星期天C程序舉例2for(i=0;i<4;i++) { LBDS=uLED[i]; //正向順序送控制字

Delay(256); //延時

}for(i=3;i>=0;i--) { LBDS=uLED[i]; //反向順序送控制字

Delay(256); //延時

} }}第48頁,共62頁,2024年2月25日,星期天C程序舉例2voidDelay(unsignedintnDelay)//延時程序{ intii,jj,kk=0; for(ii=0;ii<nDelay;ii++) { for(jj=0;jj<512;jj++) { kk++; } }}第49頁,共62頁,2024年2月25日,星期天C程序舉例3-Lab0302-Dip

開關(guān)狀態(tài)顯示#include"DSP281x_Device.h"http://DSP281xHeaderfileIncludeFile#include"DSP281x_Examples.h"http://DSP281xExamplesIncludeFile#include"f2812a.h"http://定義指示燈控制寄存器地址和寄存器類型#defineLBDS(*((unsignedint*)0xc0000))//定義撥碼開關(guān)控制寄存器地址和寄存器類型#defineDIPS(*(unsignedint*)0xc0001)main(){ InitSysCtrl(); //初始化DSP運行時鐘

while(1) { LBDS=DIPS; //讀取撥碼開關(guān)狀態(tài)直接送指示燈顯示

}} 第50頁,共62頁,2024年2月25日,星期天集成開發(fā)環(huán)境CCSCodeComposerStudio(CC,CCS)軟件安裝與設(shè)置集成環(huán)境與使用(主要菜單與功能)調(diào)試功能與實例第51頁,共62頁,2024年2月25日,星期天CCS主要工具1.建立源程序2.C編譯器(CCompiler)3.匯編

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論