嵌入式系統(tǒng)-Chapter7-時間管理_第1頁
嵌入式系統(tǒng)-Chapter7-時間管理_第2頁
嵌入式系統(tǒng)-Chapter7-時間管理_第3頁
嵌入式系統(tǒng)-Chapter7-時間管理_第4頁
嵌入式系統(tǒng)-Chapter7-時間管理_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心嵌入式系統(tǒng)及應用嵌入式系統(tǒng)及應用電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心第七章第七章 時間管理時間管理電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心主要內容主要內容 硬件時鐘設備硬件時鐘設備 時間管理時間管理電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 時間管理一般具有以下功能:時間管理一般具有以下功能: 維持日歷時間; 任務有限等待的計時; 軟定時器的定時管理; 維持系統(tǒng)時間片輪轉調度。 時間管理時間管理電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心硬件時鐘設備硬件時鐘

2、設備 大多數(shù)嵌入式系統(tǒng)有兩種時鐘源:大多數(shù)嵌入式系統(tǒng)有兩種時鐘源: 實時時鐘(real time clock,RTC) 定時器/計數(shù)器 實時時鐘:實時時鐘: 一般靠電池供電,即使系統(tǒng)斷電,也可以維持日期和時間。 實時時鐘獨立于操作系統(tǒng),所以也被稱為硬件時鐘,為整個系統(tǒng)提供一個計時標準。 定時器定時器/ /計數(shù)器:計數(shù)器: 實時內核需要一個定時器作為系統(tǒng)時鐘(或稱OS時鐘),并由實時內核控制系統(tǒng)時鐘工作。 一般情況下,系統(tǒng)時鐘的最小粒度是由應用和操作系統(tǒng)的特點決定的。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心三星三星44B0X(ARM7)芯片中的)芯片中的RTC 在系統(tǒng)沒有上

3、電的情況下,可由后備電池供電;在系統(tǒng)沒有上電的情況下,可由后備電池供電;可以通過可以通過ARM的的STRB/LDRB操作獲取操作獲取RTC以二進制編碼的十進制數(shù)據(jù)格以二進制編碼的十進制數(shù)據(jù)格式向式向CPU提供提供8比特數(shù)據(jù)。數(shù)據(jù)包含秒、分、小時、日、月和年等內容;比特數(shù)據(jù)。數(shù)據(jù)包含秒、分、小時、日、月和年等內容;使用一個外部的使用一個外部的32.768KHz晶振;晶振; 包括一個閏年產(chǎn)生器;包括一個閏年產(chǎn)生器;提供告警中斷或是從掉電模式中喚醒的告警功能:;提供告警中斷或是從掉電模式中喚醒的告警功能:;能夠避免能夠避免2000年問題(即千年蟲問題);年問題(即千年蟲問題);獨立的電源引腳;獨立的

4、電源引腳;能夠為實時內核的系統(tǒng)時鐘提供毫秒級的時間中斷;能夠為實時內核的系統(tǒng)時鐘提供毫秒級的時間中斷;能夠進行循環(huán)復位。能夠進行循環(huán)復位。 Time Tick Generator26 Clock DividerReset RegisterLeap Year GeneratorSECMINHOURDATEDAYMONYEARAlarm GeneratorControl Register128 Hz1 HzRTCRSTTIME TICKRTCCONPMWKUPPWDNALMNTRTCALMTICNTXTALEXTAL電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心硬件時鐘設備硬件時鐘設

5、備 在不同的操作系統(tǒng)中,在不同的操作系統(tǒng)中,實時時鐘實時時鐘和和系統(tǒng)時鐘系統(tǒng)時鐘之間之間的關系是不同的。的關系是不同的。 實時時鐘和系統(tǒng)時鐘之間的關系通常也被稱作操作系統(tǒng)的時鐘運作機制時鐘運作機制。 一般來說,實時時鐘是系統(tǒng)時鐘的時間基準時間基準,實時內核通過讀取實時時鐘來初始化系統(tǒng)時鐘,此后二者保持同步運行,共同維系系統(tǒng)時間系統(tǒng)時間。 系統(tǒng)時鐘并不是本質意義上的時鐘,只有當系統(tǒng)運行起來以后才有效,并且由實時內核實時內核完全控制。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心硬件時鐘設備硬件時鐘設備 從硬件的角度來看,定時器(從硬件的角度來看,定時器(timertimer)和計

6、)和計數(shù)器(數(shù)器(countercounter)的概念是可以互換的,其)的概念是可以互換的,其差別主要體現(xiàn)在硬件在特定應用中的使用差別主要體現(xiàn)在硬件在特定應用中的使用情況。情況。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 一個簡單的定時器一個簡單的定時器/計數(shù)器計數(shù)器 包含一個可裝入的包含一個可裝入的8位計數(shù)寄存器,一個時鐘輸入信號和一個輸出脈沖。位計數(shù)寄存器,一個時鐘輸入信號和一個輸出脈沖。通過軟件可以把一個位于通過軟件可以把一個位于0 x00和和0 xFF之間的初始數(shù)據(jù)轉入到計數(shù)寄存器。隨后之間的初始數(shù)據(jù)轉入到計數(shù)寄存器。隨后的每一個時鐘輸入信號都會導致該值被增加。的每

7、一個時鐘輸入信號都會導致該值被增加。當當8位計數(shù)器溢出時,就產(chǎn)生輸出脈沖。位計數(shù)器溢出時,就產(chǎn)生輸出脈沖。輸出脈沖可以用來觸發(fā)處理器上的一個中斷,或是在處理器能夠讀取的地方設輸出脈沖可以用來觸發(fā)處理器上的一個中斷,或是在處理器能夠讀取的地方設置一個二進制位。置一個二進制位。輸出脈沖是操作系統(tǒng)時鐘的硬件基礎,是因為輸出脈沖將送到中斷控制器上,輸出脈沖是操作系統(tǒng)時鐘的硬件基礎,是因為輸出脈沖將送到中斷控制器上,產(chǎn)生中斷信號,觸發(fā)時鐘中斷,由時鐘中斷服務程序維持操作系統(tǒng)時鐘的正常工產(chǎn)生中斷信號,觸發(fā)時鐘中斷,由時鐘中斷服務程序維持操作系統(tǒng)時鐘的正常工作。作。為了重啟定時器,軟件需要重新裝入一個相同或

8、不同的初始數(shù)據(jù)到計數(shù)寄存器。為了重啟定時器,軟件需要重新裝入一個相同或不同的初始數(shù)據(jù)到計數(shù)寄存器。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心硬件時鐘設備硬件時鐘設備 在一個典型的計數(shù)器中,當初始數(shù)據(jù)被裝入后,在一個典型的計數(shù)器中,當初始數(shù)據(jù)被裝入后,可以使用一定的方式來可以使用一定的方式來啟動計數(shù)器啟動計數(shù)器。并且,一個實并且,一個實際的計數(shù)器也需要為處理器提供一種通過數(shù)據(jù)總線讀取際的計數(shù)器也需要為處理器提供一種通過數(shù)據(jù)總線讀取計計數(shù)寄存器當前值數(shù)寄存器當前值的方式。的方式。 如果希望定時器能夠自動重新裝入初始數(shù)據(jù),就如果希望定時器能夠自動重新裝入初始數(shù)據(jù),就需要一個需要一

9、個鎖存寄存器鎖存寄存器,以保存處理器所寫入的計,以保存處理器所寫入的計數(shù)數(shù)據(jù)。數(shù)數(shù)據(jù)。 當處理器向鎖存寄存器寫入數(shù)據(jù)時,計數(shù)寄存器也被寫入了該數(shù)據(jù)。 定時器溢出時,定時器產(chǎn)生輸出脈沖輸出脈沖,然后自動把鎖存寄存器中的數(shù)據(jù)重新裝入到計數(shù)寄存器。 由于鎖存寄存器仍然擁有處理器寫入的數(shù)據(jù),計數(shù)器將從同樣的初始數(shù)據(jù)重新開始進行計數(shù)。 這樣的定時器能夠產(chǎn)生與時鐘具有相同精度的規(guī)則性輸出。輸出脈沖產(chǎn)生的周期性中斷周期性中斷可以用于實時內核需要的ticktick,或是為UART提供一個波特率時鐘波特率時鐘,或是驅動需要規(guī)則脈沖的設備。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間

10、管理 實時內核的時間管理以實時內核的時間管理以系統(tǒng)時鐘系統(tǒng)時鐘為基礎,為基礎,系統(tǒng)時鐘一般定義為整數(shù)或長整數(shù),提供系統(tǒng)時鐘一般定義為整數(shù)或長整數(shù),提供給應用程序所有和時間有關的服務。給應用程序所有和時間有關的服務。 系統(tǒng)時鐘系統(tǒng)時鐘是由定時是由定時/ /計數(shù)器產(chǎn)生的輸出脈沖計數(shù)器產(chǎn)生的輸出脈沖觸發(fā)中斷而產(chǎn)生的。觸發(fā)中斷而產(chǎn)生的。 輸出脈沖的周期叫做一個輸出脈沖的周期叫做一個“時鐘滴答時鐘滴答”,也稱為時標、也稱為時標、ticktick。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 ticktick為系統(tǒng)的為系統(tǒng)的相對時間單位相對時間單位,也被稱為系統(tǒng)的,也被稱

11、為系統(tǒng)的時基,來源于定時器的周期性中斷,一次中斷時基,來源于定時器的周期性中斷,一次中斷表示一個表示一個ticktick。 一個一個ticktick與具體時間的對應關系可在初始化定與具體時間的對應關系可在初始化定時器時設定,也就是說,時器時設定,也就是說,ticktick所對應的具體時所對應的具體時間長度是可以調整的。間長度是可以調整的。 一般來說,實時內核都提供相應的一般來說,實時內核都提供相應的調整機制調整機制,應用可以根據(jù)特定情況改變應用可以根據(jù)特定情況改變ticktick對應的時間長對應的時間長度。度。 例如,可以使系統(tǒng)5毫秒產(chǎn)生一個tick,也可以是10毫秒產(chǎn)生一個tick。tick

12、的大小決定了整個系統(tǒng)的時間粒度。電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 通常來說,實時內核提供以下主要與時間通常來說,實時內核提供以下主要與時間相關的管理:相關的管理: 維持相對時間(時間單位為tick)和日歷時間; 任務有限等待的計時; 定時功能; 時間片輪轉調度的計時。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心void OSTimeDly (INT16U ticks)/* Allocate storage for CPU status register */#if OS_CRITICAL_METHOD = 3 OS_CPU_SR c

13、pu_sr;#endif if (ticks 0) /* 0 means no delay! */ OS_ENTER_CRITICAL(); if (OSRdyTblOSTCBCur-OSTCBY &= OSTCBCur-OSTCBBitX) = 0) /* Delay current task */ OSRdyGrp &= OSTCBCur-OSTCBBitY; OSTCBCur-OSTCBDly = ticks; /* Load ticks in TCB */ OS_EXIT_CRITICAL(); OS_Sched(); /* Find next task to run!

14、 */ OSTimeDly Under uC/OS-II電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心OSTickISR()All HPTLow Priority TaskTask calls OSTimeDly(1) here!10 mS5 mSTick interrupt(1)(2)(3)(4)(5)(6)the resolution of a delay is between 0 and 1 tick. In other words, if you try to delay for only one tick, you could end up with a delay b

15、etween 0 and 1 tick. 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 管理功能是通過管理功能是通過ticktick處理程序來實現(xiàn)的。處理程序來實現(xiàn)的。 定時器發(fā)生中斷后,執(zhí)行系統(tǒng)時鐘中斷處理程序,并在中斷處理程序中調用tick處理程序,實現(xiàn)系統(tǒng)中與時間和定時相關的操作。 tick處理程序作為實時內核的一部分,與具體的定時器/計數(shù)器硬件無關,由系統(tǒng)時鐘中斷處理程序調用,使實時內核具有對不同定時器/計數(shù)器硬件的適應性。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心ticktick處理程序處理程序相對時間處理相對時間處理任務時間片處理

16、任務時間片處理時間等待鏈處理時間等待鏈處理軟件定時器處理軟件定時器處理日歷時間處理日歷時間處理任務調度處理任務調度處理系統(tǒng)時鐘中斷服務程序系統(tǒng)時鐘中斷服務程序ticktick處理程序處理程序 tick處理程序處理程序電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心void OSTickISR(void) Save processor registers; Call OSIntEnter() or increment OSIntNesting; if (OSIntNesting = 1) OSTCBCur-OSTCBStkPtr = SP; Call OSTimeTick(); Cl

17、ear interrupting device; Re-enable interrupts (optional); Call OSIntExit(); Restore processor registers; Execute a return from interrupt instruction;Tick Under uC/OS-II電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心void OSTimeTick (void)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif OS_TCB *ptcb; OSTimeTickHook(

18、); (1)#if OS_TIME_GET_SET_EN 0 OS_ENTER_CRITICAL(); OSTime+; (2) OS_EXIT_CRITICAL();#endif if (OSRunning = TRUE) ptcb = OSTCBList; (3) while (ptcb-OSTCBPrio != OS_IDLE_PRIO) (4) OS_ENTER_CRITICAL(); if (ptcb-OSTCBDly != 0) if (-ptcb-OSTCBDly = 0) if (ptcb-OSTCBStat & OS_STAT_SUSPEND) = 0 x00) (5

19、) OSRdyGrp |= ptcb-OSTCBBitY; (6) OSRdyTblptcb-OSTCBY |= ptcb-OSTCBBitX; else ptcb-OSTCBDly = 1; ptcb = ptcb-OSTCBNext; OS_EXIT_CRITICAL(); 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心void TickTask (void *pdata) pdata = pdata; for (;) OSMboxPend(.); /* Wait for signal from Tick ISR */ OSTimeTick(); OS_Sched(); vo

20、id OSTickISR(void) Save processor registers; Call OSIntEnter() or increment OSIntNesting; if (OSIntNesting = 1) OSTCBCur-OSTCBStkPtr = SP; Post a dummy message (e.g. (void *)1) to the tick mailbox; Call OSIntExit(); Restore processor registers; Execute a return from interrupt instruction;Tick Under

21、uC/OS-II based on DSR電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 OSTickISR PROC FAR PUSHA ; Save interrupted tasks context PUSH ES PUSH DS MOV AX, SEG _OSIntNesting ; Reload DS MOV DS, AX INC BYTE PTR _OSIntNesting; Notify uC/OS-II of ISR INT 081H ; Chain into DOSs tick ISR CALL FAR PTR _OSTimeTick ; Process sys

22、tem tick CALL FAR PTR _OSIntExit ; Notify uC/OS-II of end of ISR POP DS ; Restore interrupted tasks context POP ES POPA IRET ; Return to interrupted task_OSTickISR ENDPOSTickISR Under 80 x86電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 相對時間即系統(tǒng)時間相對時間即系統(tǒng)時間,是指相對于系統(tǒng)啟動以來的時,是指相對于系統(tǒng)啟動以來的時間,以間,以ticktick為單位,每發(fā)生一個為單

23、位,每發(fā)生一個ticktick,對系統(tǒng)的相對,對系統(tǒng)的相對時間進行一次加時間進行一次加1 1操作。操作。 實時內核根據(jù)實時內核根據(jù)ticktick對應的時間長度,可以把對應的時間長度,可以把相對時間相對時間轉換為轉換為以秒或是毫秒為單位的其他時間格式以秒或是毫秒為單位的其他時間格式,并可根,并可根據(jù)實時時鐘獲得據(jù)實時時鐘獲得日歷時間日歷時間。 如果對任務設置了時間片處理方式,需要在如果對任務設置了時間片處理方式,需要在ticktick處理處理程序中對當前正在運行的任務的已執(zhí)行時間進行更新,程序中對當前正在運行的任務的已執(zhí)行時間進行更新,使任務的已執(zhí)行時間數(shù)值加使任務的已執(zhí)行時間數(shù)值加1 1。

24、執(zhí)行加1操作后,如果任務的已執(zhí)行時間同任務的時間片相等,表示任務使用完一個時間片的執(zhí)行時間,需要結束當前任務的執(zhí)行,設置調度標志,把當前任務放置到就緒鏈。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 時間等待鏈用來存放需要延遲處理的對時間等待鏈用來存放需要延遲處理的對象:象: 產(chǎn)生tick后,需要對時間等待鏈中的對象的剩余等待時間值進行處理。 對于時間等待的對象,通常都被組織為差分鏈表的方式進行管理,以有效降低時間等待對象的管理開銷。 在時間差分鏈中,每個表項所包含的計時值并非當前時刻到表項激活時刻的絕對計數(shù),而是該表項和先于它的所有表項的計數(shù)值之和。 電子科

25、技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心3A2B5C4D3A2B3C4D2EA對象需要等待對象需要等待3個時間單位就應被激活個時間單位就應被激活B對象需要等待對象需要等待5(3+2)個時間單位就應被激活)個時間單位就應被激活C對象需要等待對象需要等待10(3+2+5)個時間單位就應被激活)個時間單位就應被激活D對象需要等待對象需要等待14(3+2+5+4)個時間單位就應被激活)個時間單位就應被激活7E差分鏈差分鏈由于由于7-3-2=2,而,而7-3-2-5=-3,因此因此E對象需要插入到差分鏈中介于對象對象需要插入到差分鏈中介于對象B和對象和對象C之間的位置。之間的位置。電子科技

26、大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 對于差分時間鏈,系統(tǒng)每接收到一個對于差分時間鏈,系統(tǒng)每接收到一個ticktick,就修訂鏈首對象的時間值。如果鏈表對象就修訂鏈首對象的時間值。如果鏈表對象的時間單位為的時間單位為ticktick,則每發(fā)生一個,則每發(fā)生一個ticktick,鏈首對象的時間值就減鏈首對象的時間值就減1 1,當減到,當減到0 0時,鏈時,鏈首對象就被激活,并從差分時間鏈中取下首對象就被激活,并從差分時間鏈中取下來,下一個對象又成為鏈首對象。來,下一個對象又成為鏈首對象。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理

27、 為實現(xiàn)定時功能,實時內核需要提供為實現(xiàn)定時功能,實時內核需要提供軟件軟件定時器管理定時器管理功能,應用程序可根據(jù)需要創(chuàng)功能,應用程序可根據(jù)需要創(chuàng)建、使用軟件定時器。建、使用軟件定時器。 軟件定時器在創(chuàng)建時,由用戶提供定時值,當軟件定時器的定時值減法計數(shù)為0時,觸發(fā)定時器服務例程。 用戶可在此例程中完成自己需要的操作。 在tick處理程序中需要對軟件定時器的定時值進行減1操作,并在定時值為0時,觸發(fā)掛接在該定時器上的服務例程。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 軟件定時器可用于實現(xiàn)軟件定時器可用于實現(xiàn)“看門狗看門狗”(watchdogwatchdog

28、)。)。 在應用的某個地方進行軟件定時器的停止計時操作,確保定時器在系統(tǒng)正常運行的情況下不會到期,即不會觸發(fā)定時器服務例程; 如果某個時候系統(tǒng)進入了定時器服務例程,就表示使用停止計時操作的地方?jīng)]有執(zhí)行到,系統(tǒng)出現(xiàn)了錯誤。 如果需要進行任務的重調度,如果需要進行任務的重調度,ticktick處理程序還需處理程序還需要調用調度程序進行任務調度處理,使需要執(zhí)行要調用調度程序進行任務調度處理,使需要執(zhí)行的下一個任務獲得對的下一個任務獲得對CPUCPU的控制。的控制。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 在時間方面,內核通常提供以下功能:在時間方面,內核通常提供

29、以下功能: 設置系統(tǒng)時間。使應用能夠設置當前系統(tǒng)的日期和時間。 獲得系統(tǒng)時間。以日歷時間、系統(tǒng)啟動以來所經(jīng)歷的tick數(shù)等形式獲得當前的系統(tǒng)時間。 維護系統(tǒng)時基、處理定時事件。通過時鐘中斷,維持系統(tǒng)日志時間、任務延遲時間、超時、單調速率周期、實現(xiàn)時間片等內容。 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心typedef struct unsigned32 year; /* year*/ unsigned32 month; /* month,1-12 */ unsigned32 day; /* day,1-31 */ unsigned32 hour; /* hour,0-23 *

30、/ unsigned32 minute; /* minute,0-59 */ unsigned32 second; /* second,0-59 */ unsigned32 ticks; /* elapsed ticks between secs */ TOD; /*Time Of Day*/日歷時間數(shù)據(jù)結構日歷時間數(shù)據(jù)結構電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心INT32U OSTimeGet (void) INT32U ticks; OS_ENTER_CRITICAL(); ticks = OSTime; OS_EXIT_CRITICAL(); return (tick

31、s);void OSTimeSet (INT32U ticks) OS_ENTER_CRITICAL(); OSTime = ticks; OS_EXIT_CRITICAL();OSTimeGet and OSTimeSet Under uC/OS-II電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心時間管理時間管理 在定時方面,內核通常提供以下功能:在定時方面,內核通常提供以下功能: 創(chuàng)建軟件定時器。分配一個定時器數(shù)據(jù)結構,創(chuàng)建一個軟件定時器,并為這個定時器分配用戶指定的名字。新創(chuàng)建的定時器沒有被激活,且沒有相應的定時器服務例程。軟件定時器創(chuàng)建成功后,將為該定時器分配一個ID標識。電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心typedef struct timer_class class; timer_state state; timer_time initial; timer_time timeRemain; timer_t

溫馨提示

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

評論

0/150

提交評論