新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > VxWorks下基于看門狗的通用定時(shí)器設(shè)計(jì)

VxWorks下基于看門狗的通用定時(shí)器設(shè)計(jì)

作者: 時(shí)間:2013-05-31 來源:網(wǎng)絡(luò) 收藏

摘要:隨著嵌入式電子產(chǎn)品越來越多的應(yīng)用,實(shí)時(shí)性操作系統(tǒng)VxWorks得到廣泛應(yīng)用,而定時(shí)器正是實(shí)時(shí)性操作系統(tǒng)中不可或缺的重要組件。文章以VxWorks實(shí)時(shí)性操作系統(tǒng)中的看門狗機(jī)制為基礎(chǔ),提出了~種通用性強(qiáng)、效率高并且使用簡單的共享看門狗定時(shí)機(jī)制。
關(guā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)河公司推出以來,其良好的實(shí)時(shí)性、對多任務(wù)的支持、體積精簡、可剪裁等優(yōu)點(diǎn)得到眾多公司、開發(fā)者及用戶的喜愛。
在實(shí)時(shí)性要求高的應(yīng)用系統(tǒng)中,定時(shí)器是經(jīng)常被用到的重要器件。而對于VxWorks操作系統(tǒng)本身來說,并未提供一個(gè)通用、高效的定時(shí)器組件。文章所提出的共享看門狗定時(shí)機(jī)制就是針對這種情況實(shí)現(xiàn)的一種通用型定時(shí)器組件。

1 VxWorks定時(shí)的方法
1.1 使甩taskDely函數(shù)
函數(shù)原型為:STATUS taskDelay(intticks)該函數(shù)提供一種簡單的任務(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í)改變該任務(wù)的狀態(tài)為DELAY。由于經(jīng)常受到任務(wù)調(diào)度的影響,該定時(shí)機(jī)制并不精確。
1.2 看門狗watchDog
VxWorks提供了一個(gè)(watchDog timer),它由以下四個(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)過設(shè)置的時(shí)間段后,實(shí)現(xiàn)指定的C函數(shù)。watchDog定時(shí)器作為系統(tǒng)時(shí)鐘中斷服務(wù)程序的一部分來維護(hù)。因此看門狗所定時(shí)執(zhí)行的程序工作在系統(tǒng)中斷級別具有很高的優(yōu)先級,該程序必須遵守一般ISR程序的規(guī)定,不能使用任何可能被阻塞的程序。文章所介紹的高效定時(shí)器就是在看門狗定時(shí)器的基礎(chǔ)上設(shè)計(jì)的。
1.3 POSIX標(biāo)準(zhǔn)的timer
VxWorks同時(shí)也提供IEEE的POSIX 1003.1b標(biāo)準(zhǔn)定時(shí)器接口。POSIX標(biāo)準(zhǔn)保證了應(yīng)用程序與操作系統(tǒng)之間接口的簡易性,利用這些接口編程,可以使得應(yīng)用程序很輕松地從一個(gè)操作系統(tǒng)移植到另外的操作系統(tǒng)。使用該定時(shí)機(jī)制,在指定時(shí)間段后,任務(wù)將向自身發(fā)送SIGNAL,該定時(shí)器是建立在時(shí)鐘和信號之上。POSIX標(biāo)準(zhǔn)的timer定時(shí)器常常用來編寫跨平臺、需要在多個(gè)操作系統(tǒng)下運(yùn)行、易移植的程序。

2 基于看門狗定的高效定時(shí)機(jī)制
2.1 共享看門狗高效定時(shí)器
在一些基于嵌入式實(shí)時(shí)系統(tǒng)的項(xiàng)目中,經(jīng)常使用定時(shí)器來實(shí)現(xiàn)某一時(shí)間段后執(zhí)行某一段程序或函數(shù),而往往計(jì)時(shí)長度都存在差異,定時(shí)器的使用也往往來自不同任務(wù),既要求實(shí)時(shí)性,又要保證資源競爭的有序性。鑒于這些特點(diǎn),經(jīng)常采用的一個(gè)定時(shí)任務(wù)使用一個(gè)看門狗定時(shí)器的模式已不再適用,如果按照這種模式構(gòu)建定時(shí)器機(jī)制,在定時(shí)任務(wù)較多的情況下,由于看門狗定時(shí)器運(yùn)行在中斷級別,資源消耗就會(huì)變得很大,從而對系統(tǒng)的實(shí)時(shí)性產(chǎn)生影響。
的定時(shí)機(jī)制可以解決這種資源嚴(yán)重浪費(fèi)的現(xiàn)象。共享看門狗定時(shí)機(jī)制,顧名思義,就是多個(gè)定時(shí)任務(wù)通過共享同一個(gè)看門狗定時(shí)器來實(shí)現(xiàn)定時(shí)操作,其優(yōu)點(diǎn)是資源消耗小、實(shí)時(shí)性好、無須產(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ù)。除此之外再無其他計(jì)時(shí),A、B、C運(yùn)行情況如圖1所示。

本文引用地址:http://butianyuan.cn/article/148020.htm

a.jpg


定時(shí)器A在時(shí)間軸50ms處向共享定時(shí)器發(fā)起定時(shí)申請,共享定時(shí)器在其維護(hù)的定時(shí)列表中加入A的時(shí)延與執(zhí)行程序的函數(shù)指針,并計(jì)算出定時(shí)器下一執(zhí)行時(shí)刻TA(系統(tǒng)運(yùn)行時(shí)間加上A的定時(shí)時(shí)延),此時(shí)由于還沒有其他定時(shí)器申請定時(shí)任務(wù),該列表中只存在A的定時(shí)信息。當(dāng)時(shí)間軸到達(dá)250ms時(shí),定時(shí)器B發(fā)起定時(shí)申請,由于定時(shí)器A的時(shí)延為500ms,B的時(shí)延為200ms,也就是說B將在時(shí)間軸450ms處執(zhí)行,比A提前了100 ms(550ms減去450ms),此時(shí)定時(shí)列表將完成兩件事情,一是修改下一執(zhí)行時(shí)刻TB為系統(tǒng)運(yùn)行時(shí)間加上B的時(shí)延,二是針對執(zhí)行時(shí)刻TA、TB對列表進(jìn)行從小到大的順序排序。此時(shí)列表中B為表頭,A在B之后。同樣的道理當(dāng)時(shí)間軸到達(dá)350ms時(shí),定時(shí)器C發(fā)起定時(shí)申請,定時(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、550m時(shí)C任務(wù)與A任務(wù)將分別從列表中刪除。此時(shí)所有定時(shí)任務(wù)執(zhí)行結(jié)束,定時(shí)列表為空,進(jìn)入休眠狀態(tài)。


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉