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





