曹佩武 馮云 折雷 孔琦 郭文輝


摘要:針對(duì)某型北斗終端設(shè)備不輸出定位信息故障現(xiàn)象進(jìn)行研究分析,查找故障原因,進(jìn)行故障復(fù)現(xiàn).提出改進(jìn)措施并進(jìn)行措施驗(yàn)證,對(duì)提高北斗終端設(shè)備工作可靠性有重要意義。
關(guān)鍵詞:北斗終端設(shè)備;定位;內(nèi)存;棧區(qū)
某型北斗終端設(shè)備加裝于某型武器系統(tǒng),為裝備展開(kāi)階段提供快速準(zhǔn)確的定位定向基準(zhǔn),為裝備作戰(zhàn)使用階段提供精確穩(wěn)定的時(shí)間信號(hào)和信息,還提供北斗短消息通信、導(dǎo)航手段,縮短各型武器裝備作戰(zhàn)準(zhǔn)備時(shí)間,提高武器系統(tǒng)作戰(zhàn)效能;擺脫了對(duì)全球定位系統(tǒng)(GPS)的依賴,提高了某型武器系統(tǒng)的自主性和一體化聯(lián)合作戰(zhàn)能力。
1故障現(xiàn)象
該型北斗終端設(shè)備設(shè)計(jì)時(shí),要求設(shè)備開(kāi)始工作至獲得準(zhǔn)確的定位信息不超過(guò)120s。常規(guī)測(cè)試中,終端設(shè)備各項(xiàng)性能指標(biāo)均為正常;但某項(xiàng)試驗(yàn)要求設(shè)備連續(xù)工作24小時(shí)以上,當(dāng)試驗(yàn)進(jìn)行到約2小時(shí),設(shè)備出現(xiàn)不輸出定位信息的故障;對(duì)同型號(hào)其他設(shè)備進(jìn)行了相同試驗(yàn),均在工作約2小時(shí)出現(xiàn)不輸出定位信息的故障。
2故障原因分析
為了便于分析問(wèn)題,查找故障原因,列出該型北斗終端設(shè)備與定位數(shù)據(jù)信息輸出相關(guān)的部件,并明確各個(gè)部件之間的信息交互,如圖1所示。
該型北斗終端設(shè)備接收處理系統(tǒng)包含一個(gè)全功能板卡、一個(gè)抗干擾天線、兩個(gè)定向天線和配套的射頻電纜。接收處理系統(tǒng)的數(shù)據(jù)輸出邏輯設(shè)計(jì)為通過(guò)串134輸出定位、定向和時(shí)間等信息,串口1、串132、串口3分別用于定位和定向的PRM芯片和Ic芯片的加注。
接收處理系統(tǒng)中的全功能板卡接收抗干擾天線和定向天線接收到的衛(wèi)星信號(hào),經(jīng)過(guò)解算得到當(dāng)前的位置、速度、時(shí)間等信息,完成組幀后,按照1Hz的頻率通過(guò)串134向外輸出至綜合處理板,綜合處理板再將定位信息分別輸出至綜合顯控和標(biāo)準(zhǔn)顯控。
抗干擾天線和定向天線與全功能板卡之間只有一根射頻電纜,用于傳輸射頻信號(hào)并向天線饋電,本身并沒(méi)有數(shù)據(jù)與全功能板卡交互,可排除抗干擾天線和定向天線的故障。
根據(jù)該設(shè)備的定位數(shù)據(jù)輸出邏輯,列出可能造成故障現(xiàn)象的所有情形,故障樹如圖2所示。
2.1 x1:綜合處理板異常排查
接收處理系統(tǒng)通過(guò)串口4將定位數(shù)據(jù)輸出至綜合處理板,綜合處理板再將定位數(shù)據(jù)輸出至綜合顯控和標(biāo)準(zhǔn)顯控,從綜合顯控和標(biāo)準(zhǔn)顯控上查看均無(wú)數(shù)據(jù)輸出。同時(shí)接收處理系統(tǒng)也通過(guò)串口1直接將定位信息輸出至測(cè)試設(shè)備并通過(guò)電腦進(jìn)行顯示,電腦顯示接收處理板的串口1也無(wú)定位數(shù)據(jù)輸出。由此可排除底事件xl。
2.2 E1:全功能板卡異常排查
全功能板卡為某型北斗終端設(shè)備的核心部件,屬軟硬件協(xié)同設(shè)計(jì),所以很難把硬件、軟件完全隔離開(kāi),為了更有效地孤立故障部位,以確定是硬件故障還是軟件故障,對(duì)設(shè)備的工作履歷進(jìn)行了查詢,發(fā)現(xiàn)設(shè)備在出現(xiàn)故障之前分別進(jìn)行過(guò)兩次1.1、1.2版本軟件升級(jí),兩次軟件升級(jí)之前并未出現(xiàn)目前的故障現(xiàn)象。
為了進(jìn)一步確定故障部位,結(jié)合設(shè)備工作履歷記錄情況,又分別進(jìn)行了X2硬件故障和X3軟件故障排查。
1)X2:硬件故障排查
為了驗(yàn)證全功能板卡是否存在硬件故障,對(duì)同批次的編號(hào)為18-001、18-002兩臺(tái)設(shè)備同時(shí)進(jìn)行通電測(cè)試,并進(jìn)行連續(xù)拷機(jī)試驗(yàn),在工作至1小時(shí)50分時(shí),產(chǎn)品的串口1和串口4均無(wú)定位數(shù)據(jù)輸出。對(duì)同批次的編號(hào)為18-003、18-004和18-005三臺(tái)設(shè)備進(jìn)行拷機(jī)測(cè)試,也出現(xiàn)相同問(wèn)題。
根據(jù)試驗(yàn)結(jié)果和經(jīng)驗(yàn)判斷,五臺(tái)設(shè)備同時(shí)出現(xiàn)硬件故障的概率幾乎為零,因此可排除底事件X2:硬件故障。
2)X3:軟件故障排查
為了驗(yàn)證全功能板卡是否存在軟件故障,將編號(hào)為18-001~18-005的定位接收機(jī)程序還原至1.0版本,同時(shí)進(jìn)行連續(xù)拷機(jī)試驗(yàn),工作24小時(shí)以上,產(chǎn)品工作正常,未出現(xiàn)死機(jī)現(xiàn)象。為了進(jìn)一步查清是否由于軟件升級(jí)導(dǎo)致的定位信息故障,將編號(hào)為18-001的全功能板卡連接DSP仿真器,在線load版本為1.2的定位接收機(jī)程序,進(jìn)行連續(xù)拷機(jī)試驗(yàn),實(shí)時(shí)監(jiān)控DsP芯片內(nèi)部運(yùn)行內(nèi)存的運(yùn)行狀況。當(dāng)拷機(jī)至1小時(shí)55分時(shí),DSP程序死機(jī),同時(shí)觀察到程序內(nèi)存地址數(shù)據(jù)出現(xiàn)異常。經(jīng)分析,DSP程序死機(jī)多為內(nèi)存地址分配不合理造成。
根據(jù)定位接收機(jī)DSP程序執(zhí)行邏輯,運(yùn)行內(nèi)存分為棧區(qū)和堆區(qū)。棧區(qū)由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值、局部變量的值等,其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。每當(dāng)一個(gè)函數(shù)被調(diào)用,該函數(shù)返回地址和一些關(guān)于調(diào)用的信息,如某些寄存器的內(nèi)容被存儲(chǔ)到棧區(qū)。然后這個(gè)被調(diào)用的函數(shù)再為其自動(dòng)變量和I}缶時(shí)變量在棧區(qū)上分配空間,這就是c實(shí)現(xiàn)函數(shù)遞歸調(diào)用的方法。每執(zhí)行一次遞歸函數(shù)調(diào)用,一個(gè)新的棧框架就被使用,這樣這個(gè)新實(shí)例棧里的變量就不會(huì)和該函數(shù)的另一個(gè)實(shí)例棧里的變量混淆。而堆區(qū)用于動(dòng)態(tài)內(nèi)存分配,堆在內(nèi)存中位于bss區(qū)和棧區(qū)之間,一般由程序員分配和釋放,若程序員不釋放,程序結(jié)束時(shí)有可能由OS回收。
棧區(qū)和堆區(qū)的主要區(qū)別如下。
1)管理方式不同
棧編譯器自動(dòng)管理,無(wú)需程序員手工控制;而堆空間的申請(qǐng)釋放工作由程序員控制,容易產(chǎn)生內(nèi)存泄漏。
2)空間大小不同
棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存區(qū)域。棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的,當(dāng)申請(qǐng)的空間超過(guò)棧的剩余空間時(shí),將提示溢出。因此,用戶能從棧獲得的空間較小。
堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。因?yàn)橄到y(tǒng)是用鏈表來(lái)存儲(chǔ)空閑內(nèi)存地址的,鏈表的遍歷方向由低地址向高地址。由此可見(jiàn),堆獲得的空間較靈活,也較大。棧中元素都是——對(duì)應(yīng)的,不會(huì)存在一個(gè)內(nèi)存塊從棧中間彈出的情況。
3)是否產(chǎn)生碎片
對(duì)于堆來(lái)講,頻繁的malloe/free(new/delete)勢(shì)必造成內(nèi)存空間的不連續(xù),從而造成大量的碎片,使程序效率降低(雖然程序在退出后操作系統(tǒng)會(huì)對(duì)內(nèi)存進(jìn)行回收管理)。對(duì)于棧來(lái)講,則不會(huì)存在這個(gè)問(wèn)題。
4)增長(zhǎng)方向不同
堆的增長(zhǎng)方向是向上的,即向著內(nèi)存地址增加的方向;棧的增長(zhǎng)方向是向下的,即向著內(nèi)存地址減小的方向。
5)分配方式不同
堆都是程序中由mallocO函數(shù)動(dòng)態(tài)申請(qǐng)分配并由freeO函數(shù)釋放的;棧的分配和釋放由編譯器完成,棧的動(dòng)態(tài)分配由allocaO函數(shù)完成,但是棧的動(dòng)態(tài)分配與堆不同,是由編譯器進(jìn)行申請(qǐng)和釋放的,無(wú)需手工實(shí)現(xiàn)。
6)分配效率不同
棧是機(jī)器系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)會(huì)在底層對(duì)棧提供支持,分配專門的寄存器存放棧的地址,壓棧出棧都有專門的指令執(zhí)行。堆則是c函數(shù)庫(kù)提供的,它的機(jī)制很復(fù)雜。例如,為了分配一塊內(nèi)存,庫(kù)函數(shù)會(huì)按照一定的算法在堆內(nèi)存中搜索可用的足夠大的空間,如果沒(méi)有足夠大的空間,就需要操作系統(tǒng)重新整理內(nèi)存空間,以便分到足夠大小的內(nèi)存,然后返回。顯然,堆的效率比棧低得多。
根據(jù)對(duì)DsP芯片內(nèi)部運(yùn)行內(nèi)存運(yùn)行情況的監(jiān)控結(jié)果,分析得出DsP程序運(yùn)行死機(jī)的原因。因?yàn)槌绦蛑写罅渴褂胢alloeO函數(shù)動(dòng)態(tài)申請(qǐng)分配并由freeO函數(shù)釋放,并且申請(qǐng)的空間與收星個(gè)數(shù)有關(guān),如果收星個(gè)數(shù)越大,一次申請(qǐng)的內(nèi)存越大,如果分配的堆區(qū)空間小,有可能造成內(nèi)存溢出,導(dǎo)致接收機(jī)程序運(yùn)行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果。因此,可判斷是由于產(chǎn)品升級(jí)優(yōu)化時(shí)為了滿足增加定位、定向補(bǔ)償存儲(chǔ)功能需求,在程序1.0版本升級(jí)至1.2版本后,增加了部分代碼,導(dǎo)致運(yùn)行內(nèi)存棧區(qū)和堆區(qū)分配不合理,以至內(nèi)存溢出而出現(xiàn)死機(jī)現(xiàn)象。
3解決措施及驗(yàn)證
3.1故障解決措施
針對(duì)內(nèi)存分配不合理的問(wèn)題,對(duì)DSP程序的運(yùn)行內(nèi)存棧區(qū)和堆區(qū)重新進(jìn)行分配。具體為:適當(dāng)減小棧區(qū),由Ox00008000調(diào)整為Ox00006000,增大堆區(qū),由Ox00005000調(diào)整為Ox00008000,其他代碼均未作任何改動(dòng),程序版本升級(jí)至13,如圖3、圖4代碼所示。
對(duì)編號(hào)為18-001的全功能板卡燒入13版本的定位接收機(jī)DSP程序,進(jìn)行拷機(jī)試驗(yàn),連續(xù)工作24小時(shí)以上,未出現(xiàn)死機(jī)現(xiàn)象,設(shè)備定位信息輸出正常。
3.2驗(yàn)證情況
為了驗(yàn)證故障解決措施的有效性,又分別對(duì)該批次的編號(hào)為18-002~18005的4臺(tái)設(shè)備進(jìn)行了程序1.3版本升級(jí),程序升級(jí)后又分別進(jìn)行了連續(xù)工作24小時(shí)以上的拷機(jī)試驗(yàn),均未出現(xiàn)死機(jī)現(xiàn)象,設(shè)備定位信息輸出等其他各項(xiàng)功能均正常。
4結(jié)論
根據(jù)不輸出定位信息的故障現(xiàn)象,從軟硬件的角度分別進(jìn)行了故障查找,確定了故障根源,并進(jìn)行了故障復(fù)現(xiàn)和改進(jìn)措施驗(yàn)證,問(wèn)題得到了解決。根據(jù)此次產(chǎn)品暴露的故障,應(yīng)吸取經(jīng)驗(yàn)教訓(xùn),在后續(xù)產(chǎn)品升級(jí)優(yōu)化過(guò)程中,要進(jìn)行充分的驗(yàn)證,在滿足產(chǎn)品功能升級(jí)需要的同時(shí)應(yīng)確保產(chǎn)品工作的可靠性。
航利集團(tuán)榮獲2018中國(guó)科協(xié)企業(yè)創(chuàng)新服務(wù)成果展“十佳參展單位”獎(jiǎng)
11月21日,2018中國(guó)科協(xié)企業(yè)創(chuàng)新服務(wù)成果展在湖南省長(zhǎng)沙市開(kāi)幕。航利集團(tuán)的院士工作站創(chuàng)新服務(wù)成果參展項(xiàng)目,獲得2019中國(guó)科協(xié)企業(yè)創(chuàng)新服務(wù)成果展“十佳參展單位”獎(jiǎng)。本次成果展以“促進(jìn)產(chǎn)學(xué)融合、服務(wù)企業(yè)創(chuàng)新”為主題,展覽面積近6000平方米,參展單位200余家,各參展單位全面展示了企業(yè)科技創(chuàng)新的最新成果和顯著成效。航利集團(tuán)的院士工作站創(chuàng)新服務(wù)成果參展項(xiàng)目,由四川省科學(xué)技術(shù)協(xié)會(huì)從四川省眾多院士工作站中優(yōu)選、推薦參加2018中國(guó)科協(xié)企業(yè)創(chuàng)新服務(wù)成果展,并從全國(guó)200余家參展企業(yè)中脫穎而出,獲得“十佳參展單位”獎(jiǎng),獲此榮譽(yù)的還有中國(guó)航空工業(yè)成都飛機(jī)工業(yè)(集團(tuán))有限責(zé)任公司、中車長(zhǎng)春軌道客車股份有限公司等。(張良成)