嵌入式操作系統(tǒng)時(shí)間管理的系統(tǒng)_第1頁
嵌入式操作系統(tǒng)時(shí)間管理的系統(tǒng)_第2頁
嵌入式操作系統(tǒng)時(shí)間管理的系統(tǒng)_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式操作系統(tǒng)時(shí)間管理主要內(nèi)容硬件時(shí)鐘設(shè)備時(shí)間管理時(shí)間管理時(shí)間管理一般具有以下功能:維持日歷時(shí)間;任務(wù)有限等待的計(jì)時(shí);軟定時(shí)器的定時(shí)管理;維持系統(tǒng)時(shí)間片輪轉(zhuǎn)調(diào)度。硬件時(shí)鐘設(shè)備大多數(shù)嵌入式系統(tǒng)有兩種時(shí)鐘源:實(shí)時(shí)時(shí)鐘(realtimeclock,RTC)定時(shí)器/計(jì)數(shù)器實(shí)時(shí)時(shí)鐘:一般靠電池供電,即使系統(tǒng)斷電,也可以維持日期和時(shí)間。實(shí)時(shí)時(shí)鐘獨(dú)立于操作系統(tǒng),所以也被稱為硬件時(shí)鐘,為整個(gè)系統(tǒng)提供一個(gè)計(jì)時(shí)標(biāo)準(zhǔn)。定時(shí)器/計(jì)數(shù)器:實(shí)時(shí)內(nèi)核需要一個(gè)定時(shí)器作為系統(tǒng)時(shí)鐘(或稱OS時(shí)鐘),并由實(shí)時(shí)內(nèi)核控制系統(tǒng)時(shí)鐘工作。一般情況下,系統(tǒng)時(shí)鐘的最小粒度是由應(yīng)用和操作系統(tǒng)的特點(diǎn)決定的。硬件時(shí)鐘設(shè)備在不同的操作系統(tǒng)中,實(shí)時(shí)時(shí)鐘

2、和系統(tǒng)時(shí)鐘之間的關(guān)系是不同的。實(shí)時(shí)時(shí)鐘和系統(tǒng)時(shí)鐘之間的關(guān)系通常也被稱作操作系統(tǒng)的時(shí)鐘運(yùn)作機(jī)制。一般來說,實(shí)時(shí)時(shí)鐘是系統(tǒng)時(shí)鐘的時(shí)間基準(zhǔn),實(shí)時(shí)內(nèi)核通過讀取實(shí)時(shí)時(shí)鐘來初始化系統(tǒng)時(shí)鐘,此后二者保持同步運(yùn)行,共同維系系統(tǒng)時(shí)間。系統(tǒng)時(shí)鐘并不是本質(zhì)意義上的時(shí)鐘,只有當(dāng)系統(tǒng)運(yùn)行起來以后才有效,并且由實(shí)時(shí)內(nèi)核完全控制。硬件時(shí)鐘設(shè)備從硬件的角度來看,定時(shí)器(timer)和計(jì)數(shù)器(counter)的概念是可以互換的,其差別主要體現(xiàn)在硬件在特定應(yīng)用中的使用情況。硬件時(shí)鐘設(shè)備在一個(gè)典型的計(jì)數(shù)器中,當(dāng)初始數(shù)據(jù)被裝入后,可以使用一定的方式來啟動(dòng)計(jì)數(shù)器。并且,一個(gè)實(shí)際的計(jì)數(shù)器也需要為處理器提供一種通過數(shù)據(jù)總線讀取計(jì)數(shù)寄存器當(dāng)

3、前值的方式。如果希望定時(shí)器能夠白動(dòng)重新裝入初始數(shù)據(jù),就需要一個(gè)鎖存寄存器,以保存處理器所寫入的計(jì)數(shù)數(shù)據(jù)。當(dāng)處理器向鎖存寄存器寫入數(shù)據(jù)時(shí),計(jì)數(shù)寄存器也被寫入了該數(shù)據(jù)。定時(shí)器溢出時(shí),定時(shí)器產(chǎn)生輸出脈沖,然后白動(dòng)把鎖存寄存器中的數(shù)據(jù)重新裝入到計(jì)數(shù)寄存器。由于鎖存寄存器仍然擁有處理器寫入的數(shù)據(jù),計(jì)數(shù)器將從同樣的初始數(shù)據(jù)重新開始進(jìn)行計(jì)數(shù)。這樣的定時(shí)器能夠產(chǎn)生與時(shí)鐘具有相同精度的規(guī)則性輸出。輸出脈沖產(chǎn)生的周期性中斷可以用于實(shí)時(shí)內(nèi)核需要的tick,或是為UART提供一個(gè)波特率時(shí)鐘,或是驅(qū)動(dòng)需要規(guī)則脈沖的設(shè)備。時(shí)間管理實(shí)時(shí)內(nèi)核的時(shí)間管理以系統(tǒng)時(shí)鐘為基礎(chǔ),系統(tǒng)時(shí)鐘一般定義為整數(shù)或長(zhǎng)整數(shù),提供給應(yīng)用程序所有和時(shí)間

4、有關(guān)的服務(wù)。系統(tǒng)時(shí)鐘是由定時(shí)/計(jì)數(shù)器產(chǎn)生的輸出脈沖觸發(fā)中斷而產(chǎn)生的。輸出脈沖的周期叫做一個(gè)“時(shí)鐘滴答”,也稱為時(shí)標(biāo)、tick。時(shí)間管理tick為系統(tǒng)的相對(duì)時(shí)間單位,也被稱為系統(tǒng)的時(shí)基,來源于定時(shí)器的周期性中斷,一次中斷表示一個(gè)tick。一個(gè)tick與具體時(shí)間的對(duì)應(yīng)關(guān)系可在初始化定時(shí)器時(shí)設(shè)定,也就是說,tick所對(duì)應(yīng)的具體時(shí)間長(zhǎng)度是可以調(diào)整的。一般來說,實(shí)時(shí)內(nèi)核都提供相應(yīng)的調(diào)整機(jī)制,應(yīng)用可以根據(jù)特定情況改變tick對(duì)應(yīng)的時(shí)間長(zhǎng)度。例如,可以使系統(tǒng)5毫秒產(chǎn)生一個(gè)tick,也可以是10毫秒產(chǎn)生一個(gè)tick。tick的大小決定了整個(gè)系統(tǒng)的時(shí)間粒度。時(shí)間管理通常來說,實(shí)時(shí)內(nèi)核提供以下主要與時(shí)間相關(guān)的管理

5、:維持相對(duì)時(shí)間(時(shí)間單位為tick)和日歷時(shí)間;任務(wù)有限等待的計(jì)時(shí);定時(shí)功能;時(shí)間片輪轉(zhuǎn)調(diào)度的計(jì)時(shí)。時(shí)間管理管理功能是通過tick處理程序來實(shí)現(xiàn)的。定時(shí)器發(fā)生中斷后,執(zhí)行系統(tǒng)時(shí)鐘中斷處理程序,并在中斷處理程序中調(diào)用tick處理程序,實(shí)現(xiàn)系統(tǒng)中與時(shí)間和定時(shí)相關(guān)的操作。tick處理程序作為實(shí)時(shí)內(nèi)核的一部分,與具體的定時(shí)器/計(jì)數(shù)器硬件無關(guān),由系統(tǒng)時(shí)鐘中斷處理程序調(diào)用,使實(shí)時(shí)內(nèi)核具有對(duì)不同定時(shí)器/計(jì)數(shù)器硬件的適應(yīng)性。時(shí)間管理相對(duì)時(shí)間即系統(tǒng)時(shí)間,是指相對(duì)于系統(tǒng)啟動(dòng)以來的時(shí)間,以tick為單位,每發(fā)生一個(gè)tick,對(duì)系統(tǒng)的相對(duì)時(shí)間進(jìn)行一次加1操作。實(shí)時(shí)內(nèi)核根據(jù)tick對(duì)應(yīng)的時(shí)間長(zhǎng)度,可以把相對(duì)時(shí)間轉(zhuǎn)換為以

6、秒或是毫秒為單位的其他時(shí)間格式,并可根據(jù)實(shí)時(shí)時(shí)鐘獲得日歷時(shí)間。如果對(duì)任務(wù)設(shè)置了時(shí)間片處理方式,需要在tick處理程序中對(duì)當(dāng)前正在運(yùn)行的任務(wù)的已執(zhí)行時(shí)間進(jìn)行更新,使任務(wù)的已執(zhí)行時(shí)間數(shù)值加1。執(zhí)行加1操作后,如果任務(wù)的已執(zhí)行時(shí)間同任務(wù)的時(shí)間片相等,表示任務(wù)使用完一個(gè)時(shí)間片的執(zhí)行時(shí)間,需要結(jié)束當(dāng)前任務(wù)的執(zhí)行,設(shè)置調(diào)度標(biāo)志,把當(dāng)前任務(wù)放置到就緒鏈。時(shí)間管理時(shí)間等待鏈用來存放需要延遲處理的對(duì)象:產(chǎn)生tick后,需要對(duì)時(shí)間等待鏈中的對(duì)象的剩余等待時(shí)間值進(jìn)行處理。對(duì)于時(shí)間等待的對(duì)象,通常都被組織為差分鏈表的方式進(jìn)行管理,以有效降低時(shí)間等待對(duì)象的管理開銷。在時(shí)間差分鏈中,每個(gè)表項(xiàng)所包含的計(jì)時(shí)值并非當(dāng)前時(shí)刻到表

7、項(xiàng)激活時(shí)刻的絕對(duì)計(jì)數(shù),而是該表項(xiàng)和先于它的所有表項(xiàng)的計(jì)數(shù)值之和。時(shí)間管理對(duì)于差分時(shí)間鏈,系統(tǒng)每接收到一個(gè)tick,就修訂鏈?zhǔn)讓?duì)象的時(shí)間值。如果鏈表對(duì)象的時(shí)間單位為tick,則每發(fā)生一個(gè)tick,鏈?zhǔn)讓?duì)象的時(shí)間值就減1,當(dāng)減到0時(shí),鏈?zhǔn)讓?duì)象就被激活,并從差分時(shí)間鏈中取下來,下一個(gè)對(duì)象又成為鏈?zhǔn)讓?duì)象。時(shí)間管理為實(shí)現(xiàn)定時(shí)功能,實(shí)時(shí)內(nèi)核需要提供軟件定時(shí)器管理功能,應(yīng)用程序可根據(jù)需要?jiǎng)?chuàng)建、使用軟件定時(shí)器。軟件定時(shí)器在創(chuàng)建時(shí),由用戶提供定時(shí)值,當(dāng)軟件定時(shí)器的定時(shí)值減法計(jì)數(shù)為0時(shí),觸發(fā)定時(shí)器服務(wù)例程。用戶可在此例程中完成白己需要的操作。在tick處理程序中需要對(duì)軟件定時(shí)器的定時(shí)值進(jìn)彳減1操作,并在定時(shí)值為0

8、時(shí),觸發(fā)掛接在該定時(shí)器上的服務(wù)例程。時(shí)間管理軟件定時(shí)器可用于實(shí)現(xiàn)“看門狗”(watchdog)。在應(yīng)用的某個(gè)地方進(jìn)行軟件定時(shí)器的停止計(jì)時(shí)操作,確保定時(shí)器在系統(tǒng)正常運(yùn)行的情況下不會(huì)到期,即不會(huì)觸發(fā)定時(shí)器服務(wù)例程;如果某個(gè)時(shí)候系統(tǒng)進(jìn)入了定時(shí)器服務(wù)例程,就表示使用停止計(jì)時(shí)操作的地方?jīng)]有執(zhí)行到,系統(tǒng)出現(xiàn)了錯(cuò)誤。如果需要進(jìn)行任務(wù)的重調(diào)度,tick處理程序還需要調(diào)用調(diào)度程序進(jìn)行任務(wù)調(diào)度處理,使需要執(zhí)行的下一個(gè)任務(wù)獲得對(duì)CPU的控制。時(shí)間管理在時(shí)間方面,內(nèi)核通常提供以下功能:設(shè)置系統(tǒng)時(shí)間。使應(yīng)用能夠設(shè)置當(dāng)前系統(tǒng)的日期和時(shí)間。獲得系統(tǒng)時(shí)間。以日歷時(shí)間、系統(tǒng)啟動(dòng)以來所經(jīng)歷的tick數(shù)等形式獲得當(dāng)前的系統(tǒng)時(shí)間。維

9、護(hù)系統(tǒng)時(shí)基、處理定時(shí)事件。通過時(shí)鐘中斷,維持系統(tǒng)日志時(shí)間、任務(wù)延遲時(shí)間、超時(shí)、單調(diào)速率周期、實(shí)現(xiàn)時(shí)間片等內(nèi)容。時(shí)間管理在定時(shí)方面,內(nèi)核通常提供以下功能:創(chuàng)建軟件定時(shí)器。分配一個(gè)定時(shí)器數(shù)據(jù)結(jié)構(gòu),創(chuàng)建一個(gè)軟件定時(shí)器,并為這個(gè)定時(shí)器分配用戶指定的名字。新創(chuàng)建的定時(shí)器沒有被激活,且沒有相應(yīng)的定時(shí)器服務(wù)例程。軟件定時(shí)器創(chuàng)建成功后,將為該定時(shí)器分配一個(gè)ID標(biāo)識(shí)。時(shí)間管理啟動(dòng)軟件定時(shí)器。使定時(shí)器在給定的時(shí)間過去后,觸發(fā)定時(shí)器服務(wù)例程。對(duì)于軟件定時(shí)器,通常還可以指定是單次觸發(fā)還是周期觸發(fā)。在單次觸發(fā)中,只觸發(fā)執(zhí)行一次掛接的定時(shí)服務(wù)例程;周期觸發(fā)則可以在每次觸發(fā)服務(wù)例程后,經(jīng)過相同的時(shí)間間隔又會(huì)觸發(fā)掛接在該定時(shí)

10、器上的服務(wù)例程。使軟件定時(shí)器停止計(jì)時(shí)。使指定的軟件定時(shí)器停止工作。因此,對(duì)應(yīng)的定時(shí)器服務(wù)例程不再被觸發(fā),除非定時(shí)器被重新激活;時(shí)間管理復(fù)位軟件定時(shí)器。把定時(shí)器的定時(shí)值恢復(fù)到原來設(shè)定的值。刪除軟件定時(shí)器。用來刪除一個(gè)軟件定時(shí)器。如果定時(shí)器還在工作,則其白動(dòng)停止。該定時(shí)器對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)被返回給系統(tǒng)。電子科技大學(xué)嵌入式軟件工程中心三星44B0X(ARM7)芯片中的RTC在系統(tǒng)沒有上電的情況下,可由后備電池供電;可以通過ARM的STRB/LDRB操作獲取RTC以二進(jìn)制編碼的十進(jìn)制數(shù)據(jù)格式向CPU提供8比特?cái)?shù)據(jù)。數(shù)據(jù)包含秒、分、小時(shí)、日、月和年等內(nèi)容;使用一個(gè)外部的32.768KHZ晶振;包括一個(gè)閏年產(chǎn)

11、生器;提供告警中斷或是從掉電模式中喚醒的告警功能:;能夠避免2000年問題(即千年蟲問題);獨(dú)立的電源引腳;能夠?yàn)閷?shí)時(shí)內(nèi)核的系統(tǒng)時(shí)鐘提供毫秒級(jí)的時(shí)間中斷;能夠進(jìn)行循環(huán)復(fù)位。TimeTickGenerator26ClockDividerResetRegisterLeapYearGeneratorSECMINHOURDATEDAYMONYEARAlarmGeneratorControlRegister128Hz1HzRTCRSTTIMETICKRTCCONPMWKUPPWDNALMNTRTCALMTICNTXTALEXTAL一個(gè)簡(jiǎn)單的定時(shí)器/計(jì)數(shù)器包含一個(gè)可裝入的8位計(jì)數(shù)寄存器,一個(gè)時(shí)鐘輸入信號(hào)和

12、一個(gè)輸出脈沖。通過軟件可以把一個(gè)位于0x00和0xFF之間的初始數(shù)據(jù)轉(zhuǎn)入到計(jì)數(shù)寄存器。隨后的每一個(gè)時(shí)鐘輸入信號(hào)都會(huì)導(dǎo)致該值被增加。當(dāng)8位計(jì)數(shù)器溢出時(shí),就產(chǎn)生輸出脈沖。輸出脈沖可以用來觸發(fā)處理器上的一個(gè)中斷,或是在處理器能夠讀取的地方設(shè)置一個(gè)二進(jìn)制位。輸出脈沖是操作系統(tǒng)時(shí)鐘的硬件基礎(chǔ),是因?yàn)檩敵雒}沖將送到中斷控制器上,產(chǎn)生中斷信號(hào),觸發(fā)時(shí)鐘中斷,由時(shí)鐘中斷服務(wù)程序維持操作系統(tǒng)時(shí)鐘的正常工作。為了重啟定時(shí)器,軟件需要重新裝入一個(gè)相同或不同的初始數(shù)據(jù)到計(jì)數(shù)寄存器。voidOSTimeDly(INT16Uticks)(/*AllocatestorageforCPUstatusregister*/#if

13、OS_CRITICAL_METHOD=3OS_CPU_SRcpu_sr;#endifif(ticks0)(/*0meansnodelay!*/OS_ENTER_CRITICAL();if(OSRdyTblOSTCBCur-OSTCBY&=OSTCBCur-OSTCBBitX)=0)(/*Delaycurrenttask*/OSRdyGrp&=OSTCBCur-OSTCBBitY;OSTCBCur-OSTCBDly=ticks;/*LoadticksinTCB*/OS_EXIT_CRITICAL();OS_Sched();/*Findnexttasktorun!*/OSTimeDlyUnderuC/OS-IItheresolutionofadelayisbetween0and1tick.Inotherwords,ifyoutrytodelayforonlyonetick,youcouldendupwithadelaybetween0and1tick.tick處理程序相對(duì)時(shí)間處理任務(wù)時(shí)間片處理時(shí)間等待鏈處理軟件定時(shí)器處理日歷時(shí)間處理任務(wù)調(diào)度處理系統(tǒng)時(shí)鐘中斷服務(wù)程序tick處理程序tick處理程序3A2B5C4D3A2B3C4D2EA對(duì)象需要等待3個(gè)時(shí)間單位就應(yīng)被激活B對(duì)象需要等待5(3+2)個(gè)時(shí)間單位就應(yīng)被激活C對(duì)象需要等待10(3+2+5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論