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

基于S3C2440的Ethercat實現

評論