《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于DSP28335的超聲報靶器軟件程序優(yōu)化設(shè)計
基于DSP28335的超聲報靶器軟件程序優(yōu)化設(shè)計
2017年微型機(jī)與應(yīng)用第9期
管文輝,蘇永亮
總參謀部第六十研究所, 江蘇 南京 210016
摘要: 針對DSP具有浮點(diǎn)運(yùn)算單元,運(yùn)算能力強(qiáng)的特點(diǎn),提出了一種將復(fù)雜的報靶算法移植到DSP中進(jìn)行計算的軟件設(shè)計方法,并在此過程中通過移植μCOSII操作系統(tǒng),對任務(wù)間進(jìn)行合理調(diào)度。優(yōu)化報靶算法等措施有效提高了多靶標(biāo)同時報靶的實(shí)時性和可靠性。
Abstract:
Key words :

  管文輝,蘇永亮

  (總參謀部第六十研究所, 江蘇 南京 210016)

  摘要:針對DSP具有浮點(diǎn)運(yùn)算單元,運(yùn)算能力強(qiáng)的特點(diǎn),提出了一種將復(fù)雜的報靶算法移植到DSP中進(jìn)行計算的軟件設(shè)計方法,并在此過程中通過移植μCOSII操作系統(tǒng),對任務(wù)間進(jìn)行合理調(diào)度。優(yōu)化報靶算法等措施有效提高了多靶標(biāo)同時報靶的實(shí)時性和可靠性。

  關(guān)鍵詞DSP28335;μCOS-II移植;超聲報靶;程序優(yōu)化

  中圖分類號:TP311.1文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.09.025

  引用格式:管文輝,蘇永亮.基于DSP28335的超聲報靶器軟件程序優(yōu)化設(shè)計[J].微型機(jī)與應(yīng)用,2017,36(9):85-87,91.

0引言

  目前針對大口徑直瞄火炮射擊進(jìn)行報靶的設(shè)備主要采用開放式激波報靶技術(shù)和光幕報靶技術(shù)。激波報靶技術(shù)由于其布設(shè)簡便、野外適應(yīng)性強(qiáng)、報靶精度較高的特點(diǎn)目前已在不少部隊和基地中推廣使用。但由于開放式激波報靶算法較為復(fù)雜,目前常用的做法是將傳感器采集的時差數(shù)據(jù)通過單片機(jī)及通信鏈路上傳至上位機(jī)進(jìn)行計算,計算完成后再對照實(shí)際使用的靶型確認(rèn)命中位置與效果,最終再將命中結(jié)果反饋給靶標(biāo)終端。當(dāng)多臺靶標(biāo)組成的靶標(biāo)系統(tǒng)同時進(jìn)行射擊訓(xùn)練時,短時間內(nèi)會產(chǎn)生大量時差數(shù)據(jù)需要上傳與計算。而靶標(biāo)系統(tǒng)中的主控計算機(jī)同時還負(fù)責(zé)控制靶標(biāo)的功能,此時容易造成主控計算機(jī)端負(fù)荷迅速增大,還易導(dǎo)致報靶時間延遲甚至報靶數(shù)據(jù)丟失的風(fēng)險。為了提高激波報靶的實(shí)時性和可靠性,需要將算法下移,在靶標(biāo)終端中完成計算,并判斷命中效果。

1硬件平臺設(shè)計

  以往的靶標(biāo)中多采用ARM處理器或單片機(jī)將FPGA采集的時差數(shù)據(jù)打包上傳,經(jīng)過上位機(jī)計算命中位置后再將命中數(shù)據(jù)下發(fā)到靶標(biāo)端的方法。在開放式激波檢靶算法中通過幾何法推導(dǎo)了激波到達(dá)時間與彈丸速度、水平入射角、高低入射角、著靶位置等待求量的約束關(guān)系,然后將激波傳遞時間表示為包含待求量的顯式方程,最后通過最小二乘法求解著靶參數(shù)。由于算法中存在有浮點(diǎn)數(shù)的運(yùn)算,有必要在新的設(shè)計中選擇具有浮點(diǎn)運(yùn)算單元的DSP來代替原來的處理器,這里選擇TI公司的TMS320F28335芯片,它釆用高性能靜態(tài)CMOS技術(shù),具有150 MHz 的高速處理能力,具備32位浮點(diǎn)運(yùn)算單元,6個DMA 通道支持ADC、McBSP 和EMIF,片內(nèi)集成有34 K×16 bit的RAM和256 K×16 bit的Flash,程序在Flash中直接運(yùn)行時代碼執(zhí)行性能大致為90~100 MIPS[1]。報靶電路中激波采集部分電路將采集到的時差信號送到FPGA,經(jīng)過FPGA采集各路信號的時差后將該數(shù)據(jù)經(jīng)串口送至DSP28335。同時系統(tǒng)配合外圍電路還要完成與無線電臺的無線通信、靶標(biāo)起倒控制、指示燈狀態(tài)指示、命中效果觸發(fā)等任務(wù)。系統(tǒng)硬件平臺框圖如圖1所示。

001.jpg

2系統(tǒng)任務(wù)規(guī)劃及μCOS-II移植

  根據(jù)軟件整體結(jié)構(gòu)的特點(diǎn),在本設(shè)計應(yīng)用中既需要進(jìn)行較復(fù)雜的浮點(diǎn)運(yùn)算,又需要對多個控制對象進(jìn)行統(tǒng)籌控制。單一的DSP芯片運(yùn)行前后臺操作系統(tǒng)可以進(jìn)行復(fù)雜的浮點(diǎn)運(yùn)算但很難同時兼顧多個任務(wù)間的統(tǒng)籌調(diào)度。而如果使用ARM+DSP的方式進(jìn)行配合處理,產(chǎn)品的成本和系統(tǒng)的復(fù)雜程度都將大大提高。因此將μCOS-II移植到DSP等高性能處理器上對于提高產(chǎn)品的質(zhì)量,縮短開發(fā)周期和拓展DSP應(yīng)用范圍有著重要的意義。

  μCOS-II作為一個源代碼公開的多任務(wù)實(shí)時操作系統(tǒng),最多可支持63個任務(wù),其內(nèi)核為占先式,支持信號量、郵箱、消息隊列等多種進(jìn)程間通信機(jī)制。同時用戶可以根據(jù)需求對內(nèi)核中的功能模塊裁剪。由于在μCOS-Ⅱ設(shè)計時就已經(jīng)充分考慮了可移植性,所以它的移植相對來說比較容易。移植工作包括以下幾個方面內(nèi)容:(1)了解所采用的系統(tǒng)核心;(2)編寫移植代碼;(3)測試移植代碼。這里主要闡述編寫移植代碼過程中的幾個關(guān)鍵文件,即OS_CPU.H、OS_CPU_C.C以及OS_CPU_A.ASM這三個文件[2]。

  其中OS_CPU.H文件,其主要作用是聲明與硬件相關(guān)的數(shù)據(jù)類型,定義與中斷有關(guān)的宏定義, 定義堆棧增長方向宏定義。OS_CPU_C.C文件中需要編寫簡單的C函數(shù),其中1個是任務(wù)堆棧初始化函數(shù),另外9個是系統(tǒng)對外的接口函數(shù),這9個函數(shù)必須聲明,但是并不一定要包含任何代碼。OS_CPU_A.ASM文件里主要寫了幾個與硬件相關(guān)的代碼,包含任務(wù)的切換和中斷入口函數(shù)。其中任務(wù)的切換需要用匯編語言自行編寫一個函數(shù)_OSCtxSw來實(shí)現(xiàn)。在編寫這些文件時需要注意以下幾個方面:

  (1) 聲明數(shù)據(jù)類型。μCOS-II考慮到通用性, 在內(nèi)核中使用了自定義數(shù)據(jù)類型, 此類型與編譯器無關(guān), 這就要求移植時必須定義微處理器的數(shù)據(jù)類型與μCOSII的數(shù)據(jù)類型相一致, 保證移植后的μCOSII在DSP28335平臺上順利運(yùn)行, 在移植中應(yīng)將其聲明為CCS編譯器可識別的類型。

 ?。?)中斷宏定義。μCOS-II在內(nèi)核中通過禁止中斷來保護(hù)臨界區(qū),因此需要在C語言中插入禁止和允許中斷的匯編代碼,DSP里用SETC INTM來屏蔽中斷,用CLRC INTM來使能中斷[3]。所以移植代碼定義了下面兩條宏定義:

  #define OS_ ENTER_CRITICAL0 asm (“SETC INTM”)

  #define OS_ EXIT_ CRITICAL0 asm (“CLRC INTM”)

 ?。?)設(shè)置棧的增長方向。μCOSII需要知道堆棧的底端地址在哪里,所以需要指明堆棧的增長方向。絕大多數(shù)微處理器和微控制器的堆棧是從上往下遞減的, 但是也有某些處理器使用的是相反的方式。DSP28335 的堆棧方向是從下往上增長的,所以:#define OS_STK_GROWTH 0;

  通過對應(yīng)用功能的需求分析,歸納出幾個主要的功能任務(wù)模塊:(1)與上位機(jī)的通信數(shù)據(jù)交互任務(wù),在該任務(wù)中需要根據(jù)協(xié)議解析起靶、倒靶、復(fù)位等控制命令,還需要將本機(jī)的起倒、位置、是否命中、電池電量等狀態(tài)信息匯總打包回傳;(2)報靶數(shù)據(jù)處理任務(wù),該任務(wù)主要負(fù)責(zé)收集時差數(shù)據(jù)并通知其他任務(wù)進(jìn)行上傳或計算,同時還負(fù)責(zé)監(jiān)控數(shù)據(jù)計算任務(wù);(3)報靶數(shù)據(jù)計算任務(wù),該任務(wù)主要負(fù)責(zé)報靶數(shù)據(jù)的方程組解算;(4)靶型命中計算,主要負(fù)責(zé)根據(jù)Flash中存儲的幾種靶型判斷命中坐標(biāo)是否落在靶面上;(5)電機(jī)控制和指示燈控制等配屬任務(wù)。

002.jpg

  軟件整體結(jié)構(gòu)如圖2所示。一共分為4個任務(wù),任務(wù)0負(fù)責(zé)報靶時差數(shù)據(jù)采集,優(yōu)先級7;任務(wù)1負(fù)責(zé)時差數(shù)據(jù)計算,優(yōu)先級8;任務(wù)2對計算結(jié)果結(jié)合靶型判斷是否命中,測得彈速是否超速及串口數(shù)據(jù)回復(fù),優(yōu)先級9;任務(wù)3負(fù)責(zé)電機(jī)起靶、倒靶控制及指示燈控制。首先中斷負(fù)責(zé)進(jìn)行串口數(shù)據(jù)接收并根據(jù)協(xié)議拆包解析,之后通過郵箱MboxSem觸發(fā)Task0或Task3,在Task0中通過函數(shù)CSenslocCal()初始化相關(guān)參數(shù),之后通過getparam()采集時差、溫度、風(fēng)速、角度等信息,通過caculate()函數(shù)進(jìn)行相關(guān)計算即可完成報靶數(shù)據(jù)處理。

3程序優(yōu)化設(shè)計

  3.1設(shè)置優(yōu)化

  由于報靶算法涉及到32位浮點(diǎn)數(shù)運(yùn)算,為保證實(shí)時性必須對程序進(jìn)行優(yōu)化設(shè)計。首先是任務(wù)堆棧的分配。堆棧用于任務(wù)切換和影響中斷時保存CPU寄存器中的內(nèi)容及其他任務(wù)私有數(shù)據(jù)。每個任務(wù)都有自己的堆??臻g,任務(wù)堆棧的容量是由應(yīng)用程序指定的,堆棧大小必需要考慮用戶的任務(wù)所調(diào)用的函數(shù)嵌套情況,分配的局部變量的數(shù)目,以及可能的中斷服務(wù)程序嵌套的堆棧需求,另外必須能存儲所有的CPU寄存器。DSP28335包含32K×16 bit的RAM,分成8塊4 KB大小的區(qū)域,本設(shè)計中一共需要5個任務(wù),初步設(shè)定每個任務(wù)堆棧大小為512 B,在后續(xù)任務(wù)中堆棧大小可以由兩種方案確定:

  (1)先將堆棧設(shè)置為最大,再逐步減小,直到程序不能正常運(yùn)行,此時為所創(chuàng)建任務(wù)的實(shí)際所需堆棧大小。

  (2)利用μCOSII自帶的堆棧檢查函數(shù)OSTaskStkChk()來檢測每個任務(wù)已經(jīng)使用的堆??臻g和剩余的堆棧空間來確定堆棧的大小。

003.jpg

  初次運(yùn)行時出現(xiàn)了無法allocate.text段的報錯提示,這表示程序段代碼和常量占用內(nèi)存過多,需要對其分配進(jìn)行重新定義。通常片內(nèi)RAM地址分配如圖3所示,其中RAML段為0x008000~0x00B000,RAMH段為0x00C000~0x00F000。通過調(diào)整RAML和RAMH的分配空間定義來滿足程序要求。這里重新定義RAML段為0x008000~0x00C000,RAMH段為0x00D000~0x00F000。

  在進(jìn)行報靶數(shù)據(jù)的計算時有時會遇到RAM內(nèi)部空間不足導(dǎo)致數(shù)據(jù)溢出,最終造成無法計算的問題。通過以下兩種方法來解決:(1)如果數(shù)據(jù)為.const類型,定義在Flash中;(2)利用外擴(kuò)SRAM,具體方法是在CMD文件中定義一段數(shù)據(jù)空間,之后將較大的數(shù)組編譯到CMD中定義的段中,并在外擴(kuò)SRAM的函數(shù)中予以說明。

  3.2程序及算法優(yōu)化

  根據(jù)算法模型求解方程組X=[SxSyVbαβτ]T,獲得彈丸命中位置、著靶速度及入射角度。由于解算方程組是一組復(fù)雜的非線性方程組,沒有解析解,必須通過GaussNewton等迭代方法進(jìn)行求解[4]。這里取一定的初始迭代值,根據(jù)解非線性方程的最小二乘廣義逆法進(jìn)行迭代,得到最終結(jié)果。算法中對于初始迭代值的選取有一定的要求,若初始值選取相差真實(shí)值太大,則會出現(xiàn)無窮大解,因此實(shí)際求解中采用區(qū)間搜尋的方法進(jìn)行迭代計算[5]。將算法編寫成C代碼,劃分為125個區(qū)間,而在實(shí)際計算中,一般在得到正確結(jié)果即退出搜索程序,若125個區(qū)間全部迭代完成,仍然沒有結(jié)果,則解算不出。

  為了計算的快捷和報靶的可靠,得到時差數(shù)據(jù)后DSP先按照協(xié)議打包將該組數(shù)據(jù)上傳給上位機(jī),然后再自行進(jìn)行計算。由于報靶算法的核心是解非線性方程組,解算需要通過多次迭代進(jìn)行,且即使是多次迭代也會存在非線性方程組無解的可能性。故此運(yùn)算過程在時間和結(jié)果上存在一定的不確定性。在規(guī)定時間內(nèi)DSP得出計算結(jié)果,則存儲結(jié)果并進(jìn)入命中判斷任務(wù),如在規(guī)定時間內(nèi)沒有算出結(jié)果,則由上位機(jī)發(fā)送結(jié)果給靶標(biāo),明確告知該發(fā)數(shù)據(jù)是否命中,后續(xù)無需繼續(xù)進(jìn)入判斷命中任務(wù)。如都沒有計算出結(jié)果,為防止DSP計算顯式方程時對于極個別數(shù)據(jù)陷入死循環(huán),除了設(shè)置必要的軟件看門狗以外還需要設(shè)計外部強(qiáng)制復(fù)位程序。當(dāng)FPGA將時差數(shù)據(jù)交予DSP進(jìn)行解算時隨即開始啟動定時任務(wù),在規(guī)定的時間內(nèi)DSP得出方程解則通過I/O口對定時器復(fù)位;如沒有在規(guī)定的時間內(nèi)得出方程解,則FPGA對DSP進(jìn)行強(qiáng)制復(fù)位。數(shù)據(jù)處理程序流程圖如圖4所示。

  完成報靶時差數(shù)據(jù)的解算后還需要針對特定的靶型數(shù)據(jù)判定彈著點(diǎn)是否命中靶標(biāo)。在上位機(jī)進(jìn)行計算時是按照每個像素的坐標(biāo)逐個比對來進(jìn)行的。由于PC內(nèi)存容量大,所以計算起來并不耗時。但是將此算法放置在DSP中進(jìn)行計算則要占用大量內(nèi)存資源,且需要耗費(fèi)較長時間。特別是當(dāng)步戰(zhàn)車等裝甲車輛采用較小口徑速射炮進(jìn)行射擊時,往往會造成程序的反應(yīng)過慢,影響部隊訓(xùn)練。這里提出一種新的快捷算法。根據(jù)目前裝甲部隊訓(xùn)練大綱中的主要靶型分析,基本形狀都是凸多邊形。故本設(shè)計中具體采用射線法,實(shí)現(xiàn)思想為:由點(diǎn)P向X軸正方向發(fā)射一條射線,穿過多邊形線段上的次數(shù)為奇數(shù)則在多邊形內(nèi),為偶數(shù)則在多邊形外。其中圖形是由按逆時針方向排列的各個頂點(diǎn)來表示的,值得注意的是最后要再將第一個點(diǎn)表示一次。如圖5所示對于正面坦克靶型P1為命中彈點(diǎn),P2為未命中彈點(diǎn)。通過此算法DSP能夠快速地判斷出彈著點(diǎn)是否命中了靶型。

 

004.jpg

  

005.jpg

4結(jié)論

  本設(shè)計通過在DSP28335平臺上移植μCOSII操作系統(tǒng),對平臺的軟硬件設(shè)置進(jìn)行優(yōu)化配置,通過對多個任務(wù)間的調(diào)度和監(jiān)控、優(yōu)化報靶算法等多種措施實(shí)現(xiàn)了報靶算法的下移和程序的優(yōu)化設(shè)計,使得靶標(biāo)具備了自主計算彈著點(diǎn)、自主判斷命中結(jié)果的功能。通過實(shí)際應(yīng)用對比,靶標(biāo)系統(tǒng)通信網(wǎng)絡(luò)的數(shù)據(jù)量降低了約30%,系統(tǒng)報靶功能的實(shí)時性和穩(wěn)定性得到了明顯提高。

  參考文獻(xiàn)

 ?。?] Texas Instruments. TMS28335 digital signal ctontrollers data manual[EB/OL].(2016 03 09)[2016 12 01].http://wwws.ti.com/sc/tchlit,2007.

 ?。?] 陳果,馮靜.ucos系統(tǒng)及其消息隊列詳析[J].電子元器件應(yīng)用,2011(3):3842.

 ?。?] 許川佩,王偉,戴葵,等.實(shí)時多任務(wù)系統(tǒng)uc/osII在DSP上的移植[J].微計算機(jī)信息,2007,23(35):64-66.

 ?。?] 蔣東東. 基于被動聲定位的大靶面彈著點(diǎn)坐標(biāo)測量方法研究[D].南京:南京理工大學(xué),2011.

 ?。?] 樊長虹,杜立,管文輝,等.風(fēng)速對聲點(diǎn)陣立靶系統(tǒng)建模及算法的影響研究[J].應(yīng)用聲學(xué),2015,34(5):21-24.


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