專利名稱:一種多核mips平臺(tái)下并行系統(tǒng)調(diào)試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核MIPS ( Microprocessor without interlocked piped stages,無(wú) 內(nèi)部互鎖流水級(jí)微處理器,或者,Million Instructions Per Second,每秒百萬(wàn)條指 令)平臺(tái)下的并行技術(shù),尤其涉及一種多核MIPS平臺(tái)下并行系統(tǒng)的調(diào)試方法。
背景技術(shù):
目前多核并行技術(shù)越來(lái)越普遍,多核MIPS平臺(tái)已可以提供成熟的解決方 案,很多大芯片公司及龍芯也提供MIPS的支持,已經(jīng)成為現(xiàn)代的嵌入式系統(tǒng)主 流的平臺(tái)。MIPS大量應(yīng)用在PDA、機(jī)頂盒、信息終端和防火墻等設(shè)備上,可 以說(shuō)使用多核MIPS嵌入式系統(tǒng)是未來(lái)嵌入式領(lǐng)域的發(fā)展方向。
由于多核MIPS平臺(tái)上并行運(yùn)行的每個(gè)CPU都會(huì)對(duì)內(nèi)存、硬盤、IO設(shè)備等 資源進(jìn)行操作,會(huì)竟?fàn)幨褂没コ赓Y源,所以對(duì)于研發(fā)產(chǎn)品的調(diào)試工作是非常困 難的。
目前,普遍卩吏用的調(diào)式方法是跟蹤打印調(diào)試方法和Jtag調(diào)試方法。 跟蹤打印調(diào)試方法是目前在研發(fā)中最常用的方法,使用這個(gè)技術(shù)的方法很 難找到問(wèn)題具體發(fā)生的位置,要多次進(jìn)行猜測(cè),做大量試驗(yàn)才可能會(huì)找到問(wèn)題 所在,這樣會(huì)在研發(fā)進(jìn)度和成本上產(chǎn)生很大影響.在正式發(fā)布的產(chǎn)品上不能有 不相關(guān)的很多打印信息,不能進(jìn)行后期的客戶復(fù)雜環(huán)境中的問(wèn)題跟蹤。由于要 向終端輸出大量的打印信息,將很大影響程序的運(yùn)行速度,所以有一些對(duì)性能 要求很高的程序在產(chǎn)生問(wèn)題的情況下不能使用跟蹤打印進(jìn)行調(diào)試. 在多核并發(fā)情況下有可能根本不能使用在進(jìn)行嵌入式開發(fā)時(shí),很多情況是打 印對(duì)終端直接操作(如對(duì)串口直接操作),由于是并發(fā)多核執(zhí)行,會(huì)出現(xiàn)打印重 疊以至于看不到在打印什么,因?yàn)槊總€(gè)核都在向終端輸出。
Jtag調(diào)試方法是使用 一個(gè)硬件與要調(diào)試的機(jī)器進(jìn)行聯(lián)接,當(dāng)系統(tǒng)或軟件出現(xiàn)問(wèn)題時(shí)對(duì)CPU進(jìn)行控制,然后可以讀各個(gè)CPU的PC指針,訪問(wèn)堆棧的當(dāng)前內(nèi) 容。使用Jtag方法要額外使用硬件設(shè)備,會(huì)增加成本;每個(gè)Jtag只能對(duì)一個(gè)機(jī) 器進(jìn)行操作,還要有一條外接線非常不方便于工作;對(duì)于CPU的PC指針跑飛的 情況不能進(jìn)行跟蹤定位;只能在研發(fā)價(jià)段使用;通過(guò)Jtag得到的數(shù)值要經(jīng)過(guò)計(jì) 算和查找才會(huì)找到PC運(yùn)行所在的函數(shù);在正式發(fā)布的產(chǎn)品上不能使用,因此不 能進(jìn)行后期的客戶復(fù)雜環(huán)境中的問(wèn)題跟蹤。
發(fā)明內(nèi)容
本發(fā)明提供一種多核MIPS平臺(tái)下并行系統(tǒng)調(diào)試方法,用以解決現(xiàn)有調(diào)試 技術(shù)中存在的操作不便或根本無(wú)法適用的問(wèn)題。 本發(fā)明方法包括
步驟A:當(dāng)運(yùn)行階段產(chǎn)生關(guān)鍵問(wèn)題時(shí),保存出現(xiàn)問(wèn)題的現(xiàn)場(chǎng)環(huán)境,并進(jìn)行 復(fù)位;
步驟B:當(dāng)確認(rèn)是由于出現(xiàn)關(guān)鍵問(wèn)題而復(fù)位的,進(jìn)行關(guān)鍵問(wèn)題處理,保存 復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,并重新啟動(dòng)設(shè)備;
步驟C:設(shè)備重新啟動(dòng),當(dāng)確認(rèn)在設(shè)備初始化過(guò)程產(chǎn)生新的調(diào)試信息,保 存初始化現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境。
進(jìn)一步地,所述步驟A具體包括
步驟Al:當(dāng)運(yùn)行階段產(chǎn)生問(wèn)題時(shí),判斷所述問(wèn)題是否為關(guān)鍵問(wèn)題,如果 是,執(zhí)行步驟A2,否則在程序中處理,并在處理后返回到正常運(yùn)行狀態(tài);
步驟A2:判斷是否需要保存出現(xiàn)問(wèn)題的CPU的所有寄存器的狀態(tài),如果 需要,保存該CPU的所有寄存器的狀態(tài)值,并執(zhí)行步驟A3,否則直接執(zhí)行步 驟A3;
步驟A3:按要求進(jìn)行復(fù)位。
進(jìn)一步地,所述步驟A1還包括通過(guò)軟件看門狗和/或硬件看門狗記錄死 鎖信息,并將死鎖信息作為關(guān)鍵問(wèn)題,執(zhí)行步驟A2。進(jìn)一步地,所述步驟A3具體包括
調(diào)用不可屏蔽中斷廣播函數(shù),當(dāng)其它CPU收到不可屏蔽中斷廣播后,分 別將PC跳到0xBFC00000處進(jìn)行復(fù)位。 進(jìn)一步地,所述步驟B具體包括
步驟Bl:復(fù)位后,判斷是否是由于出現(xiàn)問(wèn)題而啟動(dòng),如果是一次正常的
復(fù)位操作,則進(jìn)入復(fù)位流程,進(jìn)行整板復(fù)位;如果啟動(dòng)程序發(fā)現(xiàn)是由于出現(xiàn)關(guān)
鍵問(wèn)題而復(fù)位的,保存復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,并標(biāo)記此次復(fù)位新產(chǎn)生的調(diào)試信 自
步驟B2:保存現(xiàn)場(chǎng)環(huán)境后,判斷仲裁復(fù)位CPU,如果該CPU就是用來(lái)復(fù) 位的CPU,進(jìn)行整板復(fù)位,并重新啟動(dòng)設(shè)備,否則永遠(yuǎn)等待仲裁CPU復(fù)位。 進(jìn)一步地,所述步驟B1中,將復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境保存到非易失寄存器中。
進(jìn)一步地,所述步驟C具體包括 步驟C1:設(shè)備重新啟動(dòng)后會(huì)重新初始化所有硬件設(shè)備; 步驟C2:檢查本次啟動(dòng)有沒(méi)有生成過(guò)新的調(diào)試信息,如果有,保存所述 調(diào)試信息,并正常啟動(dòng),否則直接正常啟動(dòng)。
進(jìn)一步地,所述步驟C2中,保存所述調(diào)試信息的過(guò)程具體包括 將調(diào)試信息生成文件進(jìn)行保存;
當(dāng)保存文件超過(guò)5個(gè)后,用后面新產(chǎn)生的文件替換最先生成的文件。 所述調(diào)試信息包括該CPU當(dāng)時(shí)的運(yùn)行位置、函數(shù)返回值和調(diào)用蹤跡。 綜上所述,本發(fā)明提供了一種多核MIPS平臺(tái)下并行系統(tǒng)調(diào)試方法,可以
帶來(lái)如下有益效果
可以精確顯示出出現(xiàn)問(wèn)題的位置,可以連續(xù)記錄5次問(wèn)題的出現(xiàn),對(duì)于應(yīng)
用開發(fā)人員透明,極大簡(jiǎn)化了多核MIPS平臺(tái)下的調(diào)試復(fù)雜度;
查看時(shí)可以看到CPU寄存器的所有信息,返回函數(shù)的函數(shù)名,出現(xiàn)問(wèn)題
時(shí)的CPU所在的函數(shù)位置,偏移量,調(diào)用蹤跡這幾項(xiàng)重要信息,這主要得益于本調(diào)試方法能夠捕獲所有系統(tǒng)異常,并在異常發(fā)生時(shí)及時(shí)完整地保存了現(xiàn)場(chǎng) 環(huán)境,并通過(guò)自動(dòng)分析將現(xiàn)場(chǎng)環(huán)境翻譯成可讀性很強(qiáng)的文本信息,使調(diào)試方便,
縮短產(chǎn)品研發(fā)周期,節(jié)省開發(fā)成本;
不用增加額外硬件設(shè)備,無(wú)額外成本投入;
在產(chǎn)品運(yùn)行過(guò)程中仍可跟蹤可能出現(xiàn)的問(wèn)題,對(duì)系統(tǒng)性能沒(méi)有影響。
圖1為本發(fā)明實(shí)施例所述方法的整體流程示意圖; 圖2為本發(fā)明實(shí)施例中,運(yùn)行階段產(chǎn)生問(wèn)題的處理流程示意圖; 圖3為本發(fā)明實(shí)施例中,復(fù)位后處理的流程示意圖; 圖4為本發(fā)明實(shí)施例中,重新啟動(dòng)后處理的流程示意圖; 圖5為本發(fā)明實(shí)施例中,通過(guò)軟件看門狗來(lái)監(jiān)控cpu因死鎖而發(fā)生異常的 流程示意圖。
具體實(shí)施例方式
下面結(jié)合附圖來(lái)具體描述本發(fā)明的優(yōu)先實(shí)施例,其中,附圖構(gòu)成本申請(qǐng)一 部分,并與本發(fā)明的實(shí)施例 一起用于闡釋本發(fā)明的原理。
下面結(jié)合附圖1到附圖5對(duì)本發(fā)明實(shí)施例所述方法進(jìn)行詳細(xì)說(shuō)明。 一個(gè)系統(tǒng)在運(yùn)行階段,通常都會(huì)產(chǎn)生一些異常,對(duì)異常發(fā)生時(shí)的現(xiàn)場(chǎng)環(huán)境 (現(xiàn)場(chǎng)環(huán)境包括各個(gè)cpu的通用寄存器值、狀態(tài)寄存器值以及堆棧的內(nèi)容)進(jìn) 行分析判斷就可以知道系統(tǒng)出了什么問(wèn)題。具體的說(shuō)就是,當(dāng)一個(gè)異常產(chǎn)生時(shí), 通過(guò)該cpu的cause寄存器(cause寄存器是cpu的狀態(tài)寄存器之一,它主要記 錄了異常發(fā)生的原因,如內(nèi)存尋址錯(cuò)誤、系統(tǒng)重起、發(fā)生不可屏蔽中斷等等) 內(nèi)容可以得知是什么原因產(chǎn)生異常,如果產(chǎn)生異常的問(wèn)題不是我們所關(guān)心的問(wèn) 題,即不是關(guān)4建問(wèn)題時(shí),就對(duì)這個(gè)異常帶來(lái)的問(wèn)題進(jìn)行合法化處理,然后返回到應(yīng)用部分的代碼,以保證程序可以繼續(xù)執(zhí)行;如果是關(guān)鍵問(wèn)題,還要看這個(gè) 關(guān)鍵問(wèn)題是否需要在這個(gè)階段就將系統(tǒng)運(yùn)行的現(xiàn)場(chǎng)環(huán)境保存下來(lái)。
如圖l所示,圖1為本發(fā)明實(shí)施例所述方法的整體流程示意圖,本發(fā)明實(shí) 施例所述方法主要包括當(dāng)運(yùn)行階段產(chǎn)生關(guān)鍵問(wèn)題時(shí),保存出現(xiàn)問(wèn)題的現(xiàn)場(chǎng)環(huán) 境,并進(jìn)行復(fù)位;當(dāng)確認(rèn)是由于出現(xiàn)關(guān)鍵問(wèn)題而復(fù)位的,進(jìn)行關(guān)鍵問(wèn)題處理, 保存復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,并重新啟動(dòng)設(shè)備;設(shè)備重新啟動(dòng),當(dāng)確認(rèn)在設(shè)備初 始化過(guò)程產(chǎn)生新的調(diào)試信息,保存初始化現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,下面分別進(jìn)行闡述。
如圖2所示,圖2為運(yùn)行階段產(chǎn)生問(wèn)題時(shí)進(jìn)行處理的流程示意圖,具體可 以包括以下步驟
步驟200:正常運(yùn)行狀態(tài);
步驟201:運(yùn)行階段產(chǎn)生了問(wèn)題;
步驟202:判斷該問(wèn)題是否為關(guān)鍵問(wèn)題,如果是,執(zhí)行步驟203,否則在 程序中處理即可,處理后返回到正常運(yùn)行狀態(tài); 步驟203:進(jìn)入問(wèn)題處理流程;
步驟204:判斷是否需要保存當(dāng)前出現(xiàn)問(wèn)題的cpu (即發(fā)生異常的cpu,因 為多核mips平臺(tái)下經(jīng)常發(fā)生一個(gè)cpu發(fā)生異常,但其它c(diǎn)pu仍然正常工作的 情況)的所有寄存器的狀態(tài),如果需要,執(zhí)行步驟205,否則執(zhí)行步驟206;
步驟205:保存當(dāng)前CPU的所有寄存器的狀態(tài)值,并執(zhí)行步驟206;
步驟206:按多核MIPS平臺(tái)的硬件操作要求調(diào)用NMI (不可屏蔽中斷) 廣播函數(shù),其它CPU收到NMI廣播后,分別將PC跳到OxBFCOOOOO處執(zhí)行 復(fù)位程序。然后進(jìn)入下一個(gè)處理階段一一復(fù)位后處理階段。
在本發(fā)明實(shí)施例所述方法中,是通過(guò)發(fā)NMI復(fù)位來(lái)看cause判斷保存現(xiàn)場(chǎng)環(huán) 境標(biāo)認(rèn),本領(lǐng)域普通技術(shù)人員應(yīng)該知道,本發(fā)明實(shí)施例當(dāng)然也可以通過(guò)其它的 復(fù)位方式,讀內(nèi)存中一個(gè)標(biāo)志判斷需要保存調(diào)試環(huán)境。通過(guò)任何復(fù)位的后保存 CPU的調(diào)試環(huán)境與本方法相同,此處就不再贅述。
復(fù)位后,啟動(dòng)程序首先檢查的是是否由于出現(xiàn)問(wèn)題而啟動(dòng),如果是一次正常的復(fù)位操作,則進(jìn)入復(fù)位流程,將整板復(fù)位(相當(dāng)于硬件重新加電);如 果啟動(dòng)程序發(fā)現(xiàn)是由于出現(xiàn)關(guān)鍵問(wèn)題而復(fù)位的,然后將現(xiàn)場(chǎng)環(huán)境保存到非易失 存儲(chǔ)器中,并標(biāo)記新產(chǎn)生的調(diào)試信息。保存現(xiàn)場(chǎng)環(huán)境后,要仲裁CPU(多核 MIPS平臺(tái)下每一個(gè)cpu都會(huì)進(jìn)入復(fù)位處理程序,各自記錄自己的現(xiàn)場(chǎng)環(huán)境, 但只能由一個(gè)cpu進(jìn)行整板復(fù)位操作,否則其它c(diǎn)pu還沒(méi)有記錄完現(xiàn)場(chǎng)環(huán)境就 可能被復(fù)位了。這里仲裁的原則是首選cpu0,若cpu0就是發(fā)生異常的cpu, 則選擇cpu31,其它依次第推),如果是,將整板復(fù)位,這次復(fù)位將會(huì)引起正常 啟動(dòng),因?yàn)槭切鲁霈F(xiàn)的調(diào)試信息,所以進(jìn)入重新啟動(dòng)后處理階段。
如圖3所示,圖3為復(fù)位后處理階段的處理流程示意圖,可以包括以下步
驟
步驟300:復(fù)位;
步驟301:判斷是否為NMI,如果是,執(zhí)行步驟302,否則,執(zhí)行步驟307; 步驟302: CPU現(xiàn)場(chǎng)保存識(shí)別函數(shù);
步驟303:判斷該CPU是否已經(jīng)保存過(guò)現(xiàn)場(chǎng)環(huán)境,如果是,執(zhí)行步驟304, 否則執(zhí)行步驟309;
步驟304:進(jìn)入預(yù)備復(fù)位流程;
步驟305:仲裁復(fù)位的CPU,如果該cpu就是用來(lái)復(fù)位的CPU,執(zhí)行步驟 307,否則執(zhí)行步驟306;通常用第一個(gè)和最后一個(gè)CPU作為復(fù)位的CPU,仲 裁的時(shí)候需要從多個(gè)CPU中選擇一個(gè);
步驟306:空循環(huán),永遠(yuǎn)等待復(fù)位CPU復(fù)位;
步驟307:進(jìn)入復(fù)位流程,復(fù)位cpu檢查到其它c(diǎn)pu都已經(jīng)處于等待狀態(tài) 后,就知道現(xiàn)場(chǎng)環(huán)境已經(jīng)保存完了,此時(shí)就可以復(fù)位了; 步驟308:重新啟動(dòng)設(shè)備。
設(shè)備重新啟動(dòng)后會(huì)重新初始化所有硬件設(shè)備,然后4企查這次啟動(dòng)有沒(méi)有生 成過(guò)新的現(xiàn)場(chǎng)環(huán)境,如果有的話就會(huì)保存起來(lái)。由于現(xiàn)場(chǎng)環(huán)境是一種二進(jìn)制的 原始信息,翻譯后變成文本的調(diào)試信息,調(diào)試信息可讀性很強(qiáng),直接用來(lái)判斷問(wèn)題原因,有時(shí)可以直接指出錯(cuò)誤程序語(yǔ)句,所以保存的時(shí)候需要將把現(xiàn)場(chǎng)環(huán)
境自動(dòng)翻譯成當(dāng)時(shí)CPU運(yùn)行位置、函數(shù)返回值和調(diào)用蹤跡等調(diào)試信息,將所 述調(diào)試信息生成文件進(jìn)行保存(本發(fā)明實(shí)施例中,以5個(gè)文件為例),如果產(chǎn) 生第六個(gè)文件,第六個(gè)文件將替換掉最先生成的文件。保存完畢后,將其它需 要的程序啟動(dòng)起來(lái)。
如圖4所示,圖4為重新啟動(dòng)后處理的流程示意圖,可以包括以下步驟
步驟400:重新啟動(dòng)設(shè)備;
步驟401:初始化設(shè)備;
步驟402:準(zhǔn)備保存;
步驟403:是否保存新生成的調(diào)試信息,如果是執(zhí)行步驟404,否則執(zhí)行 步驟405;
步驟404:保存調(diào)試信息到flash盤。因?yàn)镹VRAM (非易失存儲(chǔ)器)空間 有限只能保存一份調(diào)試信息,將其轉(zhuǎn)移到flash盤后,就可以再次保存,這樣 最多可以保存5份,即可以連續(xù)記錄5次系統(tǒng)異常;
步驟405:正常啟動(dòng);
步驟406:提供可以查看尋找的關(guān)鍵問(wèn)題。
在沒(méi)有出產(chǎn)品階段,即開發(fā)階段,如果想知道此時(shí)某個(gè)CPU當(dāng)前運(yùn)行的 位置,可以手工將當(dāng)時(shí)的運(yùn)行環(huán)境保存起來(lái)。這個(gè)方式相當(dāng)于Jtag調(diào)試中控制 CPU,通過(guò)運(yùn)行一個(gè)自行研制的命令行(echo "nmi" > /proc/coredump )引起一 次保存操作,
當(dāng)產(chǎn)品正式發(fā)布后,使用的環(huán)境要比實(shí)驗(yàn)室環(huán)境復(fù)雜,所以每一種產(chǎn)品都 不能保證是絕對(duì)穩(wěn)定的,在產(chǎn)品運(yùn)行過(guò)程中可以獲得歷次的調(diào)試信息對(duì)后期研 發(fā)和改進(jìn)產(chǎn)品質(zhì)量是非常重要的。用戶可以通過(guò)WEBUI登入設(shè)備,選擇下載健 康記錄后便會(huì)把歷次產(chǎn)生的調(diào)試信息下載到硬盤,然后通過(guò)E-mail發(fā)送到客服。 所述健康記錄主要包括調(diào)試信息和系統(tǒng)運(yùn)行狀態(tài)信息,前者負(fù)責(zé)記錄異常,后 者主要是軟硬件版本號(hào)、cpu利用率、內(nèi)存利用率、連接表等狀態(tài)信息,用來(lái)判斷沒(méi)有異常的時(shí)候系統(tǒng)運(yùn)行的狀態(tài)是否良好。
這里,產(chǎn)品發(fā)布階段獲取健康記錄的方法不只是用WEBUI, 也可以用其
它形式的終端。
本發(fā)明實(shí)施例還通過(guò)軟件看門狗來(lái)監(jiān)控cpu因死鎖而發(fā)生的異常,具體如 圖5所示,在系統(tǒng)啟動(dòng)時(shí)進(jìn)行初始化,初始化時(shí)為某個(gè)CPU設(shè)定要求的超時(shí)時(shí) 間,如果超過(guò)超時(shí)時(shí)間那個(gè)CPU還沒(méi)有反應(yīng)過(guò)來(lái)進(jìn)行喂狗,將會(huì)記錄下這個(gè) CPU的超時(shí)情況,然后進(jìn)入步驟103所述的問(wèn)題處理流程。當(dāng)然,也可以使用 硬件看門狗達(dá)到同樣的效果,或使用軟件看門狗和硬看門狗結(jié)合達(dá)到同樣效 果。
綜上所述,本發(fā)明實(shí)施例提供了 一種多核MIPS平臺(tái)下并行系統(tǒng)的調(diào)試方 法,通過(guò)本發(fā)明實(shí)施例所述方法可以帶來(lái)如下有益效果
可以精確顯示出出現(xiàn)問(wèn)題的位置,可以連續(xù)記錄5次問(wèn)題的出現(xiàn),對(duì)于應(yīng) 用開發(fā)人員透明,極大簡(jiǎn)化了多核MIPS平臺(tái)下的調(diào)試復(fù)雜度;
查看時(shí)可以看到CPU寄存器的所有信息,返回函數(shù)的函數(shù)名,出現(xiàn)問(wèn)題時(shí) 的CPU所在的函數(shù)位置,偏移量,調(diào)用蹤跡這幾項(xiàng)重要信息,這主要得益于本 調(diào)試方法能夠捕獲所有系統(tǒng)異常,并在異常發(fā)生時(shí)及時(shí)完整地保存了現(xiàn)場(chǎng)環(huán) 境,并通過(guò)自動(dòng)分析將現(xiàn)場(chǎng)環(huán)境翻譯成可讀性很強(qiáng)的文本信息,使調(diào)試方便, 縮短產(chǎn)品研發(fā)周期,節(jié)省開發(fā)成本;
不用增加額外硬件設(shè)備,無(wú)額外成本投入;
在產(chǎn)品運(yùn)行過(guò)程中仍可跟蹤可能出現(xiàn)的問(wèn)題,對(duì)系統(tǒng)性能沒(méi)有影響。
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種多核MIPS平臺(tái)下并行系統(tǒng)調(diào)試方法,其特征在于,包括步驟A當(dāng)運(yùn)行階段產(chǎn)生關(guān)鍵問(wèn)題時(shí),保存出現(xiàn)問(wèn)題的現(xiàn)場(chǎng)環(huán)境,并進(jìn)行復(fù)位;步驟B當(dāng)確認(rèn)是由于出現(xiàn)關(guān)鍵問(wèn)題而復(fù)位的,進(jìn)行關(guān)鍵問(wèn)題處理,保存復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,并重新啟動(dòng)設(shè)備;步驟C設(shè)備重新啟動(dòng),當(dāng)確認(rèn)在設(shè)備初始化過(guò)程產(chǎn)生新的調(diào)試信息,保存初始化現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A具體包括 步驟A1:當(dāng)運(yùn)行階段產(chǎn)生問(wèn)題時(shí),判斷所述問(wèn)題是否為關(guān)鍵問(wèn)題,如果是,執(zhí)行步驟A2,否則在程序中處理,并在處理后返回到正常運(yùn)行狀態(tài);步驟A2:判斷是否需要保存出現(xiàn)問(wèn)題的CPU的所有寄存器的狀態(tài),如果 需要,保存該CPU的所有寄存器的狀態(tài)值,并執(zhí)行步驟A3,否則直接執(zhí)行步 驟A3;步驟A3:按要求進(jìn)行復(fù)位。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟A1還包括通 過(guò)軟件看門狗和/或硬件看門狗記錄死鎖信息,并將死鎖信息作為關(guān)鍵問(wèn)題,執(zhí)行步驟A2。
4、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟A3具體包括 調(diào)用不可屏蔽中斷廣播函數(shù),當(dāng)其它CPU收到不可屏蔽中斷廣播后,分別將PC跳到0xBFC00000處進(jìn)行復(fù)位。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B具體包括 步驟Bl:復(fù)位后,判斷是否是由于出現(xiàn)問(wèn)題而啟動(dòng),如果是一次正常的復(fù)位操作,則進(jìn)入復(fù)位流程,進(jìn)行整板復(fù)位;如果啟動(dòng)程序發(fā)現(xiàn)是由于出現(xiàn)關(guān)鍵問(wèn)題而復(fù)位的,保存復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,并標(biāo)記此次復(fù)位新產(chǎn)生的調(diào)試信 自 步驟B2:保存現(xiàn)場(chǎng)環(huán)境后,判斷仲裁復(fù)位CPU,如果該CPU就是用來(lái)復(fù) 位的CPU,進(jìn)行整板復(fù)位,并重新啟動(dòng)設(shè)備,否則永遠(yuǎn)等待仲裁CPU復(fù)位。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟B1中,將復(fù)位 現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境保存到非易失性存儲(chǔ)器中。
7、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C具體包括 步驟C1:設(shè)備重新啟動(dòng)后會(huì)重新初始化所有硬件設(shè)備;步驟C2:檢查本次啟動(dòng)有沒(méi)有生成過(guò)新的調(diào)試信息,如果有,保存所述 調(diào)試信息,并正常啟動(dòng),否則直接正常啟動(dòng)。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟C2中,保存所 述調(diào)試信息的過(guò)程具體包括將調(diào)試信息生成一個(gè)文件進(jìn)行保存至flash盤;當(dāng)保存文件超過(guò)5個(gè)后,用后面新產(chǎn)生的文件替換最先生成的文件。
9、 根據(jù)權(quán)利要求8所述的方法,其特征在于,所述調(diào)試信息包括該CPU 當(dāng)時(shí)的運(yùn)行位置、函數(shù)返回值和調(diào)用蹤跡。
全文摘要
本發(fā)明公開了一種多核MIPS平臺(tái)下并行系統(tǒng)調(diào)試方法,用以解決現(xiàn)有調(diào)試技術(shù)中存在的操作不便或根本無(wú)法適用的問(wèn)題。本發(fā)明方法包括當(dāng)運(yùn)行階段產(chǎn)生關(guān)鍵問(wèn)題時(shí),保存出現(xiàn)問(wèn)題的現(xiàn)場(chǎng)環(huán)境,并進(jìn)行復(fù)位;當(dāng)確認(rèn)是由于出現(xiàn)關(guān)鍵問(wèn)題而復(fù)位的,進(jìn)行關(guān)鍵問(wèn)題處理,保存復(fù)位現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境,并重新啟動(dòng)設(shè)備;設(shè)備重新啟動(dòng),當(dāng)確認(rèn)在設(shè)備初始化過(guò)程產(chǎn)生新的調(diào)試信息,保存初始化現(xiàn)場(chǎng)的現(xiàn)場(chǎng)環(huán)境。本發(fā)明所述對(duì)于應(yīng)用開發(fā)人員透明,極大簡(jiǎn)化了多核MIPS平臺(tái)下的調(diào)試復(fù)雜度,并且使調(diào)試方便,縮短產(chǎn)品研發(fā)周期,節(jié)省開發(fā)成本。
文檔編號(hào)G06F11/36GK101470662SQ20071030476
公開日2009年7月1日 申請(qǐng)日期2007年12月29日 優(yōu)先權(quán)日2007年12月29日
發(fā)明者彤 劉, 吳亞飚, 張宏君 申請(qǐng)人:北京天融信網(wǎng)絡(luò)安全技術(shù)有限公司