999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VxWorks操作系統下的延時方法比較

2016-04-01 09:50:01白曉慧
科技視界 2016年7期

白曉慧

【摘 要】比較了基于VxWorks操作系統的多種延時方法,編寫了基于系統時鐘定時器的延時方法的中斷服務程序。該方法精確,可靠。已在工程實踐中,證實了該方法的有效性以及精確性。

【關鍵詞】VxWorks操作系統;延時方法;中斷服務程序

0 引言

VxWorks操作系統是運行在目標機上的高性能、可裁剪的嵌入式實時多任務操作系統,其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天、航海等高精尖技術及實時性要求極高的領域中。

在實際的工程應用中,周期任務,需要有最大的延遲或稱為等待時間。這類任務一般會為BIT檢測任務,鏈路檢測任務,點跡查詢任務等。這段等待時間,在VxWorks操作系統中,可以通過多種延時方法實現。

1 taskDelay法

1.1 原理

taskDelay()是最簡單的延時方法。延時操作提供了一個簡單的任務休眠機制。當一個任務調用taskDelay()后,它將主動放棄CPU一段時間,進入Delay狀態。超時后,這個任務會排到Ready隊列中同優先級隊列的隊尾等待執行。它的單位是tick,tick是VxWorks下的時鐘中斷頻率,可以通過sysClkRateSet()設置,一般在60-100之間。在體系架構、CPU頻率等硬件條件允許的范圍內,這個值可以隨意設置。不過,設置的時候要根據實際需要,而不是每個時間片的間隔越短越好。時間片的數量影響著內核每秒鐘調度的次數,而每次內核調度都需要消耗一定的CPU資源。如果每秒產生的時間片數量過大,內核調度所消耗的CPU資源就會過多,從而影響整機效率。在實際工程中,一般選取每秒tick數為100。可以通過調用taskDelay(0),將CPU交給同等優先級的任務。由于其延時的基本單位為tick,因此,最小延時單位為10ms,延時精度不高。

一般來說,當該任務通過taskDelay()進入睡眠狀態時,若這段時間內被高優先級的任務占有資源時,則一直得等高優先級的任務放棄資源時,這個任務才會獲得資源。

因此,taskDelay()延時很方便,卻需要有一定的風險。實際的延時時間為預設延時時間與排隊等候時間之和,這樣將會導致延時不準確,也對任務的調度安排提出了一個挑戰。這樣看來,時間片延時并不是很準確,其準確程度需要根據任務調度的狀況來決定。如果沒有任務占用CPU,等待的誤差不超過一個時間片的時間長短;如果有高優先級或同優先級的任務不釋放CPU資源,那么等待將直到任務獲取CPU資源才能結束。

1.2 具體實現

STATUS taskDelay(int ticks)

2 看門狗法

2.1 原理

實時系統任務的執行一般都有時限的約束。VxWorks提供了一種看門狗定時器機制,允許用戶編寫的函數與一個特定的時延相聯系。這個時延,也是以tick來計量的。任何一個任務都可以創建Watchdog Timer并指定定時器超時后執行的例程。這個例程是在系統時鐘ISR的上下文中執行,因此它具有與中斷一樣的優先級。Watchdog Timer并非一個周期性的定時器,在超時停止或是中途放棄計時之后,將一直處于靜止狀態。這一點與系統時鐘不同。

看門狗定時器超時之后,指定的函數在中斷級執行。可以模仿VxWorks中對異常處理的方法,采用分步處理的方法:在Watchdog Timer的ISR中所作的知識發送signal,或是釋放信號量等一些簡單的操作,而創建專用的task等待接收這類信號,依據信號的指示再去執行相應的復雜處理。這樣既不會影響系統的實時性,也可以滿足用戶多樣的需求。

這種計時方法可以提供比較精確的計時,其原因在于定時時間一到,所安排的任務會以中斷級別或更高任務優先級執行。作為代價,看門狗定時器比taskDelay()消耗了更多的系統資源,包括存儲空間和處理器時間。事實上,整個處理的過程可能還會增加中斷處理時間。

2.2 具體實現

需要創建看門狗,并啟動。所需函數如下:

int wdCreate()

STATUS wdStart(WDOG_ID wdId, int delay, FUNCPTR pRoutine, int parameter)

3 系統時鐘定時器法

3.1 原理

定時器機制的實現是建立在時鐘基礎上的。VxWorks為支持精確實時控制,利用不同的硬件定時器提供了系統時鐘和系統輔助時鐘。由于這兩個時鐘都以周期時鐘形式運行,因此相關的硬件定時器的運行方式也是周期形式。每經過一個固定的時間間隔,硬件定時器的ISR將通知VxWorks內核。系統時鐘的周期稱為tick,定時的時長只能是tick的整數倍。由于系統時鐘,處理系統級任務,因而時鐘頻率一般不能很高。但是可以設置系統輔助時鐘的tick數,使其達到精確地定時。

硬件中斷處理是實時系統設計的最重要、最關鍵的問題。由于中斷通常對應著外部事件,系統通過中斷與外部事件交互。為了獲得盡可能快的中斷響應事件,VxWorks的中斷處理程序運行在特定的上下文中。因此,中斷處理不會涉及任務任務上下文的交換。

應用程序可以使用VxWorks未用的硬件中斷。VxWorks提供函數intConnect(),它允許指定的C函數與任意中斷相聯系。intConnect()函數原型是:

STATUS intConnect

(VOIDFUNCPTR *vector, VOIDFUNCPTR routine, int parameter)

只要在工程中定義了INCLUDE_SYSCLK_INT,系統就會自動完成對系統時鐘的初始化,也就是在文件usrConfig.c中的usrRoot()函數中實現。考慮到需要根據實際工程中的需求,需要對不同的周期任務設定不同的定時器,因而選擇自己對系統時鐘進行初始化。本文中設置了10個定時器,分別為定時10ms,20ms,50ms,100ms,200ms,500ms,1s,2s,5s,10s。

3.2 具體實現

bool timeInital()

初始化時,首先應該關中斷;其次,調用sysClkConnect()掛接時間中斷服務程序;然后再通過調用sysClkRateSet()來設置系統時鐘每秒中斷的次數;最后再通過調用sysClkEnable()使能對系統時鐘中斷的響應。

中斷服務程序中,需要首先調用tickAnnounce(),來通知內核一個tick事件。本項目工程的中斷服務程序完成的操作包括:(1)獲取并保存系統時鐘ISR要調用的例程;(2)關聯系統時鐘ISR;(3)對中斷次數計數;(4)更新定時器使能標志。

需要說明的是,需要定義定時器的結構。若定義多個定時器,則定時器的結構中需包含編號,定時器的時間間隔數,定時器的時間毫秒數和定時標志。定時標志就是定時時刻到為true,否則為false。若定時時刻到,會通知另一個標志,并重新將定期器定時標志置為false。

4 小結

本文結合工程實踐,比較了基于VxWorks操作系統下的多種延時方法。硬件方面,時鐘芯片會在確定的時間內為系統產生一個中斷。軟件方面,中斷響應的過程也就是計時的過程,不過系統不會為每一次中斷都進行處理,而是經過一定計數之后才會產生一個時間片。計時控制的目的就是在一段時間之后開始特定的工作。taskDelay是延時結束后將任務置于就緒隊列等候調度,直至CPU資源可用時執行被延遲的任務。看門狗法和系統時鐘定時器法是基于硬件時鐘的, 因而可靠性高。對系統時鐘定時器的中斷服務程序進行了修改,達到了定時的目的。

【參考文獻】

[1]Vxworks Programmer Guide, WindRiver[Z]. 1999.

[2]羅國慶.Vxworks與嵌入式軟件開發[M].機械工業出版社,2003,9.

[3]孔祥營,柏桂枝.嵌入式實時操作系統Vxworks及其開發環境Tornado[Z]. 2002, 1.

[責任編輯:楊玉潔]

主站蜘蛛池模板: 亚洲国内精品自在自线官| 精品夜恋影院亚洲欧洲| 九九视频免费在线观看| 日韩激情成人| 欧美性色综合网| 日韩视频精品在线| 男人天堂伊人网| 97影院午夜在线观看视频| 美女一级毛片无遮挡内谢| 成年人免费国产视频| 91丝袜乱伦| 无码精品福利一区二区三区| 国产v精品成人免费视频71pao| 国产视频 第一页| 欧美国产日韩一区二区三区精品影视| 国产特级毛片| 成人在线综合| 欧美午夜在线播放| 国产精品九九视频| 国产第一福利影院| 91偷拍一区| 欧美日韩综合网| 亚洲无码日韩一区| 国产精品手机在线观看你懂的| 成人免费黄色小视频| 亚洲欧洲自拍拍偷午夜色| 色综合婷婷| 婷婷五月在线视频| 久久国产亚洲偷自| 欧洲日本亚洲中文字幕| 国产精彩视频在线观看| 色九九视频| 精品91在线| 色婷婷在线播放| 日本亚洲欧美在线| 欧美日本二区| 欧美在线免费| 久久成人18免费| 久久免费视频6| 亚洲欧美另类久久久精品播放的| 啊嗯不日本网站| 精品三级在线| 在线无码av一区二区三区| 精品日韩亚洲欧美高清a| 国产精品无码一二三视频| 一级毛片在线播放免费观看| 日本国产一区在线观看| 亚洲精品无码久久毛片波多野吉| 国产在线视频欧美亚综合| 欧美第一页在线| 青青网在线国产| 久久精品这里只有精99品| 青青操视频在线| 怡红院美国分院一区二区| 99久久精品久久久久久婷婷| 国产国产人成免费视频77777| 制服丝袜无码每日更新| 日韩精品一区二区深田咏美 | 久久99国产视频| 亚洲国产成人精品一二区| 免费99精品国产自在现线| 欧美成人手机在线观看网址| 亚洲AV无码不卡无码| 四虎永久免费网站| a色毛片免费视频| 日韩在线视频网| 啪啪啪亚洲无码| 国产小视频网站| 亚洲精品国产日韩无码AV永久免费网 | 国产亚洲精品在天天在线麻豆| 18黑白丝水手服自慰喷水网站| 免费观看无遮挡www的小视频| 色综合综合网| 99在线观看免费视频| 成年av福利永久免费观看| 久久青草精品一区二区三区| 国产一区二区三区日韩精品| 亚洲综合18p| 超碰色了色| 国产在线拍偷自揄拍精品| 亚洲成aⅴ人片在线影院八| 国产黄视频网站|