VxWorks作業系統及即時多任務程式設計

來源:互聯網
上載者:User
VxWorks作業系統及即時多任務程式設計來源:http://www.et00.com 作者:劉尉悅、張萬生、邢濤、王硯方 時間:2007-06-27 發布人:譚欣

  摘 要:數字式聲納系統需要即時顯示其搜尋、跟蹤結果,同時對使用者命令作出及時的響應,並即時控制前端的硬體。本文基於VxWorks即時作業系統和X視窗系統的顯示及控製程序設計,著重介紹即時多任務程式設計。

  關鍵詞:即時 即時作業系統 VxWorks X/ Window

  系統概況

  本系統運行於VME匯流排系統(MVME177)上,通過VME背板匯流排與各模件交換資料對各處理模件進行控制並顯示訊號處理結果。MVME177模件運行於嵌入式即時作業系統VxWorks下,人機互動介面基於X視窗系統。

  一、 嵌入式即時作業系統VxWorks簡介

   由於聲納系統在探測到某些目標(如魚雷)後要迅速作出反應,所以要求控制及顯示系統必須是即時作業系統。即時作業系統要求能夠隨時打斷正在執行的任務, 對內部和外部發生的事件在確定的時間內作出響應。本系統採用的VxWorks 是由美國WindRiver開發的一種類UNIX的高效能嵌入式即時作業系統。它是目前世界上使用者數量最大的即時作業系統,具有優越的技術效能、豐富的應 用軟體支援、良好的技術服務和可靠的系統穩定性。

  VxWorks的主要效能特點有:

   (1) 高度可剪裁的微核心結構。VxWorks所需要的儲存空間空間大約為8KB~488KB(ROM)、620KB~29.3KB(RAM),具有極好的延展性。
  (2) 高效的多任務調度。VxWorks 支援中斷驅動的優先順序搶佔式調度和時間片輪轉調度,並具有確定的、快速的環境切換能力。
  (3) 靈活的任務間通訊手段。支援號誌、訊息佇列、管道、訊號和通訊端等處理序間通訊和互斥手段。
  (4) 支援諸如Ring buffer、Link list 等共用記憶體技術。
  (5) 確定的μs級的中斷延遲時間。
  (6) 適用於多種物理介質的TCP/IP協議族支援和幾乎所有常用的基於TCP/IP協議的應用程式層協議。
  (7) 極其豐富的板級支援軟體包(BSP),支援多種處理器板。
  (8) 支援POSIX 1003.1b (即時擴充)。
  (9) 快速、靈活的I/O系統。
  (10) 支援MS/ DOS、RT/ 11和RAW等檔案系統和網路檔案系統(NFS)。
  (11) 靈活的啟動方法。支援從ROM、本地磁碟以及網路啟動。

  二、 VxWorks的一些技術特點

  VxWorks的特點主要在於嵌入式和即時性。由於嵌入式的特點,系統核心只有任務管理和簡單的記憶體管理,在此之上可以根據需要配置各種功能模組,包括網路管理、檔案系統、虛擬儲存空間等等。即時性則體現在即時調度演算法和即時核心(高效的處理序間通訊、記憶體管理等)。

  VxWorks支援POSIX標準,所以POSIX的概念和介面以及一些策略都被支援。但為了提高系統效能,VxWorks另有一套介面及實現策略稱為wind核心。下面的討論主要針對wind核心。POSIX標準可以參見相關資料。

   (1) 任務 在VxWorks中,最小的程式運行單位稱為任務(task)。每個任務包含一段固定的代碼和資料空間。作業系統核心通過任務控制塊(task control block)對它的執行、通訊、資源等情況進行控制。任務具有就緒、阻塞、掛起和延遲等狀態。

  與Linux和 WindowsNT下的進程不同的是:在VxWorks中,所有任務共同享有實體記憶體,存在於統一的線性空間中。每個任務沒有自己獨立的程式碼片段和堆,只有 獨立的動態棧。任務中的地址即是真正的物理地址。由於不需要進行地址空間映射,在任務切換時的環境切換(context switch)時間大為減少,符合即時作業系統要求快速響應的原則。從這個意義上來說,VxWorks的任務更接近Linux和WindowsNT下的線 程(thread)。 VxWorks的程式碼片段與堆共用減少了環境切換時間,卻帶來了共用代碼的可重新進入性(reentrancy)問題。如1個函數被2個任務所調用,當其中包 含對全域、靜態變數等從堆中分配空間的資料進行訪問時,就有可能產生衝突,從而引發錯誤。在應用軟體開發時要加以注意。解決方案是使用局部變數(從棧中分 配空間)或使用號誌對臨界代碼進行監控。
 
  (2) 任務調度 VxWorks有2種任務調度策略:優先順序搶先調度和時間片輪轉調度。這2種調度策略都是系統級的,與POSIX進程級的調度策略不同,即整個系統裡要麼 是優先順序搶先調度,要麼是時間片輪轉調度;而POSIX標準下可以每個進程使用自己的調度策略。系統共有256個優先順序。

  優先順序搶先調度指的是一個優先順序較低的任務正在執行中,另一個優先順序高的任務進入就緒狀態,則馬上進行處理器搶先,執行高優先順序任務,直到高優先順序釋放處理器(完成、掛起、阻塞等)才繼續執行低優先順序任務。

  優先順序搶先調度可以保證即時系統的迅速響應特性,但是也帶來1個問題:當系統中存在幾個相同優先順序的任務時,就會使單一任務獨佔處理器,直至完成。為此加入了基於優先順序的時間片輪轉調度方式。在不同優先順序的任務間以搶先方式調度,相同優先順序的任務則以時間片進行輪轉。

  (3) 儲存管理 在基本的wind核心中,任務直接操作線性實體記憶體,不存在虛擬儲存等複雜的儲存管理原則,這主要是從效能來考慮的。不過VxWorks也提供支援POSIX標準的虛擬儲存區和共用記憶體(多處理器間共用)組件。
  
   (4) 任務間通訊 在任務間傳遞控制資訊時,通訊量小,wind核心支援各種UNIX的通訊手段:訊號量(semaphore)、訊息佇列(message queue)、管道(pipe)、訊號(signal)、通訊端(socket)。訊號量主要用於對臨界資源訪問的同步和互斥;訊息佇列多用於訊息驅動機 制;管道是基於檔案系統實現的任務間按先進先出方式傳送資料的通訊方式;訊號相當於非強制中斷;通訊端機制主要用於網路通訊。

  當任務間需要大量交換資料時,由於VxWorks直接操作實體記憶體,可以直接存取全域儲存區,不需要特別的手段,與Linux下的共用儲存段申請和WindowsNT中的儲存對應檔方式不同。

   (5) 中斷 在VxWorks下,所有中斷服務程式都不屬於任何一個任務,並且使用同一個棧進行資料存放區,則中斷將不會引起環境切換,以實現高效的中斷響應。中斷與 各任務之間可以通過前面所述的各種手段進行通訊,但要注意對中斷服務程式有一些限制,例如不能進行可能導致阻塞的資源申請等等。

  (6) 檔案系統 VxWorks支援多種本地檔案系統:MS_DosFS、RawFS和RT/ 11FS,可根據具體配置選擇;還支援網路檔案系統NFS,可以沒有局域檔案系統。

   (7) 網路支援 Vxworks支援多種物理介質的TCP/IP協議族和幾乎所有常用的基於TCP/IP協議的應用程式層協議,例如ARP、BOOTP、SLIP和FTP,甚 至其啟動就是通過BOOTP或FTP方式取得系統映像檔案的。 以上簡單介紹了一些VxWorks的技術特點。要注意,這些特點都是跟VxWorks的特性——即時性與嵌入式密切相關的。

  三、 X視窗系統

  本系統採用美國Peritek公司的VCL/ V圖形控制器外掛程式進行顯示輸出和輸入控制,客戶介面基於X/ Window。X客戶程式的開發選用美國SeaWeed公司的SeaWindM軟體。

   X是美國麻省理工學院(MIT)研製的一個可移植的網路透明的視窗系統。它具有裝置獨立性和網路透明性的特點,即基於X開發的應用程式不需要重寫或重新 編譯就可以在新的顯示硬體上執行,並且在網路環境下通過X可在網路任一節點上運行X的應用程式而不必考慮該節點的物理位置。

  四、 顯示與控制系統的具體實現

   本系統的功能主要是初始化各處理模件、根據輸入命令對各處理模件進行控制和對處理結果的即時顯示。這些都是通過與相應子系統的資料通訊來完成的。對通訊 資料和策略的分析是系統設計的關鍵。系統與其他子系統中存在著這樣幾類通訊資料:與前端類比子系統的控制資訊與資料、與數字訊號處理子系統相關的控制資訊 和資料、發射訊號控制資訊、顯示資料以及從鍵盤和滑鼠獲得的輸入資訊。這幾類資料都是通過VME背板匯流排傳輸,通過對VME地址空間直接讀寫進行訪問。其 中由數字訊號處理子系統送來的資料是由資料更新事件驅動的。為了滿足即時性的要求,需要在每組結果資料更新之前完成通訊,因此處理的優先順序需要很高。

  基於上面的考慮,系統劃分為4個任務:系統監控、顯示與輸入、子模件控制和錯誤處理。

  系統監控——提交和監控其他子任務。
  顯示與輸入——即時顯示訊號處理結果和產生輸入訊息。
  子模件控制——向各子模件發送控制參數和計算資料,由輸入訊息驅動。
  錯誤處理——根據錯誤類型進行相應處理:顯示錯誤資訊、重啟動各模件、中止系統,由出錯訊息驅動。
   訊號處理結果讀取在顯示和輸入任務中完成,其驅動事件為處理結果更新。在被動聲納處理中,短時間能量積累的結果每64ms更新一次,平均功率譜結果每 1.5s更新一次;主動聲納處理的幅度資訊資料率為1.3kb/s,頻域處理結果更新率為5~10次/s。如果由訊號處理模件在資料更新後向 MVME177發送中斷事件,由於資料更新率差別較大,可能造成瞬間中斷頻繁,增加處理複雜度。所以採用定時中斷,使用間隔為50ms的定時中斷去檢查數 據更新標誌,既能保證即時資料重新整理,又能簡化處理結構。

  各任務間的大批量資料轉送利用VxWorks的共用記憶體直接存取,而傳遞 控制訊息多採用訊息佇列(message queue)。在顯示和輸入任務中有兩類驅動事件:鍵盤、滑鼠輸入和顯示資料更新。顯示重新整理的優先順序應該高於人工輸入,所以在這裡使用了訊號 (signal)。當任務捕獲訊號時,立即中斷正在執行的流程,轉而進行訊號服務處理。完成後,繼續原處理流程可以保證顯示的即時重新整理。

  各任務之間的通訊機制由4個訊息佇列、1個定時中斷和1個訊號完成:

  訊息佇列SystemMsg:系統開機、系統關機、系統複位、系統重啟等,由錯誤處理任務和鍵盤輸入產生;由系統監控任務接收。
  訊息佇列ParamModifyMsg:更改前端硬體參數、DSP參數等,由鍵盤輸入產生,由子模件控制任務接收。
  訊息佇列ErrorMsg:定義了各種錯誤類型,由各任務的出錯介面產生;由錯誤處理任務接收。
  X訊息佇列:由顯示和輸入任務接收(被SeaWindM軟體包封裝)。 定時中斷:由系統監控任務啟動和停止,讀取DSP處理結果。 訊號處理:由顯 示和輸入任務註冊,定時中斷髮送訊號,接收到後進行資料顯示。
  系統定義全域變數System_Data。其資料類型為自訂的System_Data_Struct結構。通過System_Data實現任務間的資料交換。

  結束語

  以上介紹了數字式聲納的顯控系統的設計。基於VxWorks的多任務設計使系統的即時性和穩定性都非常好。目前該顯控系統已通過測試,達到了系統的設計要求。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.