国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于PowerPC軟件的無(wú)源碼異常中斷定位方案

2023-10-08 05:20:18王逸凡朱帥琦
工程與試驗(yàn) 2023年3期
關(guān)鍵詞:插樁源碼上位

王逸凡,朱帥琦

(中國(guó)航發(fā)控制系統(tǒng)研究所,江蘇 無(wú)錫 214063)

1 引 言

數(shù)字控制系統(tǒng)在航空航天等高安全性領(lǐng)域已經(jīng)得到了廣泛應(yīng)用[1],控制軟件的功能和復(fù)雜度不斷增加,軟件研發(fā)中引入的缺陷也越來(lái)越隱蔽,因此導(dǎo)致的異常中斷定位就顯得尤為重要[2-5]。目前,對(duì)基于PowerPC的控制軟件,需要依賴(lài)編譯生成的.map文件和源碼進(jìn)行異常中斷定位[6-10],雖然定位準(zhǔn)確,但該方法只適用于開(kāi)發(fā)調(diào)試場(chǎng)景下的異常定位。由于軟件源碼和編譯生成的.map文件涉及到軟件的設(shè)計(jì)信息,軟件作為產(chǎn)品交付時(shí),一般不會(huì)提供源碼和編譯過(guò)程文件。因此,現(xiàn)有的定位方式給外場(chǎng)用戶(hù)進(jìn)行快速異常定位帶來(lái)不便。

此外,隨著數(shù)控軟件更新頻率不斷提升,一個(gè)數(shù)控系統(tǒng)常常存在多個(gè)軟件版本,維護(hù)成本大大增加。對(duì)于各個(gè)版本發(fā)生的異常中斷,想要快速定位異常就完全依賴(lài)于內(nèi)場(chǎng)開(kāi)發(fā)人員的管理水平和反應(yīng)速度,使用者在外場(chǎng)沒(méi)有快速定位的手段和能力。

本文針對(duì)使用PowerPC的發(fā)動(dòng)機(jī)控制軟件,結(jié)合NVRAM的存儲(chǔ)特性[11-14],設(shè)計(jì)了一種簡(jiǎn)易輕量化的異常中斷定位及數(shù)據(jù)存儲(chǔ)方案??梢栽跊](méi)有源碼和編譯文件的情況下,對(duì)發(fā)生中斷的模塊進(jìn)行定位,對(duì)異常發(fā)生時(shí)的控制狀態(tài)進(jìn)行記錄,簡(jiǎn)化了定位方法,方便外場(chǎng)使用。

2 異常中斷介紹

嵌入式軟件運(yùn)行前,會(huì)在系統(tǒng)初始化時(shí),對(duì)異常中斷進(jìn)行初始化,設(shè)置中斷源。CPU在運(yùn)行過(guò)程中一旦發(fā)生異常,就會(huì)中止處理器正常的執(zhí)行,跳去執(zhí)行異常處理程序。異常有多種類(lèi)型,異常本身是中斷的一種特例。本文介紹的PowerPC有19種異常中斷,如表1[15]所示。

表1 異常及觸發(fā)條件

當(dāng)上述異常被觸發(fā)后,軟件的中斷服務(wù)函數(shù)進(jìn)入對(duì)應(yīng)的異常處理程序,此時(shí)可以利用串口打印異常號(hào)及相關(guān)寄存器中的信息。目前,異常中斷定位是將異常運(yùn)行時(shí)代碼位置、異常種類(lèi)等信息打印出來(lái),然后通過(guò)相應(yīng)的.map文件查詢(xún)異常發(fā)生的函數(shù)位置,從而實(shí)現(xiàn)異常定位。

3 異常中斷定位方案

異常中斷后軟件一般會(huì)馬上進(jìn)行復(fù)位,通過(guò)串口打印出來(lái)的信息,有時(shí)候很難被PC端的使用者和機(jī)載設(shè)備捕捉到,偶發(fā)性的異常在復(fù)位后容易被忽視。同時(shí),已交付產(chǎn)品一般不提供源碼和.map文件,無(wú)法根據(jù)串口信息進(jìn)行快速異常定位,給外場(chǎng)分析帶來(lái)不便。

3.1 捕獲異常位置

通過(guò)研究異常中斷過(guò)程,當(dāng)異常發(fā)生后,軟件會(huì)跳轉(zhuǎn)到異常中斷服務(wù)函數(shù)中,中斷發(fā)生后會(huì)馬上跳出主程序。此時(shí),如果將跳出位置記錄下來(lái),就可以不依賴(lài).map文件對(duì)異常進(jìn)行定位,從而捕獲異常。

本文設(shè)計(jì)了一個(gè)異常數(shù)據(jù)標(biāo)記函數(shù),標(biāo)記函數(shù)能夠直接訪問(wèn)NVRAM進(jìn)行讀寫(xiě)操作,并將標(biāo)記信息記錄到指定地址。此外,宏定義一系列表征軟件運(yùn)行位置的標(biāo)記作為函數(shù)入?yún)?申請(qǐng)一片NVRAM空間用來(lái)存儲(chǔ)異常信息。軟件正常運(yùn)行時(shí),進(jìn)入每個(gè)模塊前都會(huì)先進(jìn)行標(biāo)記,同時(shí)覆蓋NVRAM中上一個(gè)模塊的記號(hào)。因?yàn)闃?biāo)記函數(shù)是在進(jìn)入模塊前進(jìn)行標(biāo)記,因此當(dāng)異常中斷跳出主程序時(shí),NVRAM中存儲(chǔ)的標(biāo)記就是異常中斷發(fā)生的模塊位置,如圖1所示。此外,結(jié)合異常中斷服務(wù)函數(shù),可以將產(chǎn)生異常的種類(lèi)、異常中斷發(fā)生次數(shù)、發(fā)生異常時(shí)軟件狀態(tài)信息等,也存儲(chǔ)在NVRAM中。

圖1 異常中斷定位方式

由于異常中斷后一般會(huì)進(jìn)行復(fù)位,控制軟件重新初始化運(yùn)行。通過(guò)上述方式捕獲異常中斷后,要保證之前的異常中斷信息能夠保存下來(lái),且需要多個(gè)相同大小的NVRAM空間,每次異常中斷后,都對(duì)異常信息的存儲(chǔ)位置進(jìn)行偏移,寫(xiě)滿后循環(huán)覆蓋。在有限的空間下,只記錄最近發(fā)生的幾次異常中斷信息,可記錄的異常次數(shù)取決于分配的NVRAM空間大小。

3.2 顯示異常信息

對(duì)于異常中斷信息,還需要通過(guò)上位機(jī)進(jìn)行解析,有兩種查看方式:

(1)有監(jiān)視上位機(jī)的情況下,將異常中斷位置及其他異常信息傳輸給上位機(jī),通過(guò)監(jiān)視上位機(jī)對(duì)異常信息進(jìn)行顯示。

(2)對(duì)于裝機(jī)狀態(tài),可在產(chǎn)品離線后,下載NVRAM數(shù)據(jù),使用上位機(jī)解析回看近幾次的異常中斷位置及其他異常信息。

4 方案驗(yàn)證

針對(duì)該P(yáng)owerPC的19種異常中斷,可以通過(guò)軟件和硬件的方式進(jìn)行觸發(fā)。這里以除零異常,即IVOR33-浮點(diǎn)數(shù)運(yùn)算異常為例,對(duì)初始化和周期任務(wù)中的異常中斷定位進(jìn)行插樁驗(yàn)證。

對(duì)于初始化過(guò)程,借助NVRAM進(jìn)行插樁。當(dāng)軟件運(yùn)行到插樁代碼時(shí),先從NVRAM讀取提前設(shè)置好的插樁代碼的激活碼。當(dāng)軟件初始化到插樁位置時(shí),先將NVRAM中該激活碼置為無(wú)效,然后運(yùn)行插樁代碼觸發(fā)異常,如圖2所示。

圖2 利用NVRAM的插樁驗(yàn)證過(guò)程

采用這種觸發(fā)方式的好處是,當(dāng)軟件在初始化過(guò)程中由于異常中斷復(fù)位后,下次可以正常初始化,避免軟件因?yàn)椴鍢秾?dǎo)致異常而不斷復(fù)位。此時(shí),上位機(jī)會(huì)顯示上一次異常中斷發(fā)生的位置,與.map文件查詢(xún)結(jié)果一致,并且顯示中斷號(hào)為33。下載NVRAM的數(shù)據(jù),可以查看到異常發(fā)生的模塊、異常中斷類(lèi)型等詳細(xì)信息。

對(duì)于周期任務(wù),通過(guò)上位機(jī)指令激活插樁代碼的方式觸發(fā)異常??刂栖浖诎l(fā)生異常中斷后復(fù)位,復(fù)位后將上次發(fā)生的異常模塊及其他信息通過(guò)串口傳輸給上位機(jī)顯示。上位機(jī)顯示的異常中斷位置與.map文件查詢(xún)的異常中斷函數(shù)位置一致,并且顯示中斷號(hào)為33。在不同位置多次注入異常,下載NVRAM數(shù)據(jù),可以查看近幾次發(fā)生異常的模塊及異常發(fā)生前控制軟件的運(yùn)行狀態(tài)。

以上插樁驗(yàn)證結(jié)果證明,本文設(shè)計(jì)的異常中斷定位方案有效。對(duì)于不便提供源碼和編譯文件的場(chǎng)景,可以采用本文設(shè)計(jì)的方案,作為工程試驗(yàn)現(xiàn)場(chǎng)對(duì)控制軟件異常中斷定位的替代方案。

5 結(jié)束語(yǔ)

本文設(shè)計(jì)的方案主要是針對(duì)沒(méi)有源碼、沒(méi)有.map文件的控制軟件異常中斷進(jìn)行定位,是對(duì)開(kāi)發(fā)端現(xiàn)有異常中斷定位方法的補(bǔ)充。本文利用標(biāo)記函數(shù)結(jié)合NVRAM對(duì)異常模塊進(jìn)行標(biāo)記,模塊可以是一個(gè)函數(shù),也可以是功能集,顆粒度可以根據(jù)代碼規(guī)模、硬件速度和時(shí)間余度等因素靈活設(shè)計(jì)。通過(guò)該方案,控制軟件發(fā)生異常中斷時(shí),能夠?qū)惓6ㄎ徊⒂涗浵聛?lái),在不依賴(lài).map文件的情況下,通過(guò)上位機(jī)方便快捷地為用戶(hù)提供異常中斷信息。本文通過(guò)人為注入異常的方式,驗(yàn)證了上述方案的可行性和正確性。

猜你喜歡
插樁源碼上位
基于網(wǎng)頁(yè)源碼結(jié)構(gòu)理解的自適應(yīng)爬蟲(chóng)代碼生成方法
基于圖神經(jīng)網(wǎng)絡(luò)的軟件源碼漏洞檢測(cè)方法
基于TXL的源代碼插樁技術(shù)研究
企業(yè)如何保護(hù)源碼
基于性能分析的自適應(yīng)插樁框架
特斯拉 風(fēng)云之老阿姨上位
車(chē)迷(2018年12期)2018-07-26 00:42:22
基于記錄重播的嵌入式系統(tǒng)死鎖檢測(cè)方法
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革
奈曼旗| 襄垣县| 镇江市| 沂南县| 洪泽县| 临汾市| 灵武市| 合川市| 舒城县| 石屏县| 台南县| 汝阳县| 原阳县| 南澳县| 商南县| 达孜县| 轮台县| 临汾市| 拜泉县| 明光市| 康平县| 长葛市| 于都县| 婺源县| 体育| 邵阳县| 蚌埠市| 达日县| 简阳市| 河津市| 揭西县| 梨树县| 浠水县| 固原市| 湖州市| 昌黎县| 什邡市| 黄陵县| 洛川县| 拜城县| 晋宁县|