日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]VxWorks是目前應(yīng)用最多的嵌入式實時操作系統(tǒng)之一,廣泛應(yīng)用于工業(yè)控制、醫(yī)療器械、通信、航空航天以及武器裝備等領(lǐng)域。VxWorks是32位實時嵌入式操作系統(tǒng),自20世紀(jì)80年代由

VxWorks是目前應(yīng)用最多的嵌入式實時操作系統(tǒng)之一,廣泛應(yīng)用于工業(yè)控制、醫(yī)療器械、通信、航空航天以及武器裝備等領(lǐng)域。VxWorks是32位實時嵌入式操作系統(tǒng),自20世紀(jì)80年代由風(fēng)河公司推出以來,其良好的實時性、對多任務(wù)的支持、體積精簡、可剪裁等優(yōu)點得到眾多公司、開發(fā)者及用戶的喜愛。

在實時性要求高的應(yīng)用系統(tǒng)中,是經(jīng)常被用到的重要器件。而對于VxWorks操作系統(tǒng)本身來說,并未提供一個通用、高效的定時器組件。文章所提出的定時機(jī)制就是針對這種情況實現(xiàn)的一種通用型定時器組件。

1 VxWorks定時的方法

1.1 使用taskDely函數(shù)

函數(shù)原型為:STATUS taskDelay(int tICks)該函數(shù)提供一種簡單的任務(wù)休眠機(jī)制,常用于需要不精確定時或延時的應(yīng)用中,其定時的單位為tick,默認(rèn)情況下60(ticks)為1s (利用sysClkRateSet函數(shù)可以修改系統(tǒng)默認(rèn)的時鐘速率)。在任務(wù)中調(diào)用taskDelay函數(shù)可以在指定的ticks期間空出CPU的使用權(quán),同時改變該任務(wù)的狀態(tài)為DELAY.由于經(jīng)常受到任務(wù)調(diào)度的影響,該定時機(jī)制并不精確。

1.2 看門狗watchDog

VxWorks提供了一個看門狗定時器(watchDog timer),它由以下四個函數(shù)維護(hù):

wdCreate( ) 創(chuàng)建并初始化一個看門狗定時器;wdDelete( ) 終止并刪除一個看門狗定時器;wdStart( ) 啟動看門狗定時器;wdCANcel( ) 暫停當(dāng)前看門狗定時器運(yùn)行。

利用wdCreate函數(shù),在任何任務(wù)中都可以創(chuàng)建一個看門狗定時器,經(jīng)過設(shè)置的時間段后,實現(xiàn)指定的C函數(shù)。

watchDog定時器作為系統(tǒng)時鐘中斷服務(wù)程序的一部分來維護(hù)。因此看門狗所定時執(zhí)行的程序工作在系統(tǒng)中斷級別具有很高的優(yōu)先級,該程序必須遵守一般ISR程序的規(guī)定,不能使用任何可能被阻塞的程序。文章所介紹的高效定時器就是在看門狗定時器的基礎(chǔ)上設(shè)計的。

1.3 POSIX標(biāo)準(zhǔn)的timer

VxWorks同時也提供IEEE的POSIX 1003.1b標(biāo)準(zhǔn)定時器接口。POSIX標(biāo)準(zhǔn)保證了應(yīng)用程序與操作系統(tǒng)之間接口的簡易性,利用這些接口編程,可以使得應(yīng)用程序很輕松地從一個操作系統(tǒng)移植到另外的操作系統(tǒng)。使用該定時機(jī)制,在指定時間段后,任務(wù)將向自身發(fā)送SIGNAL,該定時器是建立在時鐘和信號之上。POSIX標(biāo)準(zhǔn)的timer定時器常常用來編寫跨平臺、需要在多個操作系統(tǒng)下運(yùn)行、易移植的程序。

2 基于看門狗定的高效定時機(jī)制

2.1 共享看門狗高效定時器

在一些基于嵌入式實時系統(tǒng)的項目中,經(jīng)常使用定時器來實現(xiàn)某一時間段后執(zhí)行某一段程序或函數(shù),而往往計時長度都存在差異,定時器的使用也往往來自不同任務(wù),既要求實時性,又要保證資源竟?fàn)幍挠行蛐?。鑒于這些特點,經(jīng)常采用的一個定時任務(wù)使用一個看門狗定時器的模式已不再適用,如果按照這種模式構(gòu)建定時器機(jī)制,在定時任務(wù)較多的情況下,由于看門狗定時器運(yùn)行在中斷級別,資源消耗就會變得很大,從而對系統(tǒng)的實時性產(chǎn)生影響。

共享看門狗定時器的定時機(jī)制可以解決這種資源嚴(yán)重浪費(fèi)的現(xiàn)象。共享看門狗定時機(jī)制,顧名思義,就是多個定時任務(wù)通過共享同一個看門狗定時器來實現(xiàn)定時操作,其優(yōu)點是資源消耗小、實時性好、無須產(chǎn)生額外的定時任務(wù)。

2.2 定時算法

共享看門狗高效定時器的基本原理是動態(tài)改變看門狗的定時任務(wù)。

如圖1所示,系統(tǒng)中存在A、B、C三個定時任務(wù)。首先A任務(wù)提交一個500ms的定時任務(wù),200ms后B提交一個200ms的定時任務(wù),再100ms后C提交一個150ms的定時任務(wù)。除此之外再無其他計時,A、B、C運(yùn)行情況如圖1所示。

圖1 共享看門狗定時器計時機(jī)制

圖1 共享看門狗定時器計時機(jī)制(參見下頁)定時器A在時間軸50ms處向共享定時器發(fā)起定時申請,共享定時器在其維護(hù)的定時列表中加入A的時延與執(zhí)行程序的函數(shù)指針,并計算出定時器下一執(zhí)行時刻TA(系統(tǒng)運(yùn)行時間加上A的定時時延),此時由于還沒有其他定時器申請定時任務(wù),該列表中只存在A的定時信息。當(dāng)時間軸到達(dá)250ms時,定時器B發(fā)起定時申請,由于定時器A的時延為500ms,B的時延為200ms,也就是說B將在時間軸450ms處執(zhí)行,比A提前了100ms(550ms減去450ms),此時定時列表將完成兩件事情,一是修改下一執(zhí)行時刻TB為系統(tǒng)運(yùn)行時間加上B的時延,二是針對執(zhí)行時刻TA、TB對列表進(jìn)行從小到大的順序排序。此時列表中B為表頭,A在B之后。同樣的道理當(dāng)時間軸到達(dá)350ms時,定時器C發(fā)起定時申請,定時任務(wù)C被加入到定時列表,計算得出TC為系統(tǒng)運(yùn)行時刻加上C的時延,然后依據(jù)TA、TB、TC重新進(jìn)行排序,此時列表順序為B、C、A.當(dāng)時間軸執(zhí)行到450ms時,定時器B的ISR將被執(zhí)行,同時B定時任務(wù)將從定時列表中刪除;同理,500ms、550ms時C任務(wù)與A任務(wù)將分別從列表中刪除。

此時所有定時任務(wù)執(zhí)行結(jié)束,定時列表為空,共享看門狗定時器進(jìn)入休眠狀態(tài)。

2.3 定時器實現(xiàn)

2.3.1 定時器軟件結(jié)構(gòu)

共享定時器軟件結(jié)構(gòu)如圖2所示:

圖2 共享看門狗定時器計時機(jī)制

CWatchDogTimer類完成了對看門狗定時器的封裝,它由一些通用的函數(shù)來維護(hù)一個看門狗定時器。其中Create()函數(shù)用來創(chuàng)建一個看門狗定時器;Delete()用來刪除該定時器;Start()用來啟動定時任務(wù);Cancel()用來暫停定時器工作,此時再使用Start()函數(shù)可以恢復(fù)定時器的運(yùn)行。

TimerInfo數(shù)據(jù)結(jié)構(gòu)由tExe與tInterval兩個屬性構(gòu)成,tExe記錄定時器的執(zhí)行時間,tInterval表示定時器的時間間隔。

TimerList用來維護(hù)多個TimerInfo結(jié)構(gòu)的變量,每個TimerInfo變量記錄一個定時器參數(shù)信息。

CEfficientTimer類完成對多個定時任務(wù)的管理,包括RegistTimer()函數(shù)實現(xiàn)注冊一個定時器;UnRegistTimer()用來注銷一個定時器;ClearTimerList()用來清空定時器列表中所有定時器任務(wù);IsEmpty()用來判斷定時器列表是否為空。

2.3.2 看門狗定時模塊實現(xiàn)

看門狗定時模塊處理流程如圖3所示。

圖3 看門狗定時模塊處理流程

看門狗定時器模塊是共享定時器的基礎(chǔ),它實現(xiàn)了單一定時器的建立、啟動、刪除、取消等功能。首先通過Create()函數(shù)建立一個看門狗定時器,同時設(shè)定定時器時延、定時次數(shù)等參數(shù);然后通過Start()函數(shù)啟動定時器;看門狗程序判斷是否到達(dá)時間間隔,如果到達(dá)則開始執(zhí)行ISR程序,如果沒有到達(dá)則繼續(xù)等待;當(dāng)執(zhí)行完ISR程序后,定時器將判斷當(dāng)前執(zhí)行次數(shù)是否到達(dá)執(zhí)行總次數(shù),如果是則結(jié)束該次定時任務(wù),若不是程序?qū)⑻D(zhuǎn)到重新啟動定時器后依次執(zhí)行。

2.3.3 定時器管理模塊實現(xiàn)

定時器管理模塊是共享定時機(jī)制的核心,用來維護(hù)定時器的注冊、注銷以及定時器鏈表的排序、刪除、清空等操作。

定時器的注冊流程如圖4所示,首先使用RegistTimer()函數(shù)注冊一個新的定時器任務(wù), 并將該定時器的TimerInfo結(jié)構(gòu)插入鏈表中維護(hù),然后針對該結(jié)構(gòu)中的tExe變量對鏈表按照升序排列,執(zhí)行時間最小的將置于表頭;若在插入該定時器任務(wù)之前鏈表中為空,則定時器處于休眠狀態(tài),此時置定時器狀態(tài)為運(yùn)行;若插入前鏈表中已存在其他定時器任務(wù),則無須重啟定時器。

圖4 看門狗定時器注冊流程

定時器的注銷流程如圖5所示, 首先使用UnRegistTimer ()函數(shù)注銷一個已注冊的定時器任務(wù),并將該定時器的TimerInfo結(jié)構(gòu)從鏈表中刪除,然后針對該結(jié)構(gòu)中的tExe變量對鏈表按照升序排列,執(zhí)行時間最小的將置于表頭;若在刪除該定時器任務(wù)之前鏈表中除了該定時任務(wù)沒有其他定時任務(wù)時,則置定時器為休眠狀態(tài);反之,則無須重置定時器狀態(tài)。

圖5 看門狗定時器注銷流程

3 結(jié)束語

共享定時器提供了簡單、高效、通用的定時方法,使用者可以拋開管理諸多看門狗定時器的煩惱,從而專心于系統(tǒng)其他方面的設(shè)計。作為一個通用的系統(tǒng)組件,開發(fā)人員不僅可以直接使用,縮短開發(fā)時間,也可以繼承此定時器類,實現(xiàn)更多豐富的功能,提供了良好的擴(kuò)展性與靈活性。

該機(jī)制在VxWorks的網(wǎng)絡(luò)報文應(yīng)答、設(shè)備狀態(tài)監(jiān)控等方面得到了廣泛應(yīng)用,在有效節(jié)省系統(tǒng)資源的同時提高了系統(tǒng)定時機(jī)制的靈活性。


0次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉