浙江大學(xué)ARM8課件_第1頁
浙江大學(xué)ARM8課件_第2頁
浙江大學(xué)ARM8課件_第3頁
浙江大學(xué)ARM8課件_第4頁
浙江大學(xué)ARM8課件_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ARM調(diào)試方案

議程基本的調(diào)試需求你需要什么樣的功能?ARM公司的調(diào)試和開發(fā)工具。嵌入式核的調(diào)試實現(xiàn)和利用JTAG的調(diào)試方案停止模式和監(jiān)控模式嵌入式跟蹤使用ETMARM開發(fā)板?基本的調(diào)試需求運行控制設(shè)置數(shù)據(jù)訪問斷點設(shè)置指令斷點代碼的單步執(zhí)行狀態(tài)控制處理器狀態(tài)讀寫寄存器值系統(tǒng)狀態(tài)系統(tǒng)內(nèi)存訪問下載代碼執(zhí)行歷史執(zhí)行跟蹤信息內(nèi)存訪問歷史議程基本的調(diào)試需求你需要什么樣的功能?ARM公司的調(diào)試和開發(fā)組成工具。

嵌入式核調(diào)試實現(xiàn)和利用JTAG的調(diào)試方案停止模式和監(jiān)控模式嵌入式跟蹤整體化和利用ETMARM開發(fā)板嵌入式核調(diào)試5線JTAG被調(diào)試的系統(tǒng)可以是最終的系統(tǒng)!也可以用第三方的協(xié)議轉(zhuǎn)換工具:DataAddressControlBREAKPTCPUARM調(diào)試器和Multi-ICEserver(可以運行在不同的機器上)TAPEmbeddedICELogic-RT嵌入式ICE邏輯兩個觀察點單元可以通過監(jiān)控地址總線,數(shù)據(jù)總線和控制信號來探測觀察點(watchpoint)和斷點。每個單元可以用來提供1觀察點,或1個ROM或RAM里的硬件斷點,或RAM里的多個軟件斷點調(diào)試控制和狀態(tài)寄存器調(diào)試通訊通道注意:ARM10ARM10家族的調(diào)試結(jié)構(gòu)是不同的,雖然原理是一樣的。一共包括8個觀察點單元6個在指令地址總線上2個在數(shù)據(jù)地址總線上這個將在另外一個課題中講解硬件斷點0x8000ARM-0x3

Thumb-0x10xffffffffOpcodefetch0x8000MemoryBreakpointtobesethereControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA[31:0]ComparatorBreakpointD[31:0]當(dāng)內(nèi)核試圖執(zhí)行內(nèi)存里一個特定地址的指令時,將會觸發(fā)一個硬件斷點.這個例子里,當(dāng)要執(zhí)行從地址0x8000索取的指令時,將會觸發(fā)一個硬件斷點.硬件斷點可以在RAM或ROM里設(shè)置.每個觀察點單元可以被用來設(shè)置一個硬件斷點,而且只能一個.軟件斷點Memory0xffffffff0xeeeeeeee0x0OpcodefetchControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA[31:0]ComparatorBreakpointD[31:0]1.Readandstoreopcode2.Write“special”value一個軟件斷點是當(dāng)一個特定的指令從任何地址被預(yù)取時觸發(fā)的一個斷點.這個例子表明了觀察點單元的配置–這對所有的軟件斷點都是一樣的.為了設(shè)置一個斷點,可以使用Multi-ICE在特定的地方寫一個特別的指令.這些只能在RAM里在操作.每一個觀察點單元可以用來設(shè)置無數(shù)的軟件斷點.(The“special”value)命中一個斷點停止模式調(diào)試由標(biāo)準(zhǔn)的EmbeddedICE&EmbeddedICE-RT支持內(nèi)核進入調(diào)試狀態(tài)和停止?fàn)顟B(tài)內(nèi)核與系統(tǒng)的其余部分分離發(fā)出DBGACK信號(調(diào)試器通過JTAG而檢測到)沒有中斷處理,除非調(diào)試器重新啟動執(zhí)行代碼處理器和系統(tǒng)的狀態(tài)可以通過掃描內(nèi)核的指令來察看和修改,緊接著執(zhí)行它們.監(jiān)控模式調(diào)試只由增強功能的EmbeddedICE-RT支持在ARM9E,ARM10和稍后的ARM7TDMI版本上有內(nèi)核通過一個異常中斷而進入常駐軟件監(jiān)控程序可以連續(xù)處理中斷處理器和系統(tǒng)的狀態(tài)可以通過監(jiān)控程序的調(diào)試命令來察看和修改.DebuggerRMHost(RealMonitor.dll)主機RMTargetApplication

Code+Data目標(biāo)板經(jīng)過DCC傳送的實時監(jiān)控協(xié)議監(jiān)控模式調(diào)試主機-在AXD和Multi-ICE之間的控制器實時監(jiān)控協(xié)議

非常簡單的協(xié)議快速–沒有出錯檢查允許后臺命令實際目標(biāo)板小的調(diào)試監(jiān)控程序(<2k代碼字節(jié))集成在目標(biāo)里.以目標(biāo)代碼和原代碼的形式提供調(diào)試通訊通道在ARM和主機調(diào)試器之間通過JTAG的通訊信息是由簡單串行通訊口來實現(xiàn)的.不進入調(diào)試模式和停止程序執(zhí)行.ARM上運行的應(yīng)用代碼經(jīng)過協(xié)處理器14來訪問.三個寄存器通訊數(shù)據(jù)讀寄存器(CommsDataReadRegister)主機到ARM的通訊通訊數(shù)據(jù)寫寄存器(CommsDataWriteRegister)ARM到主機的通訊通訊數(shù)據(jù)控制寄存器(CommsDataControlRegister)提供在ARM和主機之間同步的握手信號位1–寫位-當(dāng)ARM寫入新數(shù)據(jù)時清掉位0–讀位–當(dāng)ARM有新數(shù)據(jù)讀時設(shè)置DCC查詢模式通訊WriteRegisterRW10ControlRegister

Scanchain2;拷貝DCC控制寄存器到r2MRCp14,0,r2,c0,c0,0;檢查DCC控制寄存器的位1TSTr2,#0x2;如果位1清掉了,拷貝數(shù)據(jù)從r1到DCC寫寄存器

MCREQp14,0,r1,c1,c0,0;拷貝DCC控制寄存器到r2MRCp14,0,r2,c0,c0,0;檢查DCC控制寄存器的位0TSTr2,#0x1;如果位0設(shè)置,拷貝數(shù)據(jù)從DCC寫寄存器

到r3

MRCNEp14,0,r3,c1,c0,0調(diào)試器查詢控制寄存器利用掃描鏈2來察看什么時候?qū)懳槐辉O(shè)置,讀位被清掉.接著數(shù)據(jù)可以被掃描進入或者輸出.r1

r3ReadRegister向量捕獲允許沒有處理軟件的異常機制的捕獲在ARM7TDMI上執(zhí)行利用斷點當(dāng)從ROM地址0x0調(diào)試時關(guān)閉在ARM9TDMI/ARM10和后來的版本上執(zhí)行利用專門的硬件只對硬件異常敏感.到向量表里的跳轉(zhuǎn)將不被捕獲留下觀察點單元作為一般使用.一旦有你自己的處理,則關(guān)掉向量捕獲.AXD:sppvector_catch0%RUsPDaifFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x00ARM目標(biāo)上運行的庫代碼,但是任何需要的底層的I/O是由主機提供的.

SWI機制提供的主機訪問.SWI接口是ARMulator,Angel和Multi-ICE通用的組成部分.Semihosted程序?qū)⑦\行在所有的ARM目標(biāo)板上,而不需要移植.需要連接的調(diào)試工具提供這些功能.Semihosting:printf(“hello\n”);:應(yīng)用代碼:SWI:庫代碼SWI服務(wù)程序與主機上運行的調(diào)試器通訊hello通過JTAG的Semihostingspp

semihosting_vector0x8spp

semihosting_enabled1關(guān)掉:sppsemihosting_enabled0Breakpoint0x1080x1040x100…….....SWI,,,,,…......pc=0x8

lr=0x108MOVSpc,lrMulti-ICE仿真的SWI服務(wù)程序0x000x1C0x180x140x100x0C0x080x04ResetUndefinedSoftwareInterruptPrefetchAbortDataAbortReservedIRQFIQspp

semihosting_dcchandler_address0x70000spp

semihosting_vector0x8spp

semihosting_enabled20x000x1C0x180x140x100x0C0x080x040x1080x1040x100…….....SWI,,,,,…......pc=0x8

lr=0x108MOVSpc,lrDCCSemihosting0x70000DCCDCCSemihostingHandlerCode

ResetUndefinedSoftwareInterruptPrefetchAbortDataAbortReservedIRQFIQ直接對EmbeddedICE訪問AXD允許直接對EmbeddedICE邏輯寄存器訪問可以直接通過GUI或如下的命令行察看

REGisters”EICEWatch0”在地址0x4000寫時設(shè)置一個觀察點:

sreg"EICEWatch0|AddressValue"0x00004000

sreg"EICEWatch0|AddressMask"0

sreg"EICEWatch0|DataValue"0

sreg"EICEWatch0|DataMask"0xFFFFFFFF

sreg"EICEWatch0|ControlValue"0x10D

sreg"EICEWatch0|ControlMask"0x0F8注釋:ARM調(diào)試器優(yōu)先與ADS1.1通過協(xié)處理器0訪問EmbeddedICE邏輯寄存器.利用Multi-ICE調(diào)試設(shè)計確信DBGEN是接高電平!Thumb代碼上的軟件斷點需要半字訪問RAM必須總是字/半字/字節(jié)訪問內(nèi)存Multi-ICE可以在1.0V到5.0V時調(diào)試系統(tǒng)自適應(yīng)到目標(biāo)邏輯電壓目標(biāo)板可以在>2.0V時工作在3.3V時,啟動電流是~400mA,一般操作時是~120mAMulti-ICE2.1出售時跟隨一個適當(dāng)?shù)碾娫碝ulti-ICE用20-針連接器多個接地點靈活的時鐘配置可以與不同的時鐘速度設(shè)備同步

長JTAG電纜也可以僅僅利用5個信號來調(diào)試請小心停止系統(tǒng)時鐘復(fù)位考慮…..測驗1) EmbeddedICE邏輯一共包括多少個觀察點單元?

2)ROM上可以設(shè)置多少個斷點?3)利用DCCsemihosting比一般的semihosting有什么優(yōu)勢?4) 為了激活A(yù)RM的調(diào)試功能,DBGEN的信號應(yīng)該怎么連接?5) 為什么Multi-ICE需要半字訪問內(nèi)存?6)EmbeddedICE-RT提供了哪些額外的調(diào)試功能?議程基本調(diào)試需求你需要什么樣的功能?ARM公司的調(diào)試和開發(fā)集成工具。

嵌入式核調(diào)試實現(xiàn)和利用JTAG的調(diào)試方案停止模式和監(jiān)控模式嵌入式跟蹤整體化和利用ETMARM開發(fā)板ETM的機制

(嵌入式跟蹤宏單元)為什么需要實時跟蹤功能?

實時系統(tǒng)不允許停止!傳統(tǒng)的調(diào)試(斷點和單步執(zhí)行)不能滿足必須利用捕獲的實際代碼運行來調(diào)試為什么不用其它的調(diào)試工具而用ETM?EmbeddedICE-RT為調(diào)試通訊通道提供了低的帶寬只適用于程序狀態(tài)信息外部的指令需要寫到通訊通道里獨立的處理器比嵌入式處理器容易調(diào)試一個獨立的處理器,或者:用外部的ICE單元代替處理器,或者用邏輯分析儀探測處理器的信號當(dāng)用嵌入式ARM內(nèi)核時兩個都不可能時怎么辦啊?問題沒有外部可見的片上ASIC總線帶緩存的處理器(例如,ARM920T)帶有與設(shè)備內(nèi)部相連的核/緩存總線ICE版本必須在全速系統(tǒng)速度下運行隨著處理器速度的增加,ICE越來越難.同時必須提供ICE工具(例如,觸發(fā)器)實時跟蹤需要確定的高帶寬的接口

需要地址總線,數(shù)據(jù)總線和控制信號對于ARM7TDMI,有80多個引腳很多ASICs使用相同的處理器核ICE必須為每一個ASIC定做ARM實時跟蹤嵌入式跟蹤單元(ETM)實時指令跟蹤實時數(shù)據(jù)訪問跟蹤包含ICE功能(觸發(fā)和過濾邏輯)MultiTrace跟蹤端口分析器(TPA)深度緩沖器捕獲跟蹤跟蹤調(diào)試工具通過JTAG/Multi-ICE配置ETM跟蹤從ETM/MultiTrace里接收壓縮的跟蹤數(shù)據(jù)利用拷貝原代碼映象來對ETM跟蹤5ARMcoreETM…RAMROM…TAPcontrollerTraceTrigger/Filter9,13,21線跟蹤接口5線JTAG接口串口/以太網(wǎng)口并口運行跟蹤調(diào)試工具的主機(ADS的附件)ETM結(jié)構(gòu)TRACECLK3(ETMv1)4(ETMv2)PIPESTAT[2:0](ETMv1)PIPESTAT[3:0](ETMv2)ARMCore到和來自ARM的數(shù)據(jù)可綜合的ETM塊n=4,8or16跟蹤端口(9,13or21引腳)ETM監(jiān)控器和簡要的ARM總線信號JTAG接口Trigger&FilterLogicPipeline

Status

GenerationTrace

Packet

CapturenTRACEPKT[n-1:0]TRACESYNC(ETMv1only)FIFOTAPController5到ARM的控制來自ARM的控制來自ARM的地址確定的ETM-ARM接口

(只在ETMv2)跟蹤端口說明TRACECLK:與處理器時鐘有相同的頻率PIPESTAT(流水線狀態(tài))

表明:程序流是否有一個相關(guān)聯(lián)的TRACEPKTETM狀態(tài)TRACEPKT(跟蹤包)

可能包含以下一個或多個特征:數(shù)據(jù)地址數(shù)據(jù)值指令地址TRACESYNC(只在ETMv1有):用來在ETM和TPA之間進行同步*可以參考ETM規(guī)范得到更多的信息n=4,8or16跟蹤端口(9,13or21引腳)TRACECLKPIPESTAT[2:0](ETMv1)PIPESTAT[3:0](ETMv2)TRACEPKT[n-1:0]TRACESYNC(ETMv1only)指令跟蹤與指令跟蹤有關(guān)的跟蹤端口部分:PIPESTAT–表明內(nèi)核的流水線狀態(tài)(例如,一個指令是否被執(zhí)行)TRACEPKT–當(dāng)需要時,包含一個跳轉(zhuǎn)目標(biāo)地址以上兩條和代碼映象相結(jié)合,就可以進行調(diào)試了指令跟蹤能夠被高度壓縮

典型地,一個9-位的跟蹤端口可以處理只有指令的跟蹤ETMv1最好的情形:3位的跟蹤信息來跟蹤32位的代碼ETMv2最好的情形:4位的跟蹤信息來跟蹤64位的代碼可以用過濾和觸發(fā)器:只對內(nèi)存地址和/或區(qū)域進行跟蹤只有在特定的ETM順序狀態(tài),計數(shù)器等才進行跟蹤技術(shù)注解:TraceEnable(一個ETM內(nèi)部信號)可以激發(fā)指令跟蹤。它是由觸發(fā)器/過濾器事件和資源控制的。數(shù)據(jù)跟蹤與數(shù)據(jù)跟蹤有關(guān)的跟蹤端口部分:TRACEPKT–包含數(shù)據(jù)地址或數(shù)據(jù)值只有數(shù)據(jù)地址改變的位被廣播(目的是節(jié)省帶寬)每一次跟蹤運行都可以配置ETM:數(shù)據(jù)地址或數(shù)據(jù)值(或兩個都有)讀或?qū)懀ɑ騼蓚€都有)需要一個高的帶寬跟蹤所有數(shù)據(jù)(有程序相關(guān))一個帶有45個字節(jié)FIFO的13-位跟蹤端口可以跟蹤大部分數(shù)據(jù)傳輸如果想跟蹤更多數(shù)據(jù)訪問則需要一個21-位的跟蹤端口過濾器和觸發(fā)器對保持跟蹤數(shù)據(jù)的管理很重要如果在跟蹤信息里有一個FIFO溢出標(biāo)記,那么就表示有部分的跟蹤信息被丟掉推薦使用可編程的過濾器和觸發(fā)邏輯技術(shù)注解:ViewData(一個ETM的內(nèi)部信號)激發(fā)了數(shù)據(jù)跟蹤(如果TraceEnable是假時被忽略掉).它是由觸發(fā)器/過濾事件和資源控制的。跟蹤例子0x1010MOVr0,#30x1014SUBSr0,r0,#10x1018BNE0x10140x101CLDRr1,#0x4000...0x40000x4321{data}IEIEIEr0=2IEIEIEINID...r0=1r0=00x101CLDRr1,#0x4000r1?ID?0x1018BNE0x10140x1010SUBSr0,r0,#10x1018BNE0x10140x1014SUBSr0,r0,#10x1018BNE0x10140x1014SUBSr0,r0,#10x1010MOVr0,#3CorrespondingInstructionnonenonenonenonenonenonenoneTRACEPKTbranchnottakenINCommentPIPESTATr0=0IEdirectbranchtakenIEr0=1IEdirectbranchtakenIEr0=2IEr0=3IE?假設(shè)數(shù)據(jù)跟蹤是激活的(ViewData

被聲明了)基本指令和直接跳轉(zhuǎn)的ETM跟蹤由PIPESTAT=IE或

IN來解碼直接跳轉(zhuǎn)指令跟蹤局限調(diào)試器需要一個代碼的拷貝來做參考自動修改代碼部分將不能和ETM一起工作調(diào)試器必須知道代碼映象的地址映射代碼必須在連接時的地址執(zhí)行帶有固定代碼地址的虛擬內(nèi)存配置是可以的現(xiàn)在不支持動態(tài)重定位代碼請注意“覆蓋”(例如:把代碼調(diào)入片上RAM)如果有很多代碼段運行在相同的地址,跟蹤不能區(qū)分哪一部分在運行。這個例子里,跟蹤解壓是不可能的。解決辦法是給內(nèi)存區(qū)域命名(見下一頁)重疊和命名硬件的命名將每一個段都映射到相同的實際存儲器上用不同的“別名”連接每一個重疊的段執(zhí)行PC值標(biāo)識了哪一個段在執(zhí)行AAAAAAABCBBBBABCCCCCABC外部ROM片上RAM

(命名的)注意:必須用命名的方法設(shè)計存儲器系統(tǒng)AAA16K片上RAM016K32K48K64K16KRAMA[13:0]A[14]A[15]ARMDecoderA[31:16]SELIGNORED控制跟蹤ETM里的資源是可以被過濾和控制的:要跟蹤的指令要跟蹤的數(shù)據(jù)訪問外部跟蹤端口分析器的觸發(fā)ETM的資源由以下部分組成:8個數(shù)據(jù)比較器8對全范圍地址比較器16個地址解碼器4個16-位計數(shù)器1個3-狀態(tài)序列器對于ASIC:最多4用戶輸入,4個用戶輸出一個事件可以由任何兩個資源邏輯組成:例如“withinaddressrange1

AND

datavalueequals0xFFFFFFFF”不同的ETM實現(xiàn)有不同數(shù)量的觸發(fā)資源可以看技術(shù)文檔得到更詳細的資料.哪一個ETM?根據(jù)你的ARM內(nèi)核來選擇ETM7,ETM9,或者ETM10選擇小的,中等的或大的模式選擇跟蹤端口的寬度(4/8/16)如果高的吞吐率(數(shù)據(jù)跟蹤)很重要的時候,可以選擇更寬的端口可以考慮與其它引腳的多路復(fù)用技術(shù)(例如GPIO)調(diào)試時可以使用大的寬的,產(chǎn)品時可以使用簡單的,窄的ETM使用ATPG和插入掃描來對產(chǎn)品進行測試ETM提供了驗證環(huán)境套件下一頁將總結(jié)配置和數(shù)據(jù)的大小ETM配置4/8/164/8/164/8Portwidth4518or209or10FIFODepth60k35k25kGatecount大的中等的小的ETMv1(ETM7,9)603015FIFODepth4/8/164/8/164/8/16Portwidth75k50k35kGatecount大的中等的小的ETMv2(ETM10)16848411682AddrComparators大的中等的小的 功能RangeComparatorsAddrDecodersCountersExt.Outputs124014820DataComparatorsSequencers011Ext.Inputs244實現(xiàn)跟蹤(1)所有需要的信號連接到ARM核沒有緩存的內(nèi)核與地址/數(shù)據(jù)總線和控制信號相連有緩存的內(nèi)核輸出內(nèi)核信號到宏單元邊緣

(例如:ARM920T版本1)ASIC上提供跟蹤端口經(jīng)過基座上輸出的最高頻率是多少?ASIC上要支持多個ARM內(nèi)核嗎?考慮跟蹤端口與別的引腳多路復(fù)用嗎?最終產(chǎn)品中去除以減少引腳數(shù)量嗎?ARM跟蹤捕獲和JTAG的標(biāo)準(zhǔn)連接器38-路的AMPMICTOR連接器(高密度)ARM7TDMIARM7TDMI-SARM720Trev3ARM7EJARM9TDMIARM9E-S/9EJ-SARM920Trev1/922TARM966E-SARM946E-SARM926EJ-SETM7ETM9ARM1020EETM10實現(xiàn)跟蹤(2)對ARM7和ARM9內(nèi)核:CPU時鐘應(yīng)該自由運行(利用nWAIT,而不是時鐘延長),但不是至關(guān)重要的FIFOFULL信號可以被用來停止處理器但是如果FIFO滿了時,將影響實時性能.ETM設(shè)計的目標(biāo)不是低功耗在正常運行操作(沒有跟蹤)模式下,ETM不應(yīng)該被時鐘驅(qū)動ETMCLKPWRDOWN(通過JTAG控制)ARMCLKJTAG更多更詳細的信息請看:ETM規(guī)范ETM7/9/10技術(shù)參考手冊(TRM’s)ETMEN跟蹤捕獲需要一個外部的跟蹤端口分析儀(TPA)來捕獲ETM的輸出TPA’s可以在觸發(fā)事件之前,發(fā)生時或之后來跟蹤TPA’s帶有很深的跟蹤捕獲緩沖器TPA的緩沖器通過很高速度的上行連接(通常是以太網(wǎng))來把數(shù)據(jù)返回給主機PC當(dāng)前可選擇的TPA:Multi-Trace**Agilent邏輯分析儀(需要Multi-ICE或者AgilentJTAG探測器)AgilentARM(E5904B)的跟蹤端口分析儀

Tektronix邏輯分析儀****需要Multi-ICE2.0或更新的Lauterbach也提供跟蹤工具、仿真器、調(diào)試器ARMMultiTrace與Multi-ICE(2.0+)連接一起工作通過以太網(wǎng)跟蹤,通過JTAG口控制運行支持9,13和21引腳的跟蹤端口,頻率可高達200MHz1.0V-3.3V目標(biāo)電壓支持將跟蹤時鐘速率降低一半,在上升和下降沿捕獲數(shù)據(jù)也可以從第三方那獲得跟蹤分

溫馨提示

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

評論

0/150

提交評論