0 引言
破片速度是戰(zhàn)斗部爆炸效能評(píng)估的一個(gè)重要參數(shù)。傳統(tǒng)的靶場(chǎng)破片測(cè)速系統(tǒng)多使用多路數(shù)據(jù)采集卡設(shè)置好的參數(shù)現(xiàn)場(chǎng)采集標(biāo)靶的試驗(yàn)波形,試驗(yàn)完成后再交由計(jì)算機(jī)進(jìn)行后期處理和解讀以獲取破片速度等參數(shù)。但隨著軍事科技的日新月異,靶場(chǎng)破片測(cè)速系統(tǒng)需要根據(jù)實(shí)際情況現(xiàn)場(chǎng)設(shè)置的參數(shù)越來越多,參數(shù)設(shè)置的靈活性越來越強(qiáng),對(duì)系統(tǒng)工作的實(shí)時(shí)性要求越來越高;另一方面,戰(zhàn)斗部爆炸試驗(yàn)在野外進(jìn)行,條件惡劣,大型設(shè)備攜帶不便,并為靶場(chǎng)破片測(cè)速系統(tǒng)設(shè)計(jì)提供了一個(gè)新的思路。
1 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)使用ARM+FPGA的設(shè)計(jì)方式:ARM處理器選用Samsung公司推出的基于ARM920T內(nèi)核的S3C2440。S3C2440主頻高達(dá)400 MHz,完全能夠勝任系統(tǒng)工作要求。S3C2440集成了SDRAM和FLASH控制器,提供了串口,觸摸屏接口,USB接口等多種接口,接口豐富、功能強(qiáng)大,是一款高性能,低價(jià)格的處理器,在嵌入式設(shè)備中獲得了廣泛的應(yīng)用。FPGA選用了Altera公司StratixⅡ系列的EP2S15芯片,該芯片器件密度可達(dá)到15600等效邏輯元(LE),能提供419Kb片內(nèi)TriMatrix存儲(chǔ)器,多達(dá)12個(gè)DSP區(qū)塊共有48個(gè)(18×18 b)乘法器,用來實(shí)現(xiàn)高性能濾波器和其他DSP功能。
系統(tǒng)使用該芯片64 MB SDRAM作為系統(tǒng)內(nèi)存,64 MB FLASH用于Linux內(nèi)核、文件系統(tǒng)、應(yīng)用程序和試驗(yàn)數(shù)據(jù)的存儲(chǔ),為系統(tǒng)運(yùn)行提供了充足的存儲(chǔ)空間。
系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。
在圖1中,系統(tǒng)采用了32個(gè)標(biāo)靶用于破片測(cè)速,一個(gè)標(biāo)靶對(duì)應(yīng)FPGA的一個(gè)通道,每個(gè)通道對(duì)應(yīng)一個(gè)32 b計(jì)數(shù)器。戰(zhàn)斗部爆炸后,破片擊穿標(biāo)靶時(shí)產(chǎn)生的脈沖將作為起停信號(hào),控制FPGA中相應(yīng)通道的計(jì)數(shù)。所有通道中最早觸發(fā)的通道為基準(zhǔn)通道,相應(yīng)通道計(jì)數(shù)器值為0。從基準(zhǔn)通道被觸發(fā)時(shí)刻起,除基準(zhǔn)通道外所有通道計(jì)數(shù)器開始計(jì)數(shù),直到本通道收到觸發(fā)信號(hào)或者最長(zhǎng)計(jì)數(shù)時(shí)間時(shí)停止計(jì)數(shù)。停止計(jì)數(shù)時(shí)的通道計(jì)數(shù)值即為本通道的觸發(fā)計(jì)數(shù)值。
FPGA作為一個(gè)外部存儲(chǔ)器掛載在ARM的存儲(chǔ)器總線上,這樣ARM處理器通過存儲(chǔ)器指令可直接訪問FPGA,從而通過讀寫FPGA的數(shù)據(jù)和控制寄存器實(shí)現(xiàn)對(duì)FPGA的控制和對(duì)數(shù)據(jù)的讀取。FPGA設(shè)置了32通道通斷寄存器、32通道輸入觸發(fā)器、通道觸發(fā)計(jì)數(shù)器等多個(gè)數(shù)據(jù)寄存器,設(shè)置了最長(zhǎng)記錄時(shí)間寄存器等多個(gè)控制寄存器用于控制FPGA的動(dòng)作。
ARM與FPGA接口如圖2所示。
為了便于交互,系統(tǒng)配置了一塊5.7英寸帶觸摸屏的LCD顯示屏作為顯示控制設(shè)備,并且提供了USB口實(shí)現(xiàn)與主機(jī)通信。通過試驗(yàn)測(cè)試,本系統(tǒng)能夠充分發(fā)揮ARM的強(qiáng)大處理能力和FPGA的并行處理能力,成功達(dá)到試驗(yàn)?zāi)康摹?/p>
2 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件結(jié)構(gòu)圖如圖3所示。
在設(shè)計(jì)具體應(yīng)用程序前首先要對(duì)操作系統(tǒng)進(jìn)行裁減。GUI為用戶提供了與應(yīng)用系統(tǒng)交互的可視化通道,在嵌入式軟件系統(tǒng)中占據(jù)重要地位。針對(duì)嵌入式設(shè)備資源有限的特點(diǎn),嵌入式GUI要求提供這樣一種交互接口,即它占用資源少且反應(yīng)迅速,具備高度的可移植性和可裁減性。嵌入式Linux內(nèi)核,是一種完全開源、功能強(qiáng)大的操作系統(tǒng)內(nèi)核,與時(shí)下流行的Wi-nce等嵌入式操作系統(tǒng)相比,其優(yōu)點(diǎn)之一就在于內(nèi)核的可裁減性。目前國(guó)內(nèi)主流的嵌入式GUI系統(tǒng)有MINIGUI,MICRO WINDOW,Qt/Embedded等幾種,各有優(yōu)缺點(diǎn)。綜合比較各種GUI系統(tǒng)的優(yōu)劣,從GUI系統(tǒng)的封裝性、可移植性和系統(tǒng)設(shè)計(jì)的便捷性考慮,最終選取Qt/Embedded進(jìn)行GUI的設(shè)計(jì)。
Qt/Embedded(以下簡(jiǎn)稱Qt/E)是由著名的Trolltech公司專門針對(duì)pda等嵌入式移動(dòng)手持設(shè)備開發(fā)的開放源碼的一套應(yīng)用程序包和開發(fā)庫(kù),具有可視化強(qiáng),界面美觀,類庫(kù)完善豐富,封裝性好的優(yōu)點(diǎn)。它通過Qt API與Linux I/O以及Framebuffer直接交互,擁有較高的運(yùn)行效率,而且整體采用面向?qū)ο?a href="http://m.xsypw.cn/v/tag/1315/" target="_blank">編程,擁有良好地體系架構(gòu)和編程模式,Qt/embedded和Qt一樣,在4.5版本之后提供了三種不同的授權(quán)協(xié)議GPL, LGPL和Commercial。Qt Embedded目前的版本通常為4.5,提供了兩個(gè)版本,分別是Qt for Embedded Linux,以及Qt for Windows CE。許多基于計(jì)算機(jī)Qt的X Window程序在交叉編譯后都可以非常方便地移植為Qt/E版本,查看效果后經(jīng)交叉編譯直接在嵌入式設(shè)備上運(yùn)行,大大簡(jiǎn)化了開發(fā)流程,節(jié)約了開發(fā)時(shí)間。
3 嵌入式GUI程序?qū)崿F(xiàn)
3.1 Qt/E具體程序設(shè)計(jì)
系統(tǒng)在試驗(yàn)前需要根據(jù)現(xiàn)場(chǎng)情況進(jìn)行參數(shù)設(shè)置,尤為重要的是完成標(biāo)靶的分組設(shè)置:在同一方向上的兩個(gè)或多個(gè)標(biāo)靶分為一組,靶間距事先確定,同一破片將先后通過同組標(biāo)靶,產(chǎn)生觸發(fā)信號(hào),控制對(duì)應(yīng)通道計(jì)數(shù)器的計(jì)數(shù)起停。破片測(cè)速完成后,F(xiàn)PGA獲得的通道觸發(fā)計(jì)數(shù)值除以FPGA計(jì)數(shù)頻率即為通道的觸發(fā)時(shí)刻值。在試驗(yàn)完成,獲得測(cè)試數(shù)據(jù)后,經(jīng)過運(yùn)算,就可以表格和分布圖兩種方式給出破片的觸發(fā)時(shí)刻值和速度值,快速直觀。存儲(chǔ)管理模塊負(fù)責(zé)系統(tǒng)參數(shù)及測(cè)試數(shù)據(jù)的保存和讀取,以進(jìn)行試驗(yàn)數(shù)據(jù)的進(jìn)一步分析。在試驗(yàn)前未連接標(biāo)靶的情況下,脫機(jī)進(jìn)行參數(shù)設(shè)置,設(shè)置完畢后可保存所有設(shè)置參數(shù)。試驗(yàn)時(shí),只要選擇保存的參數(shù)就可直接載入脫機(jī)設(shè)置的參數(shù),極大增強(qiáng)了系統(tǒng)工作的靈活性。
根據(jù)系統(tǒng)測(cè)速過程,系統(tǒng)軟件的工作流程如圖4所示。
按照系統(tǒng)應(yīng)用要求,將GUI設(shè)計(jì)分為:參數(shù)設(shè)置模塊、系統(tǒng)測(cè)試模塊、結(jié)果查看模塊和存儲(chǔ)管理模塊四個(gè)模塊。參數(shù)設(shè)置模塊負(fù)責(zé)對(duì)破片測(cè)速系統(tǒng)所需要的各種參數(shù)進(jìn)行設(shè)置,主要包括標(biāo)靶分組、標(biāo)靶間距、標(biāo)靶類型、最長(zhǎng)計(jì)數(shù)時(shí)間。結(jié)果查看模塊負(fù)責(zé)對(duì)測(cè)試結(jié)果進(jìn)行顯示。用同一標(biāo)靶組內(nèi)兩個(gè)相鄰標(biāo)靶之間的間距除以相鄰標(biāo)靶之間觸發(fā)時(shí)刻值的差值,即可得到破片在兩個(gè)標(biāo)靶之間的平均飛行速度。每個(gè)標(biāo)靶組可測(cè)得一組破片穿過本標(biāo)靶組時(shí)的速度值,通過進(jìn)一步的計(jì)算,可獲得破片的速度分布、速度降等參數(shù)。
3.2 Qt/E程序優(yōu)化
嵌入式設(shè)備的顯著特點(diǎn)是CPU主頻不高,資源有限。因?yàn)檫@個(gè)局限性,許多在計(jì)算機(jī)上運(yùn)行流暢的Qt/E程序在嵌入式設(shè)備上反應(yīng)滯后,在極端情況下甚至?xí)霈F(xiàn)短暫的界面凍結(jié)現(xiàn)象。為了提高嵌入式GUI的反應(yīng)速度,對(duì)Qt/E應(yīng)用程序設(shè)計(jì)就提出了更高的要求。本文在界面設(shè)計(jì)中,針對(duì)GUI運(yùn)行中出現(xiàn)的問題,對(duì)Qt/E程序進(jìn)行了一些優(yōu)化,經(jīng)過優(yōu)化后,界面的反應(yīng)速度明顯改善。
3.2.1 采用靜態(tài)鏈接代替動(dòng)態(tài)鏈接
與靜態(tài)鏈接相比,動(dòng)態(tài)鏈接的優(yōu)勢(shì)在于動(dòng)態(tài)庫(kù)可被多個(gè)進(jìn)程復(fù)用,從而減少了對(duì)系統(tǒng)內(nèi)存的使用。但是動(dòng)態(tài)鏈接的這種優(yōu)越性是有代價(jià)的,由于進(jìn)程在初始化時(shí)要加載并且初始化大量的動(dòng)態(tài)庫(kù),當(dāng)需要加載的動(dòng)態(tài)庫(kù)比較多或者動(dòng)態(tài)庫(kù)比較龐大時(shí),直接的影響就是降低進(jìn)程啟動(dòng)速度;另外一個(gè)影響是系統(tǒng)運(yùn)行時(shí)因?yàn)楹瘮?shù)的鏈接也要耗費(fèi)一些時(shí)間。嵌入式Qt/E程序如果使用動(dòng)態(tài)鏈接就面臨這個(gè)問題。可以利用一下QWidgetStack或者自己做一個(gè)全屏窗口管理類,在初始化時(shí)候就把所有窗口對(duì)象全部建立起來然后用窗口管理來決定顯示哪個(gè)窗口。
由于本系統(tǒng)設(shè)計(jì)為專用系統(tǒng),僅有一個(gè)GUI程序,可采取對(duì)Qt/E庫(kù)靜態(tài)鏈接的方式來提高啟動(dòng)和運(yùn)行速度。一般來說,為了保證程序的基本功能,即使經(jīng)過裁減后,Qt/E動(dòng)態(tài)庫(kù)也有將近10 MB大小,這些動(dòng)態(tài)庫(kù)在嵌入式平臺(tái)上的加載將耗費(fèi)大量時(shí)間。針對(duì)這個(gè)問題,一種解決方法是采用prelink預(yù)鏈接的方法先確定每一個(gè)動(dòng)態(tài)庫(kù)在內(nèi)存的加載位置,從而省去動(dòng)態(tài)庫(kù)重定位這一過程。但是這種方法的步驟比較繁瑣,使用上存在一些限定要求,在這里并不推薦。
當(dāng)今,嵌入式系統(tǒng)的發(fā)展已經(jīng)進(jìn)入大融合的時(shí)代,其特點(diǎn)如下:通信、計(jì)算機(jī)及消費(fèi)電子產(chǎn)品(3C)融合——趨向沒有獨(dú)立的3C,只有融合的3C,即信息產(chǎn)品(IA),數(shù)字模擬融合、微機(jī)電融合、電路板硅片融合及硬軟件設(shè)計(jì)融合——趨向SoC:和SiP嵌入式整機(jī)的開發(fā)工作也從傳統(tǒng)的硬件為主變?yōu)檐浖橹鳎ち业氖袌?chǎng)競(jìng)爭(zhēng)和技術(shù)進(jìn)步呼喚著新穎的產(chǎn)品開發(fā)平臺(tái),特別是SoC開發(fā)平臺(tái)的出現(xiàn)。隨著嵌入式技術(shù)的不斷發(fā)展,嵌入式系統(tǒng)將更廣泛應(yīng)用于人類生活的各個(gè)方面。
3.2.2 使用基礎(chǔ)控件代替復(fù)合控件
加快界面反應(yīng)速度最直接有效的方法就是減少界面中的控件數(shù),這里的控件數(shù),準(zhǔn)確地說,指的是QWidget等基礎(chǔ)控件的數(shù)量。在實(shí)際程序設(shè)計(jì)過程中,一個(gè)有效設(shè)計(jì)方法是對(duì)一些復(fù)合控件盡可能使用基礎(chǔ)控件代替。Qt/E中提供了許多功能強(qiáng)大的復(fù)合控件,這些復(fù)合控件通常是由多個(gè)基礎(chǔ)控件復(fù)合而成的,雖然操作方便,但是資源消耗也比較多,從而影響了整個(gè)界面的運(yùn)行。以表格的繪制為例,如果表格使用復(fù)合控件QTableWidget實(shí)現(xiàn),表格的每一個(gè)表項(xiàng)都作為一個(gè)子控件存在。而如果用基礎(chǔ)控件QWidget實(shí)現(xiàn)表格,只需調(diào)用一次基礎(chǔ)控件的paintEvent()就可以在paintEvent()函數(shù)中自定義實(shí)現(xiàn)表格的繪制,雖然書寫代碼量可能會(huì)大一些,但是函數(shù)調(diào)用次數(shù)少,并且可以做到對(duì)表格每一個(gè)局部刷新區(qū)域的有效控制,避免許多無用操作,在嵌入式平臺(tái)上,反應(yīng)速度明顯加快。
3.2.3 采用延遲刷新方法
采用這種方法相當(dāng)于把耗時(shí)復(fù)合控件的刷新延遲,而先讓界面其他控件完成刷新操作,從而快速顯示界面的刷新效果。其目的就是要把一切變得更簡(jiǎn)單、更方便、更普遍、更適用;通用計(jì)算機(jī)的發(fā)展變?yōu)楣δ?a href="http://m.xsypw.cn/v/tag/1247/" target="_blank">電腦,普遍進(jìn)入社會(huì),嵌入式計(jì)算機(jī)發(fā)展的目標(biāo)是專用電腦,實(shí)現(xiàn)“普遍化計(jì)算”,因此可以稱嵌入式智能芯片是構(gòu)成未來世界的“數(shù)字基因”。正如我國(guó)資深嵌入式系統(tǒng)專家—沈緒榜院士的預(yù)言, “未來十年將會(huì)產(chǎn)生頭大小、具有超過一億次運(yùn)算能力的嵌入式智能芯片”,將為我們提供無限的創(chuàng)造空間。
由于在后臺(tái)已完成了界面繪制,采用雙緩沖繪圖,可有效消除閃爍。參考雙緩沖繪圖的做法,為了解決耗時(shí)復(fù)合控件和整個(gè)界面在刷新時(shí)的矛盾,本文的思路是當(dāng)界面,需要刷新時(shí)先不刷新復(fù)合控件,而是在背景上用一幅畫布替代復(fù)合控件區(qū)域,這種方法特別適合于復(fù)合控件變化較小而整個(gè)界面需要刷新的情況。由于耗時(shí)復(fù)合控件的禁止刷新,整個(gè)刷新過程將會(huì)快速完成;最后再調(diào)用復(fù)合控件的setUpdateEnable(true)重新使能復(fù)合控件的刷新功能。更進(jìn)一步的方法是,只有當(dāng)耗時(shí)復(fù)合控件變化時(shí)才調(diào)用復(fù)合控件的setUpdateEnable(true)允許刷新操作,其余時(shí)刻均在背景上使用QPixmap繪制代替。具體做法是在確定了耗時(shí)復(fù)合控件后,構(gòu)造一幅畫布QPixmap,利用QPixmap::grabWindow()函數(shù)在畫布上繪制出該復(fù)合控件所占區(qū)域圖形。
4 結(jié)語
系統(tǒng)綜合利用了ARM和FPGA的優(yōu)點(diǎn),為了增強(qiáng)靶場(chǎng)破片測(cè)速系統(tǒng)的便攜性和實(shí)時(shí)性,提出了一種基于嵌入式技術(shù)的靶場(chǎng)破片測(cè)速系統(tǒng)設(shè)計(jì)方法。系統(tǒng)硬件上采用ARM+FPGA的架構(gòu),軟件上不僅采用Qt/Embedded設(shè)計(jì)了圖形界面,而且給出了嵌入式設(shè)備上Qt/Embedded程序的優(yōu)化方法。系統(tǒng)設(shè)計(jì)結(jié)構(gòu)清晰、條理嚴(yán)整、程序健壯,這種系統(tǒng)設(shè)計(jì)結(jié)構(gòu)和對(duì)Qt/E程序的優(yōu)化思想對(duì)同類設(shè)計(jì)具有較大的參考意義。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21983瀏覽量
614630 -
ARM
+關(guān)注
關(guān)注
134文章
9321瀏覽量
375433 -
嵌入式
+關(guān)注
關(guān)注
5143文章
19561瀏覽量
315443
發(fā)布評(píng)論請(qǐng)先 登錄
基于S3C2440的無線物流終端機(jī)的設(shè)計(jì)與應(yīng)用
基于S3C2440檢測(cè)系統(tǒng)的設(shè)計(jì)與應(yīng)用
s3c2440 mmc和camera的linux驅(qū)動(dòng)

基于S3C2440的Ethercat實(shí)現(xiàn)

基于S3C2440和μC%2fOS的FAT文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
S3C2440如何設(shè)置系統(tǒng)時(shí)鐘
基于S3C2440的裂紋實(shí)時(shí)測(cè)量系統(tǒng)的設(shè)計(jì)

評(píng)論