《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于DM3730的LFMCW雷達(dá)中間件設(shè)計(jì)與實(shí)現(xiàn)
基于DM3730的LFMCW雷達(dá)中間件設(shè)計(jì)與實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第5期
唐國(guó)珍,張士宗,裴 旭
電子科技大學(xué) 電子科學(xué)技術(shù)研究院,四川 成都611731
摘要: 設(shè)計(jì)和實(shí)現(xiàn)了一種中間件軟件,用于連接基于多播機(jī)制的雷達(dá)掃描單元和基于單播機(jī)制的顯示單元,并利用DM3730中ARM與DSP雙核協(xié)作機(jī)制,將雷達(dá)坐標(biāo)轉(zhuǎn)換算法的實(shí)現(xiàn)交給DSP核處理,解決了單核ARM處理器在數(shù)據(jù)處理方面性能的不足(丟包問(wèn)題)。
關(guān)鍵詞: 多播 單播 中間件 DM3730 嵌入式
中圖分類(lèi)號(hào): TP311.5
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)05-0043-03
Design and implementation of the LFMCW radar middleware based on DM3730
Tang Guozhen,Zhang Shizong,Pei Xu
Research Institute of Electronic Science and Technology, University of Electronic Science and Technology of China
Abstract: This paper designs and implements a middleware software, to shield the different of interface between radar scanning unit based on multicast mechanism and display unit based on unicast mechanism, and by using the cooperation mechanism of ARM and DSP dual-core in DM3730, puts the implement of radar coordinate conversion algorithm processing to DSP core to solve the problem that single-core ARM processor performance does not meet the requirements of data processing speed(packet loss) . Tests show that after joining the middleware, it can not only guarantee normal communication between radar scanning unit and the display unit, improve portability of the display unit, but also optimize the display performance of the system to meet the performance requirements of embedded systems.
Key words : multicast;unicast;middleware;DM3730;embedded

   

0 引言

    LFMCW(線(xiàn)性調(diào)頻連續(xù)波雷達(dá))具有CW雷達(dá)發(fā)射功率小的特點(diǎn),更兼有脈沖雷達(dá)測(cè)距的能力,廣泛應(yīng)用于導(dǎo)航、測(cè)量等領(lǐng)域[1]?;?a class="innerlink" href="http://ihrv.cn/tags/多播" title="多播" target="_blank">多播機(jī)制對(duì)其組網(wǎng),可以實(shí)現(xiàn)多臺(tái)雷達(dá)掃描終端與多臺(tái)顯示終端同步相連。顯示終端的主要功能包括控制雷達(dá)狀態(tài)和顯示雷達(dá)圖像兩個(gè)部分。采用多線(xiàn)程編程,可以讓不同的顯示終端有不同的功能,比如一部分顯示終端只具有顯示雷達(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á)天線(xiàn)和FPGA組成。雷達(dá)天線(xiàn)負(fù)責(zé)采集雷達(dá)數(shù)據(jù),F(xiàn)PGA負(fù)責(zé)AD采樣,并實(shí)現(xiàn)了海雜波抑制、雨雪抑制、海浪抑制等算法。FPGA通過(guò)網(wǎng)線(xiàn)將處理好的數(shù)據(jù)發(fā)送至ARM端,ARM端負(fù)責(zé)將接收到的雷達(dá)數(shù)據(jù)作坐標(biāo)轉(zhuǎn)換處理并顯示雷達(dá)圖像[2]。另外,ARM端還負(fù)責(zé)控制雷達(dá)狀態(tài)。

qrs6-t1.gif

1.2 系統(tǒng)邏輯結(jié)構(gòu)

    系統(tǒng)邏輯結(jié)構(gòu)如圖2所示。多播使用D類(lèi)地址作為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)事件。

qrs6-t2.gif

2 中間件功能設(shè)計(jì)與實(shí)現(xiàn)

    中間件是連接兩個(gè)獨(dú)立應(yīng)用程序的橋梁。兩個(gè)或多個(gè)具有不同通信接口的應(yīng)用程序通過(guò)中間件依然可以正常通信。所以,中間件能屏蔽不同的接口,幫助用戶(hù)靈活、高效地開(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。采用多線(xiàn)程編程來(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é)議。

qrs6-t3.gif

    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á)掃描線(xiàn)數(shù)字信號(hào)。中間件通過(guò)加入多播組2從而接收到完整的掃描數(shù)據(jù)。由于UI顯示直角坐標(biāo)數(shù)據(jù)較為通用和方便,所以中間件一個(gè)重要功能是坐標(biāo)轉(zhuǎn)換。

qrs6-t4.gif

2.3 數(shù)據(jù)處理過(guò)程中單核ARM性能的不足

    如圖5所示是FPGA發(fā)送至ARM端的雷達(dá)數(shù)據(jù)格式,ns代表線(xiàn)號(hào),a代表掃描線(xiàn)角度。每包雷達(dá)數(shù)據(jù)由32條掃描線(xiàn)構(gòu)成,每條線(xiàn)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è)非常好的選擇。

qrs6-t5.gif

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)存。

qrs6-t6.gif

    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步:

qrs6-t7.gif

    (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資源。

qrs6-t8.gif

qrs6-t9.gif

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] 楊建宇.線(xiàn)性調(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。