綜顯系統(tǒng)多功能顯示器黑屏問(wèn)題研究
0引言
多功能顯示器作為飛機(jī)航電系統(tǒng)的重要組成部分,主要負(fù)責(zé)為飛行員提供綜合化信息顯示和控制畫面,實(shí)現(xiàn)飛行員與飛機(jī)系統(tǒng)的人機(jī)交互任務(wù)[1]。本文針對(duì)多功能顯示器黑屏問(wèn)題,介紹了問(wèn)題定位、軟件故障分析、采取的糾正措施及驗(yàn)證情況,可為后續(xù)產(chǎn)品排故提供參考。
1問(wèn)題定位
1.1 工作原理
綜合顯示系統(tǒng)(Integrated Display System,IDS)由2臺(tái)綜合顯示處理機(jī)(Integrated Display Processor,IDP)、5臺(tái)多功能顯示器 (Multi—Function Display,MFD)、1臺(tái)綜合控制單元(Integrated Control Unit,ICU)和1臺(tái) 數(shù)據(jù)加載及視頻記錄設(shè)備 (Data Loading and Video Recording Equipment,DLVR)組成[2],其中多功能顯示器為飛行員提供飛行和導(dǎo)航等各種參數(shù)信息。當(dāng)處理機(jī)下線時(shí),顯示器通過(guò)接收的大氣慣導(dǎo)數(shù)據(jù),進(jìn)行應(yīng)急數(shù)據(jù)顯示,顯示必要的飛行數(shù)據(jù)。其中MFD5默認(rèn)顯示地圖頁(yè)面,具有正常和應(yīng)急供電,直接與機(jī)電管理計(jì)算機(jī)交聯(lián),并可控制燃油系統(tǒng)的轉(zhuǎn)輸。通過(guò)位置識(shí)別線識(shí)別MFD5,增加機(jī)電參數(shù)顯示器工作模式,在多功能顯示器模式下,MFD5與其他4臺(tái)顯示器功能一致,可根據(jù)需求選擇顯示飛行頁(yè)面、導(dǎo)航頁(yè)面、氣象頁(yè)面、地圖頁(yè)面、機(jī)電頁(yè)面等;在機(jī)電參數(shù)顯示模式下,實(shí)現(xiàn)機(jī)電參數(shù)顯示器功能,可對(duì)燃油系統(tǒng)轉(zhuǎn)輸進(jìn)行控制。
位于5號(hào)位置的MFD5相較于其他4個(gè)位置的MFD,額外與大氣數(shù)據(jù)計(jì)算機(jī)、慣導(dǎo)、機(jī)電管理計(jì)算機(jī)各2路交聯(lián),交聯(lián)關(guān)系如圖1所示。在飛行時(shí),與MFD5交聯(lián)的設(shè)備同時(shí)工作,RS—422、HDLC均以周期的形式與MFD5通信。MFD5在工作時(shí),又可分為多功能顯示和機(jī)電參數(shù)顯示兩種狀態(tài),對(duì)應(yīng)的多功能顯示器顯示軟件和機(jī)電參數(shù)顯示軟件切換運(yùn)行。數(shù)據(jù)流如圖2所示。
1.2 故障分析
多功能顯示器液晶屏原屏為常黑屏(即在無(wú)視頻畫面時(shí),液晶屏表現(xiàn)為黑屏),在顯示器上電啟動(dòng)時(shí),會(huì)黑18 s左右,其中3 s液晶屏啟動(dòng),剩余15 s為圖形生成時(shí)間。進(jìn)一步確認(rèn),MFD5通常是在主機(jī)電和備份機(jī)電畫面下發(fā)生重啟故障。主機(jī)電為多功能顯示軟件實(shí)現(xiàn)的功能,而備份機(jī)電則由機(jī)電參數(shù)顯示軟件實(shí)現(xiàn)。通過(guò)視頻回放發(fā)現(xiàn),在多次機(jī)電畫面重啟前,并沒(méi)有明確的特定條件。在重啟前,畫面會(huì)靜止5 s左右,重啟之后MFD5進(jìn)入地圖畫面。在重啟過(guò)程中,其他位置的顯示器會(huì)報(bào)出5號(hào)位顯示器故障。查看從MFD5下載的故障記錄,發(fā)現(xiàn)MFD5內(nèi)產(chǎn)生了離散的任務(wù)掛起。在多次重啟前的各個(gè)記錄中,掛起的任務(wù)名并不相同。
針對(duì)MFD5空中重啟的故障進(jìn)行分析:
1)MFD5沒(méi)有在特定條件下重啟:MFD5的軟件沒(méi)有明顯的功能分支導(dǎo)致故障發(fā)生。
2)重啟前畫面保持5 s左右,說(shuō)明圖形數(shù)據(jù)處理模塊還在正常工作,可保持向液晶屏模塊持續(xù)輸出 LVDS信號(hào)。
3)重啟后進(jìn)入地圖畫面,說(shuō)明IDP工作正常。當(dāng)綜顯系統(tǒng)識(shí)別到MFD5下電后再次上電的畫面應(yīng)為地圖,說(shuō)明IDP識(shí)別到MFD5下線,MFD5通信相關(guān)的程序也同時(shí)失能。
4)由數(shù)據(jù)處理軟件可識(shí)別到掛起任務(wù)并在重啟前生成故障記錄可知,數(shù)據(jù)處理與顯示模塊沒(méi)有發(fā)生強(qiáng)制斷電、操作系統(tǒng)強(qiáng)行重啟的情況,是由看門狗狗叫引發(fā)的外部復(fù)位。
根據(jù)上述分析,MFD5在發(fā)生黑屏重啟現(xiàn)象的同時(shí)出現(xiàn)通信失能、任務(wù)掛起故障,且圖形數(shù)據(jù)處理模塊(FPGA)功能完好。據(jù)此,多功能顯示器故障樹如圖3所示。
2 圖形生成組件軟件故障分析
2.1繪圖任務(wù)對(duì)GPU有冗余的開銷
為了提高繪圖幀率,繪圖任務(wù)在運(yùn)行時(shí),沒(méi)有采用周期循環(huán)運(yùn)行,而是在較低的優(yōu)先級(jí)任務(wù)里使用 while(1)循環(huán),并且為了保證可被其他任務(wù)搶占,增加了一個(gè)tick的延遲以讓出CPU。當(dāng)GPU被冗余的繪圖指令操作時(shí),不僅會(huì)使繪圖任務(wù)長(zhǎng)時(shí)間占用CPU,還會(huì)使GPU驅(qū)動(dòng)對(duì)操作系統(tǒng)相關(guān)資源提高不必要的占用。
針對(duì)此問(wèn)題,采用提高GPU頻率的方法嘗試減少繪圖任務(wù)對(duì)GPU的占用率,將GPU頻率由600 MHz提高到800 MHz,在同樣的繪圖任務(wù)和畫面下進(jìn)行對(duì)比,繪圖任務(wù)在全周期的占用時(shí)長(zhǎng)由80%降低為76%。
又經(jīng)排查發(fā)現(xiàn),MFD5中的多功能顯示軟件和機(jī)電參數(shù)顯示軟件繪圖架構(gòu)有一個(gè)明顯差異:備份機(jī)電繪圖任務(wù)中每次繪圖時(shí),都會(huì)調(diào)用GetCurrentContext 函數(shù),該函數(shù)的功能為切換SCADE的OpenGL上下文,占用開銷較大,在備份機(jī)電繪圖軟件中該函數(shù)的用時(shí)占比為5.56%。同時(shí)對(duì)比多功能顯示軟件的代碼,發(fā)現(xiàn)在多功能顯示軟件的繪圖框架中進(jìn)行了首次切換判斷,而機(jī)電參數(shù)顯示軟件中沒(méi)有該邏輯。
由此,在對(duì)機(jī)電參數(shù)顯示軟件增加了首次切換后不再進(jìn)行切換的邏輯后,占用率由5.56%降低到0.05%O但針對(duì)GPU的優(yōu)化在機(jī)上調(diào)參后,依舊復(fù)現(xiàn)重啟問(wèn)題,排除繪圖任務(wù)對(duì)GPU有冗余開銷的故障。
2.2應(yīng)用程序軟件設(shè)計(jì)錯(cuò)誤
由監(jiān)控記錄推斷的情況,若發(fā)生數(shù)組越界也有可能使程序產(chǎn)生異常行為。通過(guò)代碼審查,重點(diǎn)對(duì) malloc、數(shù)組下標(biāo)操作進(jìn)行逐一推理,沒(méi)有發(fā)現(xiàn)異常。同時(shí)檢查邊界處理?xiàng)l件,對(duì)數(shù)組下標(biāo)是負(fù)值、超出數(shù)組長(zhǎng)度的情況進(jìn)行了必要的判斷。 通過(guò)靜態(tài)代碼測(cè)試工具testbed、polyspace對(duì)代碼進(jìn)行掃描,也沒(méi)有發(fā)現(xiàn)問(wèn)題。同時(shí)對(duì)照vxworks的特性,一般數(shù)組越界的情況下操作系統(tǒng)會(huì)拋出對(duì)應(yīng)任務(wù)的異常,與監(jiān)控的現(xiàn)象不同,因此排除應(yīng)用程序數(shù)組越界的可能。
2.3某一任務(wù)無(wú)法搶占CPU
經(jīng)代碼審查,HDLC周期處理函數(shù)具有較高優(yōu)先級(jí),兩路HDLC各一個(gè)任務(wù),沒(méi)有用信號(hào)量,以前的方法是直接while(1)循環(huán),其中調(diào)用了驅(qū)動(dòng)層的接收函數(shù),驅(qū)動(dòng)的接收函數(shù)里加了2個(gè)tick的超時(shí)taskdelay等待,這樣能保證不會(huì)任務(wù)卡死,超2個(gè)tick能繼續(xù)執(zhí)行。但還是懷疑消耗的資源太大,按照數(shù)據(jù)接收和處理優(yōu)先原則,不能將其優(yōu)先級(jí)調(diào)低。隨后整改為由循環(huán)里的taskDelay(0)改成taskDelay(1),經(jīng)長(zhǎng)時(shí)間烤機(jī)沒(méi)有發(fā)現(xiàn)延遲,加上接收函數(shù)的2個(gè)tick等待共為3個(gè)tick。通過(guò)驗(yàn)證周期處理沒(méi)有超時(shí)導(dǎo)致數(shù)據(jù)阻塞,每3個(gè)循環(huán)有1個(gè)是空收數(shù),證明接收周期短于數(shù)據(jù)源發(fā)送周期。但因?yàn)閮蓚€(gè)任務(wù)優(yōu)先級(jí)相同,還是while(1)循環(huán),還是有一個(gè)卡住會(huì)使另一個(gè)也卡住的風(fēng)險(xiǎn),于是需要使用同優(yōu)先級(jí)輪詢調(diào)度方法。查手冊(cè)和幫助文檔,通過(guò)kernalTimeSlice函數(shù)確定之前的BSP沒(méi)有開啟輪詢,返回了ERROR。
隨即調(diào)整開機(jī)初始化參數(shù),在創(chuàng)建任務(wù)前開啟輪詢調(diào)度,經(jīng)過(guò)上述方法對(duì)CPU調(diào)度邏輯進(jìn)行優(yōu)化,并在機(jī)上調(diào)參后,仍然出現(xiàn)了重啟問(wèn)題。在排查過(guò)程中考慮了是否存在優(yōu)先級(jí)反轉(zhuǎn)的情況,但通過(guò)代碼審查并未發(fā)現(xiàn)任務(wù)之間競(jìng)爭(zhēng)使用同一信號(hào)量和資源的問(wèn)題,各個(gè)任務(wù)之間也不存在互相影響的阻塞條件。因此,可以排除某一任務(wù)無(wú)法搶占CPU導(dǎo)致的故障。
2.4 臨界區(qū)資源沖突導(dǎo)致死鎖或異常
數(shù)據(jù)處理軟件為機(jī)電參數(shù)顯示軟件提供RS—422數(shù)據(jù)接收和拼包功能。RS—422任務(wù)接收來(lái)自機(jī)電管理計(jì)算機(jī)的數(shù)據(jù)后,利用軟件的FIFO隊(duì)列將數(shù)據(jù)進(jìn)行拼接。當(dāng)機(jī)電參數(shù)顯示軟件調(diào)用特定的讀取接口函數(shù)時(shí),數(shù)據(jù)被復(fù)制到該軟件的專用數(shù)組中。該FIFO 隊(duì)列的核心實(shí)現(xiàn)方法是利用VxWorks系統(tǒng)的rnglib環(huán)形隊(duì)列庫(kù)。查閱環(huán)形隊(duì)列庫(kù)文檔后得知,當(dāng)同時(shí)有一個(gè)讀取任務(wù)和一個(gè)寫入任務(wù)操作時(shí),采用獨(dú)立的讀寫指針,這樣讀取和寫入操作就不會(huì)發(fā)生沖突。為了提高可靠性,移除了數(shù)據(jù)處理軟件的拼包功能,改由機(jī)電參數(shù)顯示軟件負(fù)責(zé)數(shù)據(jù)接收、拼包和處理,從而消除臨界區(qū),有效防止多任務(wù)并行執(zhí)行。盡管經(jīng)過(guò)上述優(yōu)化方法處理了臨界區(qū)沖突,但在機(jī)上調(diào)參后,仍出現(xiàn)了重啟問(wèn)題。經(jīng)過(guò)排查,確認(rèn)并非臨界區(qū)資源沖突導(dǎo)致死鎖或異常故障。
2.5機(jī)電參數(shù)顯示軟件故障
通過(guò)查看DLvR回放,可知MFD5在主機(jī)電和備份機(jī)電畫面下都會(huì)發(fā)生重啟故障。在非備份機(jī)電繪圖狀態(tài)下,機(jī)電參數(shù)顯示軟件的繪圖和數(shù)據(jù)處理任務(wù)雖然不會(huì)掛起,但會(huì)依據(jù)不是備份機(jī)電的狀態(tài)變量跳轉(zhuǎn)到不處理的邏輯分支,不會(huì)出現(xiàn)后臺(tái)運(yùn)行的數(shù)據(jù)解析錯(cuò)誤導(dǎo)致故障的情況,因此排除機(jī)電參數(shù)顯示軟件數(shù)據(jù)處理或繪圖程序有BUG的故障。
2.6中斷資源耗盡
MFD5與其他4個(gè)位置的區(qū)別為額外接收6路RS—422,由機(jī)電參數(shù)顯示軟件在進(jìn)行備份機(jī)電畫面顯示時(shí)同時(shí)處理各路數(shù)據(jù)。通過(guò)硬件架構(gòu)可知,MFD5在任何狀態(tài)下,圖形數(shù)據(jù)處理模塊將保持接收數(shù)據(jù)狀態(tài),并由驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)處理。數(shù)據(jù)處理由PCIe 收到1個(gè)字節(jié)后進(jìn)入中斷狀態(tài),根據(jù)機(jī)上設(shè)備發(fā)送的周期、波特率和ICD規(guī)定的字長(zhǎng)可知,MFD5在機(jī)上工作時(shí),通過(guò)RS—422、RS—232、RS—HDLC觸發(fā)的中斷次數(shù)約為29 000次/s,1~4號(hào)位置觸發(fā)的中斷次數(shù)約為7 000次/s。因此,認(rèn)為該中斷產(chǎn)生過(guò)于頻繁,CPU對(duì)中斷處理開銷很大,可能會(huì)使操作系統(tǒng)產(chǎn)生不確定的運(yùn)行結(jié)果。調(diào)整觸發(fā)中斷字節(jié)長(zhǎng)度的閾值為16字節(jié),經(jīng)測(cè)試,中斷產(chǎn)生數(shù)量大幅減少,經(jīng)機(jī)上飛行驗(yàn)證,軟件故障不再?gòu)?fù)現(xiàn)。
3采取的糾正措施及驗(yàn)證情況
3.1 糾正措施
1)修改數(shù)據(jù)處理軟件內(nèi)的驅(qū)動(dòng),增加可對(duì)中斷字節(jié)數(shù)調(diào)參的功能;
2)在數(shù)據(jù)處理軟件的接口初始化中增加將每路UART端口設(shè)置為16字節(jié)中斷閾值的初始化操作;
3)在機(jī)電參數(shù)顯示軟件繪圖程序中增加只執(zhí)行一次繪圖上下文切換的邏輯;
4)增加數(shù)據(jù)處理軟件上電后輪詢調(diào)度設(shè)置;
5)去除數(shù)據(jù)處理軟件拼包再轉(zhuǎn)發(fā)給機(jī)電參數(shù)顯示軟件的功能,由機(jī)電參數(shù)顯示軟件直接負(fù)責(zé)數(shù)據(jù)收取、拼包、處理。
3.2 驗(yàn)證情況
經(jīng)實(shí)驗(yàn)室烤機(jī)驗(yàn)證,產(chǎn)品工作正常;在機(jī)上調(diào)參后飛行驗(yàn)證4個(gè)架次,未出現(xiàn)黑屏重啟現(xiàn)象。
4結(jié)論
綜上所述,多功能顯示器黑屏故障是中斷過(guò)多導(dǎo)致系統(tǒng)資源耗盡,引起任務(wù)掛起后觸發(fā)看門狗復(fù)位。因此,降低中斷觸發(fā)閾值,將1字節(jié)改為16字節(jié),減少中斷請(qǐng)求次數(shù)后,經(jīng)充分試飛驗(yàn)證故障未再出現(xiàn)。以上故障原因定位準(zhǔn)確,機(jī)理清楚,采取的措施有效可行,可避免后續(xù)同類產(chǎn)品發(fā)生黑屏故障。
[參考文獻(xiàn)]
[1]孫凱革,王桂芳,郭濤,等.一起接觸器失效導(dǎo)致飛機(jī)多功能顯示器黑屏故障分析[J].航空維修與工程,2020(6): 81—83.
[2]朱慧麗,王康,王清.試飛中多功能顯示器閃屏問(wèn)題分析與解決方案[J].航空電子技術(shù),2021,52(3):68—72.
2025年第1期第5篇