文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)05-0043-03
0 引言
LFMCW(線性調(diào)頻連續(xù)波雷達(dá))具有CW雷達(dá)發(fā)射功率小的特點(diǎn),更兼有脈沖雷達(dá)測(cè)距的能力,,廣泛應(yīng)用于導(dǎo)航,、測(cè)量等領(lǐng)域[1]?;?a class="innerlink" href="http://wldgj.com/tags/多播" title="多播" target="_blank">多播機(jī)制對(duì)其組網(wǎng),,可以實(shí)現(xiàn)多臺(tái)雷達(dá)掃描終端與多臺(tái)顯示終端同步相連。顯示終端的主要功能包括控制雷達(dá)狀態(tài)和顯示雷達(dá)圖像兩個(gè)部分,。采用多線程編程,,可以讓不同的顯示終端有不同的功能,比如一部分顯示終端只具有顯示雷達(dá)圖像的功能,,而另一部分顯示終端同時(shí)具有控制和顯示兩個(gè)功能(這部分顯示終端可以提供給管理員使用),。由于顯示單元是基于單播機(jī)制,為了提高顯示單元的可移植性,,屏蔽雷達(dá)掃描單元和顯示單元通信接口的不同,,可以用中間件負(fù)責(zé)兩部分的通信,。
DM3730是TI公司生產(chǎn)的雙核(ARM+DSP)架構(gòu)處理器,。其低功耗,、高性能、低價(jià)格的特點(diǎn)深受廣大嵌入式開(kāi)發(fā)者的喜愛(ài),。顯示終端基于DM3730平臺(tái),,掃描單元發(fā)送的雷達(dá)數(shù)據(jù)是極坐標(biāo)表示,必須通過(guò)坐標(biāo)轉(zhuǎn)換后才能在終端上正常顯示,。由于坐標(biāo)轉(zhuǎn)換計(jì)算量過(guò)大,,用ARM處理器實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換算法會(huì)大大增加系統(tǒng)負(fù)擔(dān),并且會(huì)產(chǎn)生嚴(yán)重的丟包現(xiàn)象,。所以將算法實(shí)現(xiàn)交給DSP處理,。實(shí)測(cè)發(fā)現(xiàn),經(jīng)過(guò)優(yōu)化后的ARM處理器CPU使用率大大降低,,雷達(dá)數(shù)據(jù)處理過(guò)程中再無(wú)丟包現(xiàn)象,。
1 系統(tǒng)結(jié)構(gòu)
1.1 物理結(jié)構(gòu)
如圖1所示,雷達(dá)掃描單元由雷達(dá)天線和FPGA組成,。雷達(dá)天線負(fù)責(zé)采集雷達(dá)數(shù)據(jù),,F(xiàn)PGA負(fù)責(zé)AD采樣,并實(shí)現(xiàn)了海雜波抑制,、雨雪抑制,、海浪抑制等算法。FPGA通過(guò)網(wǎng)線將處理好的數(shù)據(jù)發(fā)送至ARM端,,ARM端負(fù)責(zé)將接收到的雷達(dá)數(shù)據(jù)作坐標(biāo)轉(zhuǎn)換處理并顯示雷達(dá)圖像[2],。另外,ARM端還負(fù)責(zé)控制雷達(dá)狀態(tài),。
1.2 系統(tǒng)邏輯結(jié)構(gòu)
系統(tǒng)邏輯結(jié)構(gòu)如圖2所示,。多播使用D類地址作為IP地址,應(yīng)用程序可以通過(guò)加入一個(gè)或者多個(gè)多播組,,從而僅接收所在多播組的數(shù)據(jù)[3],。多播組1~4分別代表雷達(dá)控制信息多播組、雷達(dá)數(shù)據(jù)多播組,、雷達(dá)狀態(tài)反饋信息多播組,、keepalive多播組。中間件與UI顯示單元的連接方式是單播機(jī)制,。加入雷達(dá)控制信息多播組的成員可以發(fā)送控制指令給該多播組的雷達(dá)掃描單元,,從而控制其狀態(tài)。加入雷達(dá)數(shù)據(jù)多播組的成員可以接收到FPGA處理好的雷達(dá)數(shù)據(jù),。加入雷達(dá)反饋信息多播組的成員可以接收到雷達(dá)自身狀態(tài)的反饋信息,,比如當(dāng)前量程,、增益等[4]。反饋系統(tǒng)是為了增強(qiáng)雷達(dá)顯示系統(tǒng)的實(shí)時(shí)性和健壯性,。Keepalive多播組比較特殊,,雷達(dá)掃描單元會(huì)定期檢查該多播組有無(wú)keepalive指令,如果10 s內(nèi)沒(méi)有收到該指令,,則自動(dòng)關(guān)機(jī),。所以,中間件必須加入該多播組并不斷發(fā)送keepalive指令才能保證雷達(dá)持續(xù)工作,。GPS傳感器和AIS傳感器將采集和處理后的數(shù)據(jù)發(fā)送至串口,,中間件從串口搜集這些數(shù)據(jù),解析打包后通過(guò)socket發(fā)送至UI,??梢?jiàn),中間件可以選擇加入這幾個(gè)多播組的一個(gè)或者全部,,從而擁有不同的功能組合,。在這種邏輯結(jié)構(gòu)下,中間件使得UI顯示單元抽象了所有的數(shù)據(jù)來(lái)源,,它只負(fù)責(zé)接收網(wǎng)絡(luò)數(shù)據(jù),、顯示圖像以及響應(yīng)鼠標(biāo)鍵盤(pán)事件。
2 中間件功能設(shè)計(jì)與實(shí)現(xiàn)
中間件是連接兩個(gè)獨(dú)立應(yīng)用程序的橋梁,。兩個(gè)或多個(gè)具有不同通信接口的應(yīng)用程序通過(guò)中間件依然可以正常通信,。所以,中間件能屏蔽不同的接口,,幫助用戶靈活,、高效地開(kāi)發(fā)應(yīng)用程序,并大大提高應(yīng)用程序的可移植性[5],,這在嵌入式應(yīng)用中意義重大,。
基于以上分析,本中間件軟件主要實(shí)現(xiàn)5個(gè)功能:(1)控制雷達(dá)狀態(tài),;(2)接收處理雷達(dá)掃描數(shù)據(jù),;(3)接收處理雷達(dá)反饋信息;(4)發(fā)送keepalive指令,;(5)提供其他功能接口,,如GPS和AIS。采用多線程編程來(lái)實(shí)現(xiàn)這些功能,。下面重點(diǎn)介紹雷達(dá)狀態(tài)控制和雷達(dá)數(shù)據(jù)接收處理的實(shí)現(xiàn)流程,。
2.1 雷達(dá)狀態(tài)控制
雷達(dá)控制流程如圖3所示。協(xié)議1是UI顯示單元和中間件控制命令協(xié)議,協(xié)議2是中間件與掃描單元控制命令協(xié)議,。
ARM端可以將雷達(dá)掃描單元視為一個(gè)通過(guò)網(wǎng)絡(luò)控制的移位寄存器組,,通過(guò)設(shè)置這些寄存器就可以改變雷達(dá)的狀態(tài)。
雷達(dá)控制命令包括開(kāi)關(guān)機(jī),、增益調(diào)節(jié),、量程調(diào)節(jié)、海雜波抑制調(diào)節(jié),、雨雪抑制調(diào)節(jié),、掃描單元轉(zhuǎn)速等,。UI顯示單元通過(guò)響應(yīng)鼠標(biāo)或觸摸屏事件發(fā)送命令給中間件,;中間件解析并根據(jù)協(xié)議2重新合成報(bào)文發(fā)送至多播組1;掃描單元接收并解析多播組的命令,,設(shè)置移位寄存器,,從而改變雷達(dá)運(yùn)行狀態(tài)。
2.2 數(shù)據(jù)接收處理流程
數(shù)據(jù)處理流程如圖4所示,。其中,,協(xié)議3為雷達(dá)與中間件的數(shù)據(jù)協(xié)議,協(xié)議4為中間件與UI顯示單元的數(shù)據(jù)協(xié)議,。雷達(dá)掃描原始數(shù)據(jù)預(yù)先已經(jīng)經(jīng)過(guò)FPGA處理,,這里的雷達(dá)數(shù)據(jù)是極坐標(biāo)雷達(dá)掃描線數(shù)字信號(hào)。中間件通過(guò)加入多播組2從而接收到完整的掃描數(shù)據(jù),。由于UI顯示直角坐標(biāo)數(shù)據(jù)較為通用和方便,,所以中間件一個(gè)重要功能是坐標(biāo)轉(zhuǎn)換。
2.3 數(shù)據(jù)處理過(guò)程中單核ARM性能的不足
如圖5所示是FPGA發(fā)送至ARM端的雷達(dá)數(shù)據(jù)格式,,ns代表線號(hào),,a代表掃描線角度。每包雷達(dá)數(shù)據(jù)由32條掃描線構(gòu)成,,每條線536 bit,,每包數(shù)據(jù)17 160 bit,雷達(dá)掃描單元轉(zhuǎn)速V為2.4 s/rad,,每一圈數(shù)據(jù)包含64個(gè)包,。所以,必須在37 ms內(nèi)處理完一個(gè)數(shù)據(jù)包,,否則將產(chǎn)生丟包現(xiàn)象,。實(shí)測(cè)發(fā)現(xiàn),ARM處理每包的時(shí)間是100 ms左右,,遠(yuǎn)遠(yuǎn)未達(dá)到要求,,并且中間件CPU占有率高達(dá)40%,進(jìn)行雷達(dá)控制操作時(shí)甚至出現(xiàn)卡頓現(xiàn)象。為了解決丟包問(wèn)題和降低中間件CPU占有率,,將坐標(biāo)轉(zhuǎn)換算法實(shí)現(xiàn)交給DPS處理是一個(gè)非常好的選擇,。
3 算法移植
DM3730微處理器由1 GHz的ARM Cortex-A8 Core和800 MHz的TMS320C64x+ DSP Core兩部分組成,并提供了一整套完整的開(kāi)發(fā)套件,。
3.1 內(nèi)存劃分
如圖6所示,,將物理內(nèi)存的前120 MB劃分給ARM處理器用于Linux操作系統(tǒng);CMEM是ARM和DSP用于數(shù)據(jù)通信的內(nèi)存區(qū)域,,大小為10 MB,;Dsplink是用于ARM與DSP底層通信的區(qū)域,大小為1 MB,;Heaps是DSP運(yùn)行算法時(shí)的堆,。ARM處理器和DSP處理器共享256 MB內(nèi)存,ARM端運(yùn)行Linux操作系統(tǒng),,DSP端運(yùn)行實(shí)時(shí)操作系統(tǒng),。ARM端把這段內(nèi)存通過(guò)MMU映射成虛擬內(nèi)存,而DPS端直接使用物理地址,。由于Linux的內(nèi)存管理機(jī)制,,程序員只能通過(guò)malloc()函數(shù)來(lái)為應(yīng)用程序分配內(nèi)存。程序員不僅不能控制這段內(nèi)存在物理內(nèi)存上的位置,,甚至不知道這些被分成4 KB每頁(yè)的內(nèi)存是否是物理連續(xù)的[6],。相反,DPS端的實(shí)時(shí)操作系統(tǒng)可以直接操作物理地址,。所以,,為了使ARM進(jìn)程(應(yīng)用控制)和DSP(算法加速)的內(nèi)存共享,必須從DDR3嚴(yán)格劃分出一塊內(nèi)存供其共享,。這塊內(nèi)存的大小是可以指定并且是物理連續(xù)的,,這段內(nèi)存不會(huì)被Linux系統(tǒng)直接管理,通過(guò)指定的方法,,ARM端應(yīng)用程序可以訪問(wèn)這段內(nèi)存,。
TI公司的DVSDK開(kāi)發(fā)套件提供模塊cmemk.ko為ARM和DSP通信提供連續(xù)的內(nèi)存。
3.2 實(shí)現(xiàn)流程
如圖7所示是ARM+DSP雙核工作原理,,ARM端將DSP視為一個(gè)標(biāo)準(zhǔn)API接口,,可以直接調(diào)用DSP處理數(shù)據(jù),DSP負(fù)責(zé)實(shí)際的算法實(shí)現(xiàn),。實(shí)現(xiàn)步驟分為以下4步:
(1)完成Codec庫(kù)的開(kāi)發(fā),。將坐標(biāo)轉(zhuǎn)換算法按照xDM標(biāo)準(zhǔn)封裝成Codec庫(kù)。
(2)將Codec庫(kù)集成到Codec Engine中,,使用gmake命令生成擴(kuò)展名為*.X64P的庫(kù),,此庫(kù)即為DSP被調(diào)用時(shí)直接加載運(yùn)行的算法庫(kù),。
(3)調(diào)用gmake生成和*.X64P相對(duì)應(yīng)的*.so庫(kù),在中間件程序中動(dòng)態(tài)加載該庫(kù)即可調(diào)用DSP進(jìn)行坐標(biāo)轉(zhuǎn)換,。
(4)編譯和加載CMEM模塊和Dsplink模塊,,完成物理內(nèi)存劃分。
4 實(shí)驗(yàn)與測(cè)試
實(shí)驗(yàn)效果圖如圖8,、圖9所示,,圖8(a)和8(b)分別為不調(diào)用DSP核和調(diào)用DSP核的雷達(dá)顯示圖像,可以看出調(diào)用DSP核時(shí)解決了丟包現(xiàn)象,,雷達(dá)圖像左下再無(wú)空數(shù)據(jù),。圖9(a)和9(b)分別為不調(diào)用DSP核和調(diào)用DSP核時(shí)的CPU占有率,rd_demeon即為中間件軟件,??梢钥闯觯徽{(diào)用DSP核時(shí)中間件的CPU占有率高達(dá)近40%,,而調(diào)用DSP核后將中間件的CPU占有率降低到20%,,節(jié)約了寶貴的CPU資源,。
5 結(jié)論
本文通過(guò)設(shè)計(jì)和實(shí)現(xiàn)一個(gè)中間件軟件,,屏蔽了基于多播機(jī)制的雷達(dá)掃描單元和基于單播機(jī)制的雷達(dá)顯示單元通信接口的不同,實(shí)現(xiàn)了多個(gè)掃描單元和多個(gè)顯示單元同步相連,,并可以通過(guò)裁剪中間件軟件功能,,讓不同的顯示單元有不同的功能。ARM端通過(guò)標(biāo)準(zhǔn)的API接口調(diào)用DSP核處理數(shù)據(jù),,不僅解決了單核ARM處理器處理數(shù)據(jù)時(shí)性能不足而產(chǎn)生的丟包現(xiàn)象,,而且節(jié)約了寶貴的CPU資源,解決了由于硬件資源的限制而產(chǎn)生的頓卡現(xiàn)象,。測(cè)試結(jié)果表明,,加入中間件后雷達(dá)顯示系統(tǒng)運(yùn)行效果良好,達(dá)到了預(yù)期的效果,。
參考文獻(xiàn)
[1] 楊建宇.線性調(diào)頻連續(xù)波雷達(dá)理論與實(shí)現(xiàn)[D].成都:電子科技大學(xué),,1991.
[2] 范多亮.雷達(dá)顯示終端中的死點(diǎn)分析[J].信息化研究,2010,,36(3):13-15.
[3] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,,2008.
[4] 陳筱倩,周陬,,王宏遠(yuǎn).基于IP組播的流媒體服務(wù)器軟件設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),,2004(12):76-80.
[5] 張?jiān)朴拢虚g件技術(shù)原理與應(yīng)用[M].北京:清華大學(xué)出版社,2010.
[6] BOVET D P,,CESATI M.深入理解Linux內(nèi)核[M].陳莉君,,張瓊聲,張宏偉,譯.北京:中國(guó)電力出版社,,2007.