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

  管文輝,蘇永亮

 ?。倕⒅\部第六十研究所, 江蘇 南京 210016)

  摘要:針對DSP具有浮點運算單元,運算能力強的特點,提出了一種將復雜的報靶算法移植到DSP中進行計算的軟件設計方法,并在此過程中通過移植μCOSII操作系統,對任務間進行合理調度。優化報靶算法等措施有效提高了多靶標同時報靶的實時性和可靠性。

  關鍵詞DSP28335μCOS-II移植;超聲報靶;程序優化

  中圖分類號:TP311.1文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.09.025

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

0引言

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

1硬件平臺設計

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

001.jpg

2系統任務規劃及μCOS-II移植

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

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

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

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

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

  #define OS_ ENTER_CRITICAL0 asm (“SETC INTM”)

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

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

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

002.jpg

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

3程序優化設計

  3.1設置優化

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

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

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

003.jpg

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

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

  3.2程序及算法優化

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

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

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

 

004.jpg

  

005.jpg

4結論

  本設計通過在DSP28335平臺上移植μCOSII操作系統,對平臺的軟硬件設置進行優化配置,通過對多個任務間的調度和監控、優化報靶算法等多種措施實現了報靶算法的下移和程序的優化設計,使得靶標具備了自主計算彈著點、自主判斷命中結果的功能。通過實際應用對比,靶標系統通信網絡的數據量降低了約30%,系統報靶功能的實時性和穩定性得到了明顯提高。

  參考文獻

  [1] 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系統及其消息隊列詳析[J].電子元器件應用,2011(3):3842.

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

 ?。?] 蔣東東. 基于被動聲定位的大靶面彈著點坐標測量方法研究[D].南京:南京理工大學,2011.

 ?。?] 樊長虹,杜立,管文輝,等.風速對聲點陣立靶系統建模及算法的影響研究[J].應用聲學,2015,34(5):21-24.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美视频亚洲色图| 狠狠色伊人亚洲综合网站色| 日本高清xxxx| 亚洲精品无码你懂的| 艹逼视频免费看| 国产精品免费综合一区视频| 一区二区三区视频网站| 日韩午夜r电影在线观看| 亚洲男女一区二区三区| 精品综合一区二区三区| 国产成人AAAAA级毛片| 91自产拍在线观看精品| 成人午夜免费福利视频| 九九热精品视频| 欧美裸体xxxx极品少妇| 午夜电影一区二区| 青青艹在线观看| 国产精品亚洲精品日韩电影| silk131中字在线观看| 无码一区二区三区亚洲人妻| 亚洲AV无码之日韩精品| 武侠古典一区二区三区中文| 午夜精品久久久久久久久| 高清不卡毛片免费观看| 国产精品国产自线拍免费软件| av片在线观看| 性中国videossex古装片| 久久人妻夜夜做天天爽| 欧欧美18videosex性哦欧美美| 亚洲综合色丁香婷婷六月图片| 美女免费视频一区二区三区| 国产又爽又黄无码无遮挡在线观看| 182tv在线观看国产路线一| 大学生情侣在线| 一本大道一卡2卡三卡4卡麻豆 | 啊轻点灬大ji巴太粗太长了欧美| 免费能直接在线观看黄的视频 | 精品第一国产综合精品蜜芽| 国产在线激情视频| 男女xx动态图| 国内精品久久久久久99蜜桃|