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.

[責任編輯:楊玉潔]

主站蜘蛛池模板: 天天操天天噜| 无码一区18禁| 国产精品欧美亚洲韩国日本不卡| 国产精品偷伦在线观看| 亚洲国产无码有码| 成人在线第一页| 免费一级毛片| 亚洲天堂首页| 久久综合久久鬼| 亚洲一区网站| 1024你懂的国产精品| 99精品视频九九精品| 免费午夜无码18禁无码影院| 91精品综合| 亚洲综合九九| 尤物国产在线| 国产成人久视频免费| 日韩欧美国产中文| 精品国产中文一级毛片在线看| 伊人久久婷婷| 免费在线a视频| 亚洲成在人线av品善网好看| 99资源在线| 国产无遮挡猛进猛出免费软件| 免费女人18毛片a级毛片视频| 亚洲日韩图片专区第1页| 欧美色99| 国产欧美另类| 国产激情无码一区二区免费| 一区二区午夜| 国产激爽爽爽大片在线观看| 亚洲二区视频| 欧美日韩在线成人| 青草视频网站在线观看| 欧美日韩亚洲国产| 中文字幕亚洲另类天堂| 日韩 欧美 小说 综合网 另类| 国产主播福利在线观看| 久久无码av一区二区三区| 国产精品久久久久久影院| 特级精品毛片免费观看| 日韩高清成人| 亚洲黄色成人| 亚洲美女久久| 国产情侣一区二区三区| 久久久久久久久久国产精品| 亚洲成肉网| 亚洲制服丝袜第一页| 丝袜美女被出水视频一区| 欧美无遮挡国产欧美另类| 中文天堂在线视频| 在线观看免费人成视频色快速| 日韩国产 在线| 亚洲男人天堂网址| 国产毛片一区| 亚洲欧美日韩另类| 在线看国产精品| 中文字幕天无码久久精品视频免费| 在线精品亚洲一区二区古装| 午夜电影在线观看国产1区| 麻豆国产在线观看一区二区| 日韩精品免费一线在线观看| 69综合网| 国产va免费精品| 天堂中文在线资源| 91精品aⅴ无码中文字字幕蜜桃| 国产精品一区二区在线播放| 午夜精品国产自在| 欧洲亚洲一区| 国产在线观看成人91| 国产精品久久久久久久久kt| 久久久无码人妻精品无码| 免费全部高H视频无码无遮掩| 88av在线| 色天天综合| 精品人妻无码区在线视频| 亚洲综合久久一本伊一区| 秋霞国产在线| 亚洲人成在线免费观看| 91麻豆精品视频| 日韩免费毛片视频| 国产成人91精品免费网址在线|