專利名稱:網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序加載監(jiān)聽技術(shù),尤其涉及用于網(wǎng)絡(luò)計算機硬件平臺板級調(diào)試的加
載監(jiān)聽方法及其系統(tǒng)。
背景技術(shù):
網(wǎng)絡(luò)計算機(NC)是一種計算機終端,它通過RDP或ICA協(xié)議與服務(wù)器連接,訪問、 使用服務(wù)器上的所有軟、硬件和數(shù)據(jù)資源。與普通的PC相比,NC價格低廉,安全性高、易于 管理和維護,適用于電子政務(wù)、教育信息化、企業(yè)信息化、醫(yī)療信息化等行業(yè)和領(lǐng)域。
目前,網(wǎng)絡(luò)計算機是使用的UniCore微處理器中包含一個調(diào)試協(xié)處理器ICE。 ICE (In-Circuit Emulator)是基于JTAG技術(shù)(JTAG/IEEE 1149.1)的一種硬件調(diào)試工具, 主要用于微處理器/微控制器的開發(fā)環(huán)境。整合了 ICE的SoC通過引腳與外部的調(diào)試主機 建立起通信通道,通過JTAG標準制定的通信規(guī)范,完成遠程通信調(diào)試。1990年,IEEE頒布 了IEEE 1149. l標準,描述了邊界掃描測試(boundary-scan testing)的方法。該標準由聯(lián) 合測試活動組(Joint Test Action Group, JTAG)開發(fā),因此也被稱為JTAG/IEEE 1149.1。 通過JTAG接口,邊界掃描解決了新的封裝方式帶來的測試訪問問題?,F(xiàn)代處理器功能強 大,構(gòu)造復(fù)雜,基本都包含了符合JTAG標準的功能部件,這就為軟件調(diào)試提供了強有力的 支持。 任何一種硬件的設(shè)計完成之后,都需要對硬件功能的正確性進行驗證,并且還要 對其所需的系統(tǒng)軟件進行調(diào)試。對于硬件設(shè)計正確性的驗證可以采用模擬仿真驗證、FPGA 原型驗證和實際芯片測試。 使用模擬仿真來對設(shè)計進行驗證雖然比較方便,但是它們不是最終的硬件環(huán)境, 因此經(jīng)常遇到的一個問題是,在實際硬件測試時發(fā)現(xiàn)了在仿真環(huán)境中沒用遇到的新問題, 造成系統(tǒng)運行不正常。使用實際的芯片進行功能驗證是最可靠的方法,但是如果實際流片 的芯片出錯則代價非常高。因此通常是將硬件設(shè)計燒錄到FPGA板上進行原型驗證,并且在 FPGA原型驗證平臺上驗證調(diào)試。 FPGA原型驗證平臺是一個嚴格遵循硬件設(shè)計的開發(fā)板,如圖1所示。成熟體系 結(jié)構(gòu)的調(diào)試開發(fā)板一般會內(nèi)嵌一個標準的通信加載程序,調(diào)試主機上運行集成開發(fā)調(diào)試工 具,即調(diào)試器。調(diào)試主機通過仿真器和目標機相連。仿真器處理宿主和目標機之間所有的通 信,調(diào)試主機的通信口可以是串口、并行口或者高速以太網(wǎng)接口。仿真器通過轉(zhuǎn)接口,比如 邊緣掃描接口 (JTAG/IEEE1149. 1)等和目標機相連。但是針對一個新型體系結(jié)構(gòu)的FPGA開 發(fā)板,要在其硬件平臺正確性沒有保證并且沒有系統(tǒng)軟件的情況下運行程序,只能使用編 程器將測試程序燒錄到Flash中,并將Flash放置于開發(fā)板插座上,然后系統(tǒng)加電從Flash 中執(zhí)行程序,并且通過亮滅燈的方式來顯示程序運行的情況。如果測試程序做了修改,則需 要斷電取出Flash使用編程器燒錄新的測試程序。新型的體系結(jié)構(gòu)由于沒有比較完善的集 成開發(fā)環(huán)境,因此每次運行程序時都需要將程序燒錄到Flash后再運行,非常影響效率。所 以本文闡述了一個解決該問題的方法及其系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽 方法及其系統(tǒng),使得在調(diào)試程序時可以避免每次運行目標程序都將程序燒錄到Flash后再 運行而影響效率的問題。 更進一步的,本發(fā)明提供了便利的調(diào)試功能。 為了解決上述技術(shù)問題,本發(fā)明提供了一種網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載 監(jiān)聽方法,用于一調(diào)試主機針對一調(diào)試目標板的調(diào)試監(jiān)聽,包括
步驟l,創(chuàng)建目標程序; 步驟2,所述調(diào)試主機通過ICE驅(qū)動模塊將所述目標程序發(fā)送至所述調(diào)試目標板;
步驟3,所述調(diào)試目標板的加載模塊加載并運行所述目標程序,所述調(diào)試主機進行 監(jiān)聽,如果發(fā)現(xiàn)運行異常,所述加載模塊執(zhí)行異常處理。 所述步驟2之前進一步包括所述調(diào)試主機的ELF加載模塊確認所述目標程序的 格式,將ELF格式的目標程序轉(zhuǎn)換為映像格式。
所述步驟2之前進一步包括 所述調(diào)試主機與所述調(diào)試目標板之間執(zhí)行通信自檢的步驟,該步驟進一步包括 所述調(diào)試目標板在上電時,發(fā)送連接標識至所述調(diào)試主機; 所述調(diào)試主機收到所述連接標識后,發(fā)送連接響應(yīng)標識至所述調(diào)試目標板; 所述調(diào)試目標板發(fā)送連接確認標識至所述調(diào)試主機; 所述調(diào)試主機接收到所述連接確認標識,自檢通過。 所述目標程序包括用于系統(tǒng)狀態(tài)信息收集的程序和用于信息傳送輸出的程序。
所述步驟3之后進一步包括 在所述調(diào)試主機中顯示所述目標程序的運行狀態(tài)信息。 本發(fā)明還公開了一種網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽系統(tǒng),包括
—調(diào)試主機以及一調(diào)試目標板; 所述調(diào)試主機進一步包括加載監(jiān)聽主模塊、ICE驅(qū)動模塊、遠程寫模塊; 所述加載監(jiān)聽主模塊用于控制所述調(diào)試主機中的其他模塊并對所述調(diào)試目標板
進行監(jiān)聽; 所述ICE驅(qū)動模塊用于實現(xiàn)所述調(diào)試主機與所述調(diào)試目標板之間的數(shù)據(jù)傳輸,傳 輸一 目標程序至所述調(diào)試目標板; 所述遠程寫模塊用于向所述調(diào)試目標板發(fā)送數(shù)據(jù); 所述調(diào)試目標板進一步包括一加載模塊,用于加載以及運行所述目標程序,并在 發(fā)現(xiàn)運行異常時執(zhí)行異常處理。 所述調(diào)試主機還包括一 ELF加載模塊,用于確認所述目標程序的格式,并將ELF格 式的目標程序轉(zhuǎn)換為映像格式。 所述調(diào)試主機還包括一 自檢測試模塊,用于執(zhí)行所述調(diào)試主機與所述調(diào)試目標板 之間的通信自檢。 所述目標程序包括用于系統(tǒng)狀態(tài)信息收集的程序和用于信息傳送輸出的程序。
所述加載模塊用于在加載前,對所加載的數(shù)據(jù)進行校驗,如果發(fā)現(xiàn)錯誤,退出,否
4則繼續(xù)。 該系統(tǒng)包括調(diào)試主機的"加載_監(jiān)聽"程序(Loadlisten)和調(diào)試目標板端的"加 載"程序(Loader)組成,兩者相互通信,負責將用戶的程序裝載到目標板上特定內(nèi)存處,然 后Loader跳轉(zhuǎn)到用戶程序開始執(zhí)行。在用戶程序執(zhí)行的過程中可以向主機端發(fā)送數(shù)據(jù),主 機端會接收并顯示數(shù)據(jù)。 本發(fā)明使得在調(diào)試程序時可以避免每次運行目標程序都將程序燒錄到Flash后 再運行,提高了效率,調(diào)試更加方便。
圖1是嵌入式系統(tǒng)軟件加載調(diào)試裝置圖; 圖2是本發(fā)明的網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽系統(tǒng)的結(jié)構(gòu)示意圖;
圖3A、3B是本發(fā)明的網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽方法的流程圖。
具體實施例方式
本發(fā)明通過"加載_監(jiān)聽"的方式支持目標程序的執(zhí)行、調(diào)試、結(jié)果查看,從而把對 目標系統(tǒng)的干擾降到了最低。 如圖2所示,為本發(fā)明的網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽系統(tǒng)的結(jié)構(gòu)示 意圖。網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽系統(tǒng)200包括一調(diào)試目標板30,該調(diào)試目 標板30可以是一 FPGA開發(fā)板。網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽系統(tǒng)200還包括 一調(diào)試主機20。在一實施例中,F(xiàn)PGA開發(fā)板為一網(wǎng)絡(luò)計算機的原型。 一目標程序?qū)⒈话惭b 加載在該調(diào)試目標板中進行運行,以實現(xiàn)調(diào)試過程。該目標程序可以是匯編測試程序,也可 以是系統(tǒng)軟件,如Bootloader或操作系統(tǒng)。 該目標程序內(nèi)部設(shè)置有系統(tǒng)狀態(tài)信息收集功能,即檢查程序關(guān)鍵位置是否可達, 用于表明程序運行進度。另外,目標程序還包括具備信息傳送輸出功能的程序。
調(diào)試主機20的并口轉(zhuǎn)接調(diào)試目標板30的JTGA 口 ,使得調(diào)試主機20與調(diào)試目標 板30實現(xiàn)交互。調(diào)試主機20通過在調(diào)試過程中向調(diào)試目標板30發(fā)送并在調(diào)試目標板中 運行目標程序的方式,避免每次運行目標程序都需將目標程序燒錄至調(diào)試目標板的f lash。
當調(diào)試主機20與調(diào)試目標板30實現(xiàn)交互后,調(diào)試主機20還可根據(jù)用戶需要單獨 地向調(diào)試目標板30發(fā)送對目標程序的控制指令,同時從調(diào)試目標板30獲取目標程序的運 行信息并加以顯示。調(diào)試主機20進一步包括加載監(jiān)聽主模塊(Loadlisten主模塊)201、 ICE驅(qū)動模塊203、遠程寫模塊204。 在另一實施例中,調(diào)試主機20還包括自檢測試模塊(Selftest模塊)202。
在另一實施例中,調(diào)試主機20還包括ELF加載模塊(LoachELF模塊)205。
調(diào)試目標板30中具備一加載模塊301,用于加載以及運行所述目標程序,并在發(fā) 現(xiàn)運行異常時執(zhí)行異常處理。 加載監(jiān)聽主模塊201用于控制整個程序流程并監(jiān)聽、顯示目標程序返回的數(shù)據(jù)。 加載監(jiān)聽主模塊201是調(diào)試目標板30中加載模塊(Loader模塊)301和調(diào)試主機20上自 檢測試模塊202、 ICE驅(qū)動模塊203、遠程寫模塊204、ELF加載模塊205的橋梁,它負責與調(diào) 試目標板上加載模塊301的交互,并對加載模塊301返回的信息進行用戶。同時,加載監(jiān)聽
5主模塊201根據(jù)用戶給出的命令參數(shù)處理各種情況,如目標程序的文件格式、目標程序加 載到內(nèi)存中的位置、目標程序的文件名、目標程序是否以十六進制格式打印輸出結(jié)果、目標 程序是否輸出程序運行狀態(tài)信息以及目標程序是否采用強制自檢模式。
自檢測試模塊202用于測試JTAG通信的正確性。調(diào)試目標板30上電時加載模塊 301發(fā)出連接標識,該連接標識可以是一字符標識AB,自檢測試模塊202接到AB后,會發(fā)送 響應(yīng)標識CD,接著加載模塊301收到CD則再發(fā)出連接確認標識EF,自檢測試模塊202收到 EF則表明數(shù)據(jù)通信正確,自檢通過。 ICE驅(qū)動模塊203用于實現(xiàn)ICE發(fā)送和接收。調(diào)試主機20與調(diào)試目標板30的通 信均是通過主機的并口和目標板的JTAG 口來實現(xiàn)。調(diào)試主機通過并口轉(zhuǎn)接為JTGA 口與調(diào) 試目標板進行交互。調(diào)試主機20的ICE驅(qū)動模塊用于將調(diào)試主機20要發(fā)送的數(shù)據(jù)通過并 口傳送到調(diào)試開發(fā)板的JTAG 口 ,并由加載模塊301將數(shù)據(jù)從JTAG 口進行接收。ICE驅(qū)動模 塊203用于實現(xiàn)底層數(shù)據(jù)傳輸?shù)募毠?jié)。 遠程寫模塊204用于通過ICE驅(qū)動模塊向遠程目標板發(fā)送數(shù)據(jù)。當調(diào)試主機20 要傳送文件到調(diào)試目標板30時,調(diào)用遠程寫模塊204中的函數(shù)來完成,并由ICE驅(qū)動模塊 203實現(xiàn)底層傳送細節(jié)。 ELF加載模塊205用于實現(xiàn)對ELF文件的支持。目標程序一般采用ELF文件格式 來執(zhí)行,因為ELF文件格式制作比較簡單,并且?guī)в泻芏嗾f明和調(diào)試的信息,這有助于文件 的運行調(diào)試。但是比較大的程序如Bootloader和操作系統(tǒng)則是例外,它們一般采用映像文 件格式。ELF加載模塊205接收ELF格式的文件,對其進行解析獲取文件的調(diào)試和輔助信 息,并去除一些運行時非必要的信息然后轉(zhuǎn)換成映像文件進行傳送。 調(diào)試目標板30中設(shè)置有帶有加載模塊的Flash。加載模塊會在調(diào)試目標板30上 電后開始執(zhí)行,并負責與調(diào)試主機端通信,包括與調(diào)試主機20握手自檢、接收調(diào)試主機20 發(fā)來的數(shù)據(jù)等。接收目標程序完成后跳轉(zhuǎn)到目標程序入口進行執(zhí)行,當目標程序產(chǎn)生異常 時對其進行異常處理。 基于以上系統(tǒng),本發(fā)明的網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽方法的流程圖 如圖3A、3B所示,包括以下步驟
步驟l,創(chuàng)建目標程序; 步驟2,調(diào)試主機20通過ICE驅(qū)動模塊203將所述目標程序發(fā)送至所述調(diào)試目標 板30 ; 步驟3,所述調(diào)試目標板30的加載模塊301加載并運行所述目標程序,如果發(fā)現(xiàn)運 行異常,所述加載模塊301執(zhí)行異常處理。 所述步驟1進一步包括,步驟301,根據(jù)需求創(chuàng)建目標程序。 根據(jù)需要編寫目標程序,目標程序中需包含結(jié)果輸出功能,即用于將運行結(jié)果傳 送給調(diào)試主機20并顯示。由于此時運行環(huán)境一般還沒打開匪U支持,所以直接采用實地址 編程。隨后,采用交叉編譯工具鏈來創(chuàng)建目標程序,目標程序的文件格式可以是映像文件也 可以是ELF文件。由于目標程序的運行環(huán)境沒有庫的支持,所以編譯時使用靜態(tài)連接。編 譯時可以使用-Ttext 0x2000選項表明目標代碼的代碼段從0x2000開始,使用_e main表 明代碼入口為main標號。 該目標程序中包括用于收集程序系統(tǒng)狀態(tài)信息的程序和結(jié)果輸出程序(S卩,用于信息傳送輸出的程序),以便運行時調(diào)試主機20能夠?qū)δ繕顺绦蜻M行監(jiān)聽。
步驟1、2之間進一步包括步驟302-305 : 步驟302,確認目標程序的文件格式,如果是ELF格式,執(zhí)行步驟303,如果不是ELF 格式,執(zhí)行步驟304。 加載Li皿x內(nèi)核映像時需要使用映像文件加載。對于別的驗證測試程序則采用 ELF文件格式,ELF文件格式制作比較簡單,并且?guī)в泻芏嗾f明和調(diào)試的信息,這有助于文 件的運行調(diào)試。 步驟303,進行ELF格式處理。利用ELF加載模塊205進行處理,將目標程序的格 式轉(zhuǎn)換為映像格式,隨后執(zhí)行步驟304。 此時,用戶還可通過命令,利用加載監(jiān)聽主模塊指定加載目標程序的各個參數(shù),如 目標程序的文件格式、目標程序加載到內(nèi)存中的位置、目標程序的文件名、目標程序是否以 十六進制格式打印輸出結(jié)果、目標程序是否輸出程序運行狀態(tài)信息以及目標程序是否采用 強制自檢模式。 步驟304,進行媒介通信自檢,檢查ICE數(shù)據(jù)通信的正確性,包括檢查數(shù)據(jù)接收和 數(shù)據(jù)發(fā)送等。 自檢的具體步驟包括 調(diào)試目標板30上電時,加載模塊301發(fā)出連接標識,該連接標識可以是字符標識 AB ; 調(diào)試主機20中的加載監(jiān)聽主模塊201、自檢測試模塊202接到AB后,發(fā)送響應(yīng)標 識CD ; 加載模塊301收到響應(yīng)標識CD則再發(fā)出連接確認標識EF ; 加載監(jiān)聽主模塊201、自檢測試模塊202收到連接確認標識EF則表明數(shù)據(jù)通信正 確,自檢通過。 步驟305,加載監(jiān)聽主模塊201判斷是否自檢出錯,以及在自檢出錯時是否采用了 自檢強制方式,如果自檢出錯并且采用自檢強制方式,調(diào)試主機20的加載監(jiān)聽主模塊201 會退出,執(zhí)行步驟314 ;如果不使用自檢強制方式則調(diào)試主機20將盡可能的忽略遇到的錯 誤(如忽略ICE硬件ID錯誤等);如果自檢通過,執(zhí)行步驟306。 所述步驟2進一步包括步驟306,自檢通過后,調(diào)試主機20的加載監(jiān)聽模塊201通 過控制ICE驅(qū)動模塊203,將所創(chuàng)建的目標程序傳送到調(diào)試目標板30的加載模塊301。
所述步驟3進一步包括 步驟3061,由加載模塊301將目標程序存放在由加載監(jiān)聽模塊201所設(shè)定的,測試 目標板30內(nèi)存指定位置以進行加載。 步驟307,目標程序加載完畢后,加載模塊301對加載數(shù)據(jù)進行校驗,驗證是否加 載成功,如果校驗錯誤,則退出此次執(zhí)行,執(zhí)行步驟314,以等待下一次執(zhí)行,如果校驗正確, 繼續(xù)執(zhí)行步驟308。 步驟308,從調(diào)試目標板30的加載模塊301跳轉(zhuǎn)到目標程序入口地址,以執(zhí)行目標 程序,調(diào)試主機進行監(jiān)聽。 從加載模塊301進入目標程序時,系統(tǒng)處于supervisor狀態(tài),SP寄存器有初始值 (加載模塊的堆棧設(shè)置在128M處),S卩,目標程序初始狀態(tài)和系統(tǒng)復(fù)位的狀態(tài)相比,除有初
7始堆棧外,其它狀態(tài)都是相同的。目標程序在執(zhí)行時對系統(tǒng)有完全的控制權(quán),即加載模塊 301不再會被執(zhí)行,目標程序可以重新設(shè)置自己的堆棧(當然也可以使用加載模塊留下來 的堆棧)。 步驟309,判斷執(zhí)行過程是否產(chǎn)生異常,如果是,執(zhí)行步驟310,以進入加載模塊的 異常處理模塊,如果否,則繼續(xù)執(zhí)行步驟311。這樣有助于目標定位目標程序的錯誤類型。
步驟310,異常處理。 為了幫助定位用戶程序的錯誤,加載模塊301中加入了簡單的異常處理。當目標
程序沒有修改異常處理向量位置時(即向量開始于OxffffOOOO時),加載模塊301中的異
常處理有效。此時,當目標程序觸發(fā)了異常時,加載模塊301中的異常處理程序會顯示異常
名稱,并終止監(jiān)聽。 步驟3之后進一步包括 步驟311,判斷加載監(jiān)聽主模塊是否設(shè)置有控制狀態(tài)信息輸出,如果是,執(zhí)行步驟 312,如果否,執(zhí)行步驟313。 步驟312,在加載監(jiān)聽主模塊201中顯示目標程序運行的狀態(tài)信息,包括運行進
度、關(guān)鍵位置的系統(tǒng)狀態(tài)信息等,以幫助進行錯誤分析。 步驟313,在加載監(jiān)聽主模塊201中顯示目標程序的輸出。 使用參數(shù)-p設(shè)置字符前綴數(shù)字,如果輸出結(jié)果的高24位與前綴數(shù)字高24位相 等,則以字符方式顯示輸出結(jié)果的低8位。使用-x參數(shù)強制將所有接收到的數(shù)據(jù)全部以 十六進制顯示。 步驟314,判斷是否執(zhí)行下一個程序,如果否,則結(jié)束執(zhí)行,如果是,執(zhí)行步驟 3061,并以批處理的方式加載和執(zhí)行程序,且在程序結(jié)束時終止監(jiān)聽,并對系統(tǒng)進行復(fù)位。 一般地,可以使用系統(tǒng)的Reset模塊的軟件復(fù)位功能進行復(fù)位,當Reset模塊不可用時,可 以設(shè)法將系統(tǒng)的狀態(tài)恢復(fù)到復(fù)位時的狀態(tài),然后跳轉(zhuǎn)到地址OxffffOOOO處執(zhí)行。調(diào)試主機 20的加載監(jiān)聽主模塊201接收到OxDB將正常退出。 一般地,簡單的測試程序在程序結(jié)束時 最好輸出0xDB,并進入一個死循環(huán)。終止監(jiān)聽功能在一些特殊的程序中也很有用,如使用獨 立的主機端通信程序的0S-Loader, GDB-stub等。 下面以網(wǎng)絡(luò)計算機FPGA開發(fā)板系統(tǒng)上進行Li皿x內(nèi)核調(diào)試為應(yīng)用實例,對本發(fā)明 作進一步的說明。 網(wǎng)絡(luò)計算機FPGA開發(fā)板系統(tǒng)包含一套完整的軟件系統(tǒng),包括底層的Bootloader 和Li皿x內(nèi)核,需加載在調(diào)試目標板上進行調(diào)試。在加載目標程序前,先在Bootloader和 Li皿x代碼中的關(guān)鍵位置加入用于收集程序系統(tǒng)狀態(tài)信息的程序(例如通過一具備收集信 息功能的函數(shù)實現(xiàn))和結(jié)果輸出函數(shù)(即,用于信息傳送輸出的程序),以便運行時調(diào)試主 機20能夠進行監(jiān)聽;用UniCore工具鏈交叉編譯目標程序,創(chuàng)建目標程序時采用映像文件 格式,因為前述Bootloader和Linux內(nèi)核這兩個程序比較龐大,不便于ELF格式處理。
用戶通過命令,利用加載監(jiān)聽主模塊指定加載目標程序的各個參數(shù),如目標程序 的文件格式、目標程序加載到內(nèi)存中的位置、目標程序的文件名、目標程序是否以十六進制 格式打印輸出結(jié)果、目標程序是否輸出程序運行狀態(tài)信息以及目標程序是否采用強制自檢 模式。 接下來,進行媒介通信自檢,檢查ICE數(shù)據(jù)通信的正確性,包括檢查數(shù)據(jù)接收和數(shù)據(jù)發(fā)送等。調(diào)試目標板上電時加載模塊301發(fā)出字符標識AB,調(diào)試主機中加載監(jiān)聽主模塊 接到AB后,會發(fā)送響應(yīng)標識CD,接著加載模塊301收到CD則再發(fā)出EF,加載監(jiān)聽主模塊收 到EF則表明數(shù)據(jù)通信正確,自檢通過。 自檢通過后加載目標程序Bcx)tloader并驗證加載是否正確,然后跳轉(zhuǎn)到 Bootloader入口處執(zhí)行,此時調(diào)試主機開始監(jiān)聽Bootloader的執(zhí)行情況。如果發(fā)生異 常,進入加載模塊301的異常處理模塊,并將異常信息發(fā)送給調(diào)試主機的加載監(jiān)聽主模 塊。如果其中設(shè)置控制狀態(tài)信息輸出,則調(diào)試主機顯示所有狀態(tài)信息,以助于進行錯誤分 析。Bootloader通過將在程序關(guān)鍵位置所收集的系統(tǒng)狀態(tài)信息傳送給調(diào)試主機,調(diào)試主 機監(jiān)聽并顯示給用戶,使得用戶能夠清楚地了解程序運行的進度。傳送數(shù)據(jù)可以采用字符 模式,以便輸出有意義的ASCII碼字符串;也可以采用字模式,直接輸出十六進制的數(shù)據(jù)。 Bootloader調(diào)試運行完成之后,由加載模塊繼續(xù)加載Linux內(nèi)核到一個安全的內(nèi)存位置進 行調(diào)試,其調(diào)試過程和方法與Bootloader的類似。 綜上所述,本發(fā)明闡述了一種用于北大眾志網(wǎng)絡(luò)計算機平臺板級調(diào)試的加載監(jiān)聽
方法,通過在最終硬件環(huán)境的運行,能夠避免了每次運行程序都將程序燒錄到Flash后再
運行,從而提供調(diào)試效率,特別適用于非標準新型體系結(jié)構(gòu)硬件平臺系統(tǒng)的調(diào)試。 以上描述的具體實施方式
只是對本發(fā)明進行示例,本領(lǐng)域技術(shù)人員在不脫離本發(fā)
明實質(zhì)性思想的基礎(chǔ)上進行各種修改得到的技術(shù)方案,均視為在本發(fā)明的范圍之內(nèi)。本發(fā)
明適當?shù)姆秶詸?quán)利要求書為準進行確定。
權(quán)利要求
網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽方法,用于一調(diào)試主機針對一調(diào)試目標板的調(diào)試監(jiān)聽,其特征在于,包括步驟1,創(chuàng)建目標程序;步驟2,所述調(diào)試主機通過ICE驅(qū)動模塊將所述目標程序發(fā)送至所述調(diào)試目標板;步驟3,所述調(diào)試目標板的加載模塊加載并運行所述目標程序,所述調(diào)試主機進行監(jiān)聽,如果發(fā)現(xiàn)運行異常,所述加載模塊執(zhí)行異常處理。
2. 如權(quán)利要求1所述的方法,其特征在于,所述步驟2之前進一步包括 所述調(diào)試主機的ELF加載模塊確認所述目標程序的格式,將ELF格式的目標程序轉(zhuǎn)換為映像格式。
3. 如權(quán)利要求1所述的方法,其特征在于,所述步驟2之前進一步包括 所述調(diào)試主機與所述調(diào)試目標板之間執(zhí)行通信自檢的步驟,該步驟進一步包括 所述調(diào)試目標板在上電時,發(fā)送連接標識至所述調(diào)試主機; 所述調(diào)試主機收到所述連接標識后,發(fā)送連接響應(yīng)標識至所述調(diào)試目標板; 所述調(diào)試目標板發(fā)送連接確認標識至所述調(diào)試主機; 所述調(diào)試主機接收到所述連接確認標識,自檢通過。
4. 如權(quán)利要求1所述的方法,其特征在于,所述目標程序包括用于系統(tǒng)狀態(tài)信息收集 的程序和用于信息傳送輸出的程序。
5. 如權(quán)利要求1所述的方法,其特征在于,所述步驟3之后進一步包括 在所述調(diào)試主機中顯示所述目標程序的運行狀態(tài)信息。
6. 網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽系統(tǒng),其特征在于,包括 一調(diào)試主機以及一調(diào)試目標板;所述調(diào)試主機進一步包括加載監(jiān)聽主模塊、ICE驅(qū)動模塊、遠程寫模塊; 所述加載監(jiān)聽主模塊用于控制所述調(diào)試主機中的其他模塊并對所述調(diào)試目標板進行 監(jiān)聽;所述ICE驅(qū)動模塊用于實現(xiàn)所述調(diào)試主機與所述調(diào)試目標板之間的數(shù)據(jù)傳輸,傳輸一 目標程序至所述調(diào)試目標板;所述遠程寫模塊用于向所述調(diào)試目標板發(fā)送數(shù)據(jù);所述調(diào)試目標板進一步包括一加載模塊,用于加載以及運行所述目標程序,并在發(fā)現(xiàn) 運行異常時執(zhí)行異常處理。
7. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述調(diào)試主機還包括一 ELF加載模塊,用于 確認所述目標程序的格式,并將ELF格式的目標程序轉(zhuǎn)換為映像格式。
8. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述調(diào)試主機還包括一自檢測試模塊,用于 執(zhí)行所述調(diào)試主機與所述調(diào)試目標板之間的通信自檢。
9. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述目標程序包括用于系統(tǒng)狀態(tài)信息收集 的程序和用于信息傳送輸出的程序。
10. 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述加載模塊用于在加載前,對所加載的 數(shù)據(jù)進行校驗,如果發(fā)現(xiàn)錯誤,退出,否則繼續(xù)。
全文摘要
本發(fā)明公開了一種網(wǎng)絡(luò)計算機平臺板級調(diào)試的在線加載監(jiān)聽方法及其系統(tǒng),該方法應(yīng)用于一調(diào)試主機以及一調(diào)試目標板組成的系統(tǒng)中,包括創(chuàng)建目標程序;所述調(diào)試主機通過ICE驅(qū)動模塊將所述目標程序發(fā)送至所述調(diào)試目標板;所述調(diào)試目標板的加載模塊加載并運行所述目標程序,所述調(diào)試主機進行監(jiān)聽,如果發(fā)現(xiàn)運行異常,所述加載模塊執(zhí)行異常處理。本發(fā)明使得在調(diào)試程序時可以避免每次運行目標程序都將程序燒錄到Flash后再運行,提高了效率,調(diào)試更加方便。
文檔編號G06F9/445GK101751331SQ20091016528
公開日2010年6月23日 申請日期2009年8月14日 優(yōu)先權(quán)日2009年8月14日
發(fā)明者孔令華, 程旭, 管雪濤, 鄭衍松 申請人:北京北大眾志微系統(tǒng)科技有限責任公司;常州北大眾志網(wǎng)絡(luò)計算機有限公司