新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > VxWorks操作系統(tǒng)及實(shí)時(shí)多任務(wù)程序設(shè)計(jì)

VxWorks操作系統(tǒng)及實(shí)時(shí)多任務(wù)程序設(shè)計(jì)

作者: 時(shí)間:2012-03-27 來(lái)源:網(wǎng)絡(luò) 收藏


 ?。?) 存儲(chǔ)管理 在基本的wind內(nèi)核中,任務(wù)直接操作線性物理內(nèi)存,不存在虛擬存儲(chǔ)等復(fù)雜的存儲(chǔ)管理策略,這主要是從性能來(lái)考慮的。不過(guò)也提供支持POSIX標(biāo)準(zhǔn)的虛擬存儲(chǔ)區(qū)和共享內(nèi)存(多處理器間共享)組件。
  
 ?。?)任務(wù)間通信在任務(wù)間傳遞控制信息時(shí),通信量小,wind內(nèi)核支持各種UNIX的通信手段:信號(hào)量(semaphore)、消息隊(duì)列(message queue)、管道(pipe)、信號(hào)(signal)、套接字(socket)。信號(hào)量主要用于對(duì)臨界資源訪問(wèn)的同步和互斥;消息隊(duì)列多用于消息驅(qū)動(dòng)機(jī)制;管道是基于文件系統(tǒng)實(shí)現(xiàn)的任務(wù)間按先進(jìn)先出方式傳送數(shù)據(jù)的通信方式;信號(hào)相當(dāng)于軟中斷;套接字機(jī)制主要用于網(wǎng)絡(luò)通信。

  當(dāng)任務(wù)間需要大量交換數(shù)據(jù)時(shí),由于直接操作物理內(nèi)存,可以直接訪問(wèn)全局存儲(chǔ)區(qū),不需要特別的手段,與Linux下的共享存儲(chǔ)段申請(qǐng)和WindowsNT中的存儲(chǔ)映射文件方式不同。

 ?。?)中斷在下,所有中斷服務(wù)程序都不屬于任何一個(gè)任務(wù),并且使用同一個(gè)棧進(jìn)行數(shù)據(jù)存儲(chǔ),則中斷將不會(huì)引起上下文切換,以實(shí)現(xiàn)高效的中斷響應(yīng)。中斷與各任務(wù)之間可以通過(guò)前面所述的各種手段進(jìn)行通信,但要注意對(duì)中斷服務(wù)程序有一些限制,例如不能進(jìn)行可能導(dǎo)致阻塞的資源申請(qǐng)等等。

 ?。?) 文件系統(tǒng) VxWorks支持多種本地文件系統(tǒng):MS_DosFS、RawFS和RT 11FS,可根據(jù)具體配置選擇;還支持網(wǎng)絡(luò)文件系統(tǒng)NFS,可以沒(méi)有局域文件系統(tǒng)。

 ?。?) 網(wǎng)絡(luò)支持 Vxworks支持多種物理介質(zhì)的TCP/IP協(xié)議族和幾乎所有常用的基于TCP/IP協(xié)議的應(yīng)用層協(xié)議,例如ARP、BOOTP、SLIP和FTP,甚至其啟動(dòng)就是通過(guò)BOOTP或FTP方式取得系統(tǒng)映像文件的。以上簡(jiǎn)單介紹了一些VxWorks的技術(shù)特點(diǎn)。要注意,這些特點(diǎn)都是跟VxWorks的特性 ——實(shí)時(shí)性與嵌入式密切相關(guān)的。

  三、 X窗口系統(tǒng)

  本系統(tǒng)采用美國(guó)Peritek公司的VCL V圖形控制器插件進(jìn)行顯示輸出和輸入控制,客戶界面基于X Window。X客戶程序的開發(fā)選用美國(guó)SeaWeed公司的SeaWindM軟件。

  X是美國(guó)麻省理工學(xué)院(MIT)研制的一個(gè)可移植的網(wǎng)絡(luò)透明的窗口系統(tǒng)。它具有設(shè)備獨(dú)立性和網(wǎng)絡(luò)透明性的特點(diǎn),即基于X開發(fā)的應(yīng)用程序不需要重寫或重新編譯就可以在新的顯示硬件上執(zhí)行,并且在網(wǎng)絡(luò)環(huán)境下通過(guò)X可在網(wǎng)絡(luò)任一節(jié)點(diǎn)上運(yùn)行X的應(yīng)用程序而不必考慮該節(jié)點(diǎn)的物理位置。

  四、 顯示與控制系統(tǒng)的具體實(shí)現(xiàn)

  本系統(tǒng)的功能主要是初始化各處理模件、根據(jù)輸入命令對(duì)各處理模件進(jìn)行控制和對(duì)處理結(jié)果的實(shí)時(shí)顯示。這些都是通過(guò)與相應(yīng)子系統(tǒng)的數(shù)據(jù)通信來(lái)完成的。對(duì)通信數(shù)據(jù)和策略的分析是系統(tǒng)設(shè)計(jì)的關(guān)鍵。系統(tǒng)與其他子系統(tǒng)中存在著這樣幾類通信數(shù)據(jù):與前端模擬子系統(tǒng)的控制信息與數(shù)據(jù)、與數(shù)字信號(hào)處理子系統(tǒng)相關(guān)的控制信息和數(shù)據(jù)、發(fā)射信號(hào)控制信息、顯示數(shù)據(jù)以及從鍵盤和鼠標(biāo)獲得的輸入信息。這幾類數(shù)據(jù)都是通過(guò)VME背板總線傳輸,通過(guò)對(duì)VME地址空間直接讀寫進(jìn)行訪問(wèn)。其中由數(shù)字信號(hào)處理子系統(tǒng)送來(lái)的數(shù)據(jù)是由數(shù)據(jù)更新事件驅(qū)動(dòng)的。為了滿足實(shí)時(shí)性的要求,需要在每組結(jié)果數(shù)據(jù)更新之前完成通信,因此處理的優(yōu)先級(jí)需要很高。

  基于上面的考慮,系統(tǒng)劃分為4個(gè)任務(wù):系統(tǒng)監(jiān)控、顯示與輸入、子模件控制和錯(cuò)誤處理。

  系統(tǒng)監(jiān)控——提交和監(jiān)控其他子任務(wù)。
  顯示與輸入——實(shí)時(shí)顯示信號(hào)處理結(jié)果和產(chǎn)生輸入消息。
  子模件控制——向各子模件發(fā)送控制參數(shù)和計(jì)算數(shù)據(jù),由輸入消息驅(qū)動(dòng)。
  錯(cuò)誤處理——根據(jù)錯(cuò)誤類型進(jìn)行相應(yīng)處理:顯示錯(cuò)誤信息、重啟動(dòng)各模件、中止系統(tǒng),由出錯(cuò)消息驅(qū)動(dòng)。
  信號(hào)處理結(jié)果讀取在顯示和輸入任務(wù)中完成,其驅(qū)動(dòng)事件為處理結(jié)果更新。在被動(dòng)聲納處理中,短時(shí)間能量積累的結(jié)果每64ms更新一次,平均功率譜結(jié)果每 1.5s更新一次;主動(dòng)聲納處理的幅度信息數(shù)據(jù)率為1.3kb/s,頻域處理結(jié)果更新率為5~10次/s。如果由信號(hào)處理模件在數(shù)據(jù)更新后向 MVME177發(fā)送中斷事件,由于數(shù)據(jù)更新率差別較大,可能造成瞬間中斷頻繁,增加處理復(fù)雜度。所以采用定時(shí)中斷,使用間隔為50ms的定時(shí)中斷去檢查數(shù)據(jù)更新標(biāo)志,既能保證實(shí)時(shí)數(shù)據(jù)刷新,又能簡(jiǎn)化處理結(jié)構(gòu)。

  各任務(wù)間的大批量數(shù)據(jù)傳輸利用VxWorks的共享內(nèi)存直接訪問(wèn),而傳遞控制消息多采用消息隊(duì)列(message queue)。在顯示和輸入任務(wù)中有兩類驅(qū)動(dòng)事件:鍵盤、鼠標(biāo)輸入和顯示數(shù)據(jù)更新。顯示刷新的優(yōu)先級(jí)應(yīng)該高于人工輸入,所以在這里使用了信號(hào)(signal)。當(dāng)任務(wù)捕獲信號(hào)時(shí),立即中斷正在執(zhí)行的流程,轉(zhuǎn)而進(jìn)行信號(hào)服務(wù)處理。完成后,繼續(xù)原處理流程可以保證顯示的實(shí)時(shí)刷新。

  各任務(wù)之間的通信機(jī)制由4個(gè)消息隊(duì)列、1個(gè)定時(shí)中斷和1個(gè)信號(hào)完成:

  消息隊(duì)列SystemMsg:系統(tǒng)開機(jī)、系統(tǒng)關(guān)機(jī)、系統(tǒng)復(fù)位、系統(tǒng)重啟等,由錯(cuò)誤處理任務(wù)和鍵盤輸入產(chǎn)生;由系統(tǒng)監(jiān)控任務(wù)接收。
  消息隊(duì)列ParamModifyMsg:更改前端硬件參數(shù)、DSP參數(shù)等,由鍵盤輸入產(chǎn)生,由子模件控制任務(wù)接收。
  消息隊(duì)列ErrorMsg:定義了各種錯(cuò)誤類型,由各任務(wù)的出錯(cuò)接口產(chǎn)生;由錯(cuò)誤處理任務(wù)接收。
  X消息隊(duì)列:由顯示和輸入任務(wù)接收(被SeaWindM軟件包封裝)。 定時(shí)中斷:由系統(tǒng)監(jiān)控任務(wù)啟動(dòng)和停止,讀取DSP處理結(jié)果。 信號(hào)處理:由顯 示和輸入任務(wù)注冊(cè),定時(shí)中斷發(fā)送信號(hào),接收到后進(jìn)行數(shù)據(jù)顯示。
  系統(tǒng)定義全局變量System_Data。其數(shù)據(jù)類型為自定義的System_Data_Struct結(jié)構(gòu)。通過(guò)System_Data實(shí)現(xiàn)任務(wù)間的數(shù)據(jù)交換。

  結(jié)束語(yǔ)

  以上介紹了數(shù)字式聲納的顯控系統(tǒng)的設(shè)計(jì)?;赩xWorks的多任務(wù)設(shè)計(jì)使系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性都非常好。目前該顯控系統(tǒng)已通過(guò)測(cè)試,達(dá)到了系統(tǒng)的設(shè)計(jì)要求。

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉