![VxWorks共享看門狗定時(shí)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view/9961735d495488a1328d605a2cc81927/9961735d495488a1328d605a2cc819271.gif)
![VxWorks共享看門狗定時(shí)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view/9961735d495488a1328d605a2cc81927/9961735d495488a1328d605a2cc819272.gif)
![VxWorks共享看門狗定時(shí)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view/9961735d495488a1328d605a2cc81927/9961735d495488a1328d605a2cc819273.gif)
![VxWorks共享看門狗定時(shí)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view/9961735d495488a1328d605a2cc81927/9961735d495488a1328d605a2cc819274.gif)
![VxWorks共享看門狗定時(shí)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view/9961735d495488a1328d605a2cc81927/9961735d495488a1328d605a2cc819275.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VxWorks共享看門狗定時(shí)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)
0引言
VxWorks是目前應(yīng)用最多的嵌入式實(shí)時(shí)操作系統(tǒng)之一,廣泛應(yīng)用于工業(yè)控制、醫(yī)療器械、通信、航空航天以及武器裝備等領(lǐng)域。VxWorks是32位實(shí)時(shí)嵌入式操作系統(tǒng),自20世紀(jì)80年代由風(fēng)河公司推出以來(lái),其良好的實(shí)時(shí)性、對(duì)多任務(wù)的支持、體積精簡(jiǎn)、可剪裁等優(yōu)點(diǎn)得到眾多公司、開發(fā)者及用戶的喜愛。
在實(shí)時(shí)性要求高的應(yīng)用系統(tǒng)中,定時(shí)器是經(jīng)常被用到的重要器件。而對(duì)于VxWorks操作系統(tǒng)本身來(lái)說(shuō),并未提供一個(gè)通用、高效的定時(shí)器組件。文章所提出的共享看門狗定時(shí)機(jī)制就是針對(duì)這種情況實(shí)現(xiàn)的一種通用型定時(shí)器組件。
1VxWorks定時(shí)的方法
1.1使用taskDely函數(shù)
函數(shù)原型為:STATUStaskDelay(intticks)該函數(shù)提供一種簡(jiǎn)單的任務(wù)休眠機(jī)制,常用于需要不精確定時(shí)或延時(shí)的應(yīng)用中,其定時(shí)的單位為tick,默認(rèn)情況下60(ticks)為1s(利用sysClkRateSet函數(shù)可以修改系統(tǒng)默認(rèn)的時(shí)鐘速率)。在任務(wù)中調(diào)用taskDelay函數(shù)可以在指定的ticks期間空出CPU的使用權(quán),同時(shí)改變?cè)撊蝿?wù)的狀態(tài)為DELAY.由于經(jīng)常受到任務(wù)調(diào)度的影響,該定時(shí)機(jī)制并不精確。
1.2看門狗watchDog
VxWorks提供了一個(gè)看門狗定時(shí)器(watchDogtimer),它由以下四個(gè)函數(shù)維護(hù):
wdCreate()創(chuàng)建并初始化一個(gè)看門狗定時(shí)器;wdDelete()終止并刪除一個(gè)看門狗定時(shí)器;wdStart()啟動(dòng)看門狗定時(shí)器;wdCancel()暫停當(dāng)前看門狗定時(shí)器運(yùn)行。
利用wdCreate函數(shù),在任何任務(wù)中都可以創(chuàng)建一個(gè)看門狗定時(shí)器,經(jīng)過(guò)設(shè)置的時(shí)間段后,實(shí)現(xiàn)指定的C函數(shù)。
watchDog定時(shí)器作為系統(tǒng)時(shí)鐘中斷服務(wù)程序的一部分來(lái)維護(hù)。因此看門狗所定時(shí)執(zhí)行的程序工作在系統(tǒng)中斷級(jí)別具有很高的優(yōu)先級(jí),該程序必須遵守一般ISR程序的規(guī)定,不能使用任何可能被阻塞的程序。文章所介紹的高效定時(shí)器就是在看門狗定時(shí)器的基礎(chǔ)上設(shè)計(jì)的。
1.3POSIX標(biāo)準(zhǔn)的timer
VxWorks同時(shí)也提供IEEE的POSIX1003.1b標(biāo)準(zhǔn)定時(shí)器接口。POSIX標(biāo)準(zhǔn)保證了應(yīng)用程序與操作系統(tǒng)之間接口的簡(jiǎn)易性,利用這些接口編程,可以使得應(yīng)用程序很輕松地從一個(gè)操作系統(tǒng)移植到另外的操作系統(tǒng)。使用該定時(shí)機(jī)制,在指定時(shí)間段后,任務(wù)將向自身發(fā)送SIGNAL,該定時(shí)器是建立在時(shí)鐘和信號(hào)之上。POSIX標(biāo)準(zhǔn)的timer定時(shí)器常常用來(lái)編寫跨平臺(tái)、需要在多個(gè)操作系統(tǒng)下運(yùn)行、易移植的程序。
2基于看門狗定的高效定時(shí)機(jī)制
2.1共享看門狗高效定時(shí)器
在一些基于嵌入式實(shí)時(shí)系統(tǒng)的項(xiàng)目中,經(jīng)常使用定時(shí)器來(lái)實(shí)現(xiàn)某一時(shí)間段后執(zhí)行某一段程序或函數(shù),而往往計(jì)時(shí)長(zhǎng)度都存在差異,定時(shí)器的使用也往往來(lái)自不同任務(wù),既要求實(shí)時(shí)性,又要保證資源竟?fàn)幍挠行蛐?。鑒于這些特點(diǎn),經(jīng)常采用的一個(gè)定時(shí)任務(wù)使用一個(gè)看門狗定時(shí)器的模式已不再適用,如果按照這種模式構(gòu)建定時(shí)器機(jī)制,在定時(shí)任務(wù)較多的情況下,由于看門狗定時(shí)器運(yùn)行在中斷級(jí)別,資源消耗就會(huì)變得很大,從而對(duì)系統(tǒng)的實(shí)時(shí)性產(chǎn)生影響。
共享看門狗定時(shí)器的定時(shí)機(jī)制可以解決這種資源嚴(yán)重浪費(fèi)的現(xiàn)象。共享看門狗定時(shí)機(jī)制,顧名思義,就是多個(gè)定時(shí)任務(wù)通過(guò)共享同一個(gè)看門狗定時(shí)器來(lái)實(shí)現(xiàn)定時(shí)操作,其優(yōu)點(diǎn)是資源消耗小、實(shí)時(shí)性好、無(wú)須產(chǎn)生額外的定時(shí)任務(wù)。
2.2定時(shí)算法
共享看門狗高效定時(shí)器的基本原理是動(dòng)態(tài)改變看門狗的定時(shí)任務(wù)。
如圖1所示,系統(tǒng)中存在A、B、C三個(gè)定時(shí)任務(wù)。首先A任務(wù)提交一個(gè)500ms的定時(shí)任務(wù),200ms后B提交一個(gè)200ms的定時(shí)任務(wù),再100ms后C提交一個(gè)150ms的定時(shí)任務(wù)。除此之外再無(wú)其他計(jì)時(shí),A、B、C運(yùn)行情況如圖1所示。
圖1共享看門狗定時(shí)器計(jì)時(shí)機(jī)制圖1共享看門狗定時(shí)器計(jì)時(shí)機(jī)制(參見下頁(yè))定時(shí)器A在時(shí)間軸50ms處向共享定時(shí)器發(fā)起定時(shí)申請(qǐng),共享定時(shí)器在其維護(hù)的定時(shí)列表中加入A的時(shí)延與執(zhí)行程序的函數(shù)指針,并計(jì)算出定時(shí)器下一執(zhí)行時(shí)刻TA(系統(tǒng)運(yùn)行時(shí)間加上A的定時(shí)時(shí)延),此時(shí)由于還沒(méi)有其他定時(shí)器申請(qǐng)定時(shí)任務(wù),該列表中只存在A的定時(shí)信息。當(dāng)時(shí)間軸到達(dá)250ms時(shí),定時(shí)器B發(fā)起定時(shí)申請(qǐng),由于定時(shí)器A的時(shí)延為500ms,B的時(shí)延為200ms,也就是說(shuō)B將在時(shí)間軸450ms處執(zhí)行,比A提前了100ms(550ms減去450ms),此時(shí)定時(shí)列表將完成兩件事情,一是修改下一執(zhí)行時(shí)刻TB為系統(tǒng)運(yùn)行時(shí)間加上B的時(shí)延,二是針對(duì)執(zhí)行時(shí)刻TA、TB對(duì)列表進(jìn)行從小到大的順序排序。此時(shí)列表中B為表頭,A在B之后。同樣的道理當(dāng)時(shí)間軸到達(dá)350ms時(shí),定時(shí)器C發(fā)起定時(shí)申請(qǐng),定時(shí)任務(wù)C被加入到定時(shí)列表,計(jì)算得出TC為系統(tǒng)運(yùn)行時(shí)刻加上C的時(shí)延,然后依據(jù)TA、TB、TC重新進(jìn)行排序,此時(shí)列表順序?yàn)锽、C、A.當(dāng)時(shí)間軸執(zhí)行到450ms時(shí),定時(shí)器B的ISR將被執(zhí)行,同時(shí)B定時(shí)任務(wù)將從定時(shí)列表中刪除;同理,500ms、550ms時(shí)C任務(wù)與A任務(wù)將分別從列表中刪除。
此時(shí)所有定時(shí)任務(wù)執(zhí)行結(jié)束,定時(shí)列表為空,共享看門狗定時(shí)器進(jìn)入休眠狀態(tài)。
2.3定時(shí)器實(shí)現(xiàn)
2.3.1定時(shí)器軟件結(jié)構(gòu)
共享定時(shí)器軟件結(jié)構(gòu)如圖2所示:
圖2共享看門狗定時(shí)器計(jì)時(shí)機(jī)制
CWatchDogTimer類完成了對(duì)看門狗定時(shí)器的封裝,它由一些通用的函數(shù)來(lái)維護(hù)一個(gè)看門狗定時(shí)器。其中Create()函數(shù)用來(lái)創(chuàng)建一個(gè)看門狗定時(shí)器;Delete()用來(lái)刪除該定時(shí)器;Start()用來(lái)啟動(dòng)定時(shí)任務(wù);Cancel()用來(lái)暫停定時(shí)器工作,此時(shí)再使用Start()函數(shù)可以恢復(fù)定時(shí)器的運(yùn)行。
TimerInfo數(shù)據(jù)結(jié)構(gòu)由tExe與tInterval兩個(gè)屬性構(gòu)成,tExe記錄定時(shí)器的執(zhí)行時(shí)間,tInterval表示定時(shí)器的時(shí)間間隔。
TimerList用來(lái)維護(hù)多個(gè)TimerInfo結(jié)構(gòu)的變量,每個(gè)TimerInfo變量記錄一個(gè)定時(shí)器參數(shù)信息。
CEfficientTimer類完成對(duì)多個(gè)定時(shí)任務(wù)的管理,包括RegistTimer()函數(shù)實(shí)現(xiàn)注冊(cè)一個(gè)定時(shí)器;UnRegistTimer()用來(lái)注銷一個(gè)定時(shí)器;ClearTimerList()用來(lái)清空定時(shí)器列表中所有定時(shí)器任務(wù);IsEmpty()用來(lái)判斷定時(shí)器列表是否為空。
2.3.2看門狗定時(shí)模塊實(shí)現(xiàn)
看門狗定時(shí)模塊處理流程如圖3所示。
圖3看門狗定時(shí)模塊處理流程
看門狗定時(shí)器模塊是共享定時(shí)器的基礎(chǔ),它實(shí)現(xiàn)了單一定時(shí)器的建立、啟動(dòng)、刪除、取消等功能。首先通過(guò)Create()函數(shù)建立一個(gè)看門狗定時(shí)器,同時(shí)設(shè)定定時(shí)器時(shí)延、定時(shí)次數(shù)等參數(shù);然后通過(guò)Start()函數(shù)啟動(dòng)定時(shí)器;看門狗程序判斷是否到達(dá)時(shí)間間隔,如果到達(dá)則開始執(zhí)行ISR程序,如果沒(méi)有到達(dá)則繼續(xù)等待;當(dāng)執(zhí)行完ISR程序后,定時(shí)器將判斷當(dāng)前執(zhí)行次數(shù)是否到達(dá)執(zhí)行總次數(shù),如果是則結(jié)束該次定時(shí)任務(wù),若不是程序?qū)⑻D(zhuǎn)到重新啟動(dòng)定時(shí)器后依次執(zhí)行。
2.3.3定時(shí)器管理模塊實(shí)現(xiàn)
定時(shí)器管理模塊是共享定時(shí)機(jī)制的核心,用來(lái)維護(hù)定時(shí)器的注冊(cè)、注銷以及定時(shí)器鏈表的排序、刪除、清空等操作。
定時(shí)器的注冊(cè)流程如圖4所示,首先使用RegistTimer()函數(shù)注冊(cè)一個(gè)新的定時(shí)器任務(wù),并將該定時(shí)器的TimerInfo結(jié)構(gòu)插入鏈表中維護(hù),然后針對(duì)該結(jié)構(gòu)中的tExe變量對(duì)鏈表按照升序排列,執(zhí)行時(shí)間最小的將置于表頭;若在插入該定時(shí)器任務(wù)之前鏈表中為空,則定時(shí)器處于休眠狀態(tài),此時(shí)置定時(shí)器狀態(tài)為運(yùn)行;若插入前鏈表中已存在其他定時(shí)器任務(wù),則無(wú)須重啟定時(shí)器。
圖4看門狗定時(shí)器注冊(cè)流程
定時(shí)器的注銷流程如圖5所示,首先使用UnRegistTimer()函數(shù)注銷一個(gè)已注冊(cè)的定時(shí)器任務(wù),并將該定時(shí)器的TimerInfo結(jié)構(gòu)從鏈表中刪除,然后針對(duì)該結(jié)構(gòu)中的tExe變量對(duì)鏈表按照升序排列,執(zhí)行時(shí)間最小的將置于表頭;若在刪除該定時(shí)器任務(wù)之前鏈表中除了該定時(shí)任務(wù)沒(méi)有其他定時(shí)任務(wù)時(shí),則置定時(shí)器為休眠狀態(tài);反之,則無(wú)須重置定時(shí)器狀態(tài)。
圖5看門狗定時(shí)器注銷流程
3結(jié)束語(yǔ)
共享定時(shí)器提供了簡(jiǎn)單、高效、通用的定時(shí)方法,使用者可以拋開管理諸多看
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度節(jié)能環(huán)保固定資產(chǎn)借款合同模板3篇
- 二零二五年度碼頭配套設(shè)施建設(shè)與維護(hù)合同3篇
- 二零二五年度高端綠植租賃與擺放服務(wù)合同書3篇
- 二零二五年度太陽(yáng)能光伏發(fā)電系統(tǒng)智能化改造合同
- 二零二五年度小產(chǎn)權(quán)房產(chǎn)買賣合同樣本15篇
- 2025-2030全球醫(yī)用氣泡探測(cè)器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 廣告行業(yè)推廣居間合同
- 音樂(lè)廳裝修改造合同范本
- 心理咨詢師服務(wù)合同及免責(zé)條款
- 實(shí)木家具保養(yǎng)與修復(fù)考核試卷
- 2025-2030年中國(guó)融雪劑行業(yè)運(yùn)行動(dòng)態(tài)及發(fā)展前景預(yù)測(cè)報(bào)告
- 2025保安部年度工作計(jì)劃
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 人居環(huán)境綜合治理項(xiàng)目項(xiàng)目背景及必要性分析
- 招標(biāo)采購(gòu)基礎(chǔ)知識(shí)培訓(xùn)
- 電力系統(tǒng)分布式模型預(yù)測(cè)控制方法綜述與展望
- 2024年注冊(cè)建筑師-二級(jí)注冊(cè)建筑師考試近5年真題附答案
- 2024年貴州省中考理科綜合試卷(含答案)
- 無(wú)人機(jī)技術(shù)與遙感
- 燃煤電廠超低排放煙氣治理工程技術(shù)規(guī)范(HJ 2053-2018)
評(píng)論
0/150
提交評(píng)論