新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > VxWorks操作系統及實時多任務程序設計

        VxWorks操作系統及實時多任務程序設計

        作者: 時間:2012-03-27 來源:網絡 收藏


          (3) 存儲管理 在基本的wind內核中,任務直接操作線性物理內存,不存在虛擬存儲等復雜的存儲管理策略,這主要是從性能來考慮的。不過也提供支持POSIX標準的虛擬存儲區和共享內存(多處理器間共享)組件。
          
          (4)任務間通信在任務間傳遞控制信息時,通信量小,wind內核支持各種UNIX的通信手段:信號量(semaphore)、消息隊列(message queue)、管道(pipe)、信號(signal)、套接字(socket)。信號量主要用于對臨界資源訪問的同步和互斥;消息隊列多用于消息驅動機制;管道是基于文件系統實現的任務間按先進先出方式傳送數據的通信方式;信號相當于軟中斷;套接字機制主要用于網絡通信。

          當任務間需要大量交換數據時,由于直接操作物理內存,可以直接訪問全局存儲區,不需要特別的手段,與Linux下的共享存儲段申請和WindowsNT中的存儲映射文件方式不同。

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

          (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的多任務設計使系統的實時性和穩定性都非常好。目前該顯控系統已通過測試,達到了系統的設計要求。

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盐池县| 红河县| 松阳县| 平顶山市| 隆子县| 金阳县| 陇南市| 赤城县| 观塘区| 郸城县| 武威市| 榕江县| 老河口市| 盘锦市| 定西市| 临泉县| 图木舒克市| 定远县| 贺州市| 沙河市| 潮安县| 石景山区| 甘洛县| 甘谷县| 普洱| 金寨县| 岳池县| 旬邑县| 永济市| 桦南县| 上栗县| 雅江县| 酒泉市| 工布江达县| 新建县| 唐海县| 靖宇县| 丹凤县| 彭州市| 南阳市| 抚顺市|