軟件化和網(wǎng)絡(luò)化的基于Linux的雷達(dá)終端系統(tǒng)
3.1.2 余暉模擬
傳統(tǒng)雷達(dá)系統(tǒng)中利用長余輝管作為PPI顯示器。其優(yōu)點(diǎn)是:目標(biāo)亮度強(qiáng)、衰減慢;噪聲在顯示器上亮度弱、衰減快。這使目標(biāo)很突出。如果是運(yùn)動目標(biāo),會產(chǎn)生拖尾效應(yīng),使運(yùn)動目標(biāo)更形象、更容易被發(fā)現(xiàn)。使用普通顯示器,必須提供一種軟件實現(xiàn)機(jī)制模擬余輝。一種方法是:對PPI掃描區(qū)域的點(diǎn)進(jìn)行循環(huán)偽隨機(jī)訪問,讀出后進(jìn)行衰減再寫入。其原理是:按偽隨機(jī)序列進(jìn)行遍歷的點(diǎn)可以近似認(rèn)為是分布均勻的,而當(dāng)前掃描區(qū)域只是占整個PPI區(qū)域的極少部分,所以落入當(dāng)前掃描區(qū)域的偽隨機(jī)序列的點(diǎn)數(shù)也很少,而遠(yuǎn)離當(dāng)前區(qū)域的隨機(jī)序列的點(diǎn)數(shù)很多,所以平穩(wěn)后能產(chǎn)生離當(dāng)前掃描線越遠(yuǎn)越暗的余暉效果。
對于半徑512像素點(diǎn)的PPI掃描區(qū)域,其外切矩形為1024×1024。用20bit的偽隨機(jī)序列的前10bit對應(yīng)矩形區(qū)域的X坐標(biāo)點(diǎn),后10bit對應(yīng)Y坐標(biāo)點(diǎn),再去掉圓外面、矩形以內(nèi)的像素。PPI每掃描一根半徑線,就循環(huán)讀出一段隨機(jī)點(diǎn),衰減后再寫入。每次衰減的點(diǎn)數(shù)和幅度可根據(jù)需要設(shè)置。X和Y坐標(biāo)的隨機(jī)表可以事先生成好,以數(shù)據(jù)文件的形式存儲在硬盤中,程序初始化時一次讀入。
3.1.3 二次信息的分層顯示
廣義的二次信息包括航跡、狀態(tài)監(jiān)控等所有非一次視頻的信息。在軟件方案中,采用了Overlay功能實現(xiàn)。目前通用顯卡都支持此功能。
Overlay如同顯示器前一塊透明的切片,如圖6所示。當(dāng)需要顯示Overlay時,可同時看到Overlay部分和Primary Surface沒有被Overlay遮擋的地方。當(dāng)不需要顯示Overlay時,移除Overlay,原來的Primary Surface內(nèi)容不變,也就是說Primary Surface與Overlay的內(nèi)容物理上是分開的。而是否顯示Overlay,由Primary Surface上像素的顏色來決定。當(dāng)Primary Surface上某些區(qū)域的像素設(shè)為一種特殊的顏色時,這些區(qū)域顯示的就是Overlay上的內(nèi)容。這種起過濾作用的顏色稱為Color Key。這種顯示機(jī)制完全由顯卡的CPU完成,所以當(dāng)使用Overlay功能時,程序不會有明顯的性能損失。不同的顯卡,Color Key可能不一樣。
Overlay有多種模式,最常用的是YV12_OVERLAY,Y:U:V=4:2:2。本系統(tǒng)采用了這種模式。
YUV Overlay的一個特點(diǎn)是:適當(dāng)?shù)毓潭║、V,可以近似地固定顏色種類,改變Y就相當(dāng)于改變亮度。測試還表明,在Overlay上顯示視頻比在Primary Surface上顯示要少占用CPU資源。相比Primary Surface 上的RGB顯示方式,這些特性很適合于PPI顯示一次視頻。
一次和二次分層顯示的實現(xiàn)方法是:首先將Primary Surface上位于PPI掃描區(qū)域內(nèi)的所有像素都填上特殊的Color Key,這樣保證在與Primary Surface關(guān)聯(lián)的Overlay上的一次視頻可見;需要顯示二次信息的地方用不同于Color Key的其它顏色填在Primary Surface層上;當(dāng)不需要顯示二次信息時,只需在Primary Surface上將原來的二次信息用Color Key顏色再寫一遍即可。
3.2 網(wǎng)絡(luò)化的顯示應(yīng)用程序框架結(jié)構(gòu)
由于接收網(wǎng)絡(luò)組播的視頻幀包是一種阻塞操作,而GUI程序的主線程不能有阻塞操作,所以網(wǎng)絡(luò)接收部分應(yīng)該放在子線程或子進(jìn)程中。
系統(tǒng)首先選擇了子線程方式,試驗表明在這種方式下顯示部分不均勻。這是因為CPU調(diào)度的對象是進(jìn)程,進(jìn)程內(nèi)的線程同時競爭CPU分給該進(jìn)程的時間片,于是就會出現(xiàn)在某段時間內(nèi)主線程一直占用CPU,另一段時間網(wǎng)絡(luò)部分的子線程占用CPU。網(wǎng)絡(luò)接收雖然不會丟包,但是接收速度的不均勻引起了顯示的不均勻。系統(tǒng)又試驗了子進(jìn)程方式,發(fā)現(xiàn)顯示效果有所改觀,但是改進(jìn)不大。
設(shè)想一下,如果有兩個CPU,并行運(yùn)行父進(jìn)程和子進(jìn)程,那么整體運(yùn)行效率就會有很大程度的提高。因為,CPU幾乎不需要在不同的進(jìn)程之間反復(fù)切換了。
系統(tǒng)中選用具有超線程功能的Intel Pentium 4處理器,如果操作系統(tǒng)能夠支持SMP(Symmetric Multiple Processing),那么一個CPU相當(dāng)于兩個CPU,兩個進(jìn)程就可以并行處理。實際上,Linux2.4版本的內(nèi)核就支持SMP了。系統(tǒng)選擇的內(nèi)核版本是2.6.8,手工編譯內(nèi)核,選用SMP功能。用新的內(nèi)核運(yùn)行同樣的程序,顯示很平滑,最快顯示速度達(dá)到一圈2s以內(nèi),性能得到了明顯提高。Linux內(nèi)核的靈活定制特性在系統(tǒng)中起關(guān)鍵作用。
圖7是主顯機(jī)上網(wǎng)絡(luò)化顯示程序的框架。
兼顧平等,父子進(jìn)程盡量平均分擔(dān)負(fù)載。Linux有許多實現(xiàn)進(jìn)程間通信的機(jī)制:管道、消息隊列、共享內(nèi)存等。系統(tǒng)中選擇共享內(nèi)存方式,因為這是進(jìn)程間通信最快捷的方式??蚣苤?,二次信息通過I/O口進(jìn)入主顯機(jī),由于其數(shù)據(jù)率比較低,所以系統(tǒng)采用定時的方法進(jìn)行訪問更新。
本文論證了基于Linux的軟件化、網(wǎng)絡(luò)化雷達(dá)終端系統(tǒng)的實現(xiàn)可行性,并提出了一套切實可行的實現(xiàn)方案,對方案中的關(guān)鍵技術(shù)做了必要的闡述。這套方案的推廣對目前國內(nèi)雷達(dá)終端系統(tǒng)具有革命性的意義。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論