欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于虛擬斷點(diǎn)指令的無縫片上系統(tǒng)調(diào)試方法

文檔序號:6365779閱讀:215來源:國知局
專利名稱:一種基于虛擬斷點(diǎn)指令的無縫片上系統(tǒng)調(diào)試方法
技術(shù)領(lǐng)域
本發(fā)明屬于集成電路領(lǐng)域,具體涉及一種片上系統(tǒng)的調(diào)試方法。
背景技術(shù)
國際半導(dǎo)體技術(shù)路線圖(ITRS:International Technology Roadmap for Semiconductors)指出,調(diào)試和定位問題所需要的時間,將會隨著工藝的進(jìn)步呈指數(shù)型 增長° 據(jù)文獻(xiàn) AReconfigurable Design-for-Debug Infrastructure for SoCs(M. Abramovici,Paul Bradley,Kumar Dwarakanah,et al. ,In Proceedings ACM/IEEE Design Automation Conference (DAC), 2006 :7_12)所述,在整個片上系統(tǒng)的設(shè)計過程中,從第一次 投片到最后成功的實(shí)現(xiàn)所有功能,硬件調(diào)試的時間已經(jīng)接近整個時間的35%,而且這個數(shù) 字隨著集成度的提高還會增加。以調(diào)試靈活性和覆蓋面為驅(qū)動的片上系統(tǒng)調(diào)試方法的設(shè)計 中,如何更加合理地設(shè)計調(diào)試手段,成為了一個重要的挑戰(zhàn)。插入斷點(diǎn)指令的調(diào)試方法,是片上系統(tǒng)調(diào)試的一種有效且靈活的手段。該方法通 常采用在預(yù)期指令流位置插入斷點(diǎn)指令,當(dāng)調(diào)試目標(biāo)機(jī)運(yùn)行到該指令時,暫停系統(tǒng)的運(yùn)行 狀態(tài),進(jìn)入調(diào)試狀態(tài),調(diào)試用戶可以通過調(diào)試手段觀測系統(tǒng)的當(dāng)前狀態(tài)信息。退出調(diào)試模式 前,需要把插入的斷點(diǎn)指令置換為原指令,控制目標(biāo)機(jī)從該指令的位置重新開始執(zhí)行,以此 確保原指令運(yùn)行序列的正確性。另外,調(diào)試用戶沒有刪除斷點(diǎn)指令之前,是希望該斷點(diǎn)指令 一直有效的,這樣,當(dāng)指令流循環(huán)運(yùn)行到此位置時,該斷點(diǎn)指令仍然有效,以此實(shí)現(xiàn)調(diào)試用 戶對某一特定狀態(tài)的監(jiān)測。若按照上述方法,進(jìn)行斷點(diǎn)指令插入設(shè)計時,將出現(xiàn)如附圖1、2所示情況。附圖1 中,在預(yù)期的A位置插入斷點(diǎn)指令,在斷點(diǎn)指令執(zhí)行后,調(diào)試用戶介入,退出調(diào)試之前,恢復(fù) 原A位置的指令。插入的斷點(diǎn)指令被執(zhí)行了一次后,就被置換回原來指令,那么如果斷點(diǎn)指 令為循環(huán)體內(nèi)的指令,再一次執(zhí)行到該位置時,已沒有斷點(diǎn)指令。換句話說,在調(diào)試用戶沒 有刪除斷點(diǎn)的前提下,斷點(diǎn)指令在執(zhí)行一次后,被自動清除。附圖2中,在預(yù)期的A位置插入斷點(diǎn)指令,在斷點(diǎn)指令執(zhí)行后,調(diào)試用戶介入,退出 調(diào)試之前,未恢復(fù)原A位置的指令。退出調(diào)試后,目標(biāo)機(jī)從A位置開始運(yùn)行,斷點(diǎn)指令再次 命中,如此無限循環(huán)執(zhí)行,系統(tǒng)異常。

發(fā)明內(nèi)容
調(diào)試方法的可控制性,要求調(diào)試用戶可以通過調(diào)試器有效的控制目標(biāo)機(jī)的運(yùn)行狀 態(tài)和待調(diào)程序的執(zhí)行過程。調(diào)試方法的低入侵性,則要求調(diào)試過程不改變原有程序的執(zhí)行 行為,不對原有程序運(yùn)行結(jié)果產(chǎn)生影響?;谏鲜鰞蓚€要求,本發(fā)明實(shí)現(xiàn)了一種基于虛擬斷 點(diǎn)指令的調(diào)試方法。該方法通過在停頓指令后插入虛擬斷點(diǎn)指令(該斷點(diǎn)指令執(zhí)行時,調(diào) 試者不可見),利用該斷點(diǎn)指令執(zhí)行的時間槽即時間間隙,完成預(yù)期斷點(diǎn)指令的恢復(fù),在沒 有被調(diào)試刪除之前,預(yù)期斷點(diǎn)指令一直有效。同時,確保每次執(zhí)行到預(yù)期斷點(diǎn)指令時,目標(biāo) 機(jī)的正確運(yùn)行。具體內(nèi)容如下
—種基于虛擬斷點(diǎn)指令的無縫片上系統(tǒng)調(diào)試方法,包括如下步驟在預(yù)期插入斷 點(diǎn)指令的A位置,插入預(yù)期斷點(diǎn)指令,目標(biāo)機(jī)運(yùn)行到該預(yù)期斷點(diǎn)指令時,進(jìn)入調(diào)試模式,打 開調(diào)試窗口,調(diào)試用戶介入調(diào)試;在退出調(diào)試模式前,將A位置的原指令恢復(fù),在目標(biāo)機(jī)指 令流中下一條指令位置,稱之為B位置,插入一個虛擬斷點(diǎn)指令,利用該虛擬斷點(diǎn)指令執(zhí)行 的時間槽,完成預(yù)期斷點(diǎn)指令的恢復(fù),關(guān)閉調(diào)試窗口,退出調(diào)試模式;所述虛擬斷點(diǎn)指令在 調(diào)試運(yùn)行過程中用戶不可見。本發(fā)明的有益效果是所述方法無需用戶干預(yù),實(shí)現(xiàn)一次插入斷點(diǎn)后,斷點(diǎn)行為持 續(xù)有效,直至用戶將斷點(diǎn)清除,為嵌入式片上系統(tǒng)的調(diào)試提供了靈活且高效的手段。


圖I是預(yù)期插入斷點(diǎn)指令一次有效運(yùn)行示意圖。圖2是預(yù)期插入斷點(diǎn)循環(huán)執(zhí)行運(yùn)行示意圖。圖3是本發(fā)明插入虛擬斷點(diǎn)指令運(yùn)行示意圖。圖4是本發(fā)明的互聯(lián)結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明做詳細(xì)描述。所述方法的實(shí)現(xiàn)結(jié)構(gòu)如附圖3所示,A位置為預(yù)期插入斷點(diǎn)指令的位置,在所述圖 a中的A位置插入斷點(diǎn)指令,目標(biāo)機(jī)運(yùn)行到該斷點(diǎn)指令時,進(jìn)入調(diào)試模式,打開調(diào)試窗口,調(diào) 試用戶介入調(diào)試;所述圖b中,實(shí)現(xiàn)在退出調(diào)試模式前,將A位置的原指令恢復(fù),在目標(biāo)機(jī)指 令流中下一條指令位置,稱之為B位置,插入一個虛擬斷點(diǎn)指令,關(guān)閉調(diào)試窗口,退出調(diào)試 模式。目標(biāo)機(jī)從A位置開始運(yùn)行,運(yùn)行到B位置時,虛擬斷點(diǎn)指令被執(zhí)行,進(jìn)入調(diào)試模式,但 不打開調(diào)試窗口,調(diào)試用戶不可介入調(diào)試,如所述圖c中,利用該時間槽,完成兩個操作,一 是恢復(fù)B位置的原指令,二是恢復(fù)A位置的斷點(diǎn)指令,退出調(diào)試模式,目標(biāo)機(jī)從B位置開始 繼續(xù)運(yùn)行。如此,即實(shí)現(xiàn)了目標(biāo)機(jī)指令流的正確運(yùn)行,同時A位置的預(yù)期插入的斷點(diǎn)指令被 自動恢復(fù)。為實(shí)現(xiàn)所述方法,首先定義調(diào)試系統(tǒng)互連模型,如附圖4所示。該系統(tǒng)包括以下3 個組件目標(biāo)機(jī)目標(biāo)調(diào)試對象,完成指令流的運(yùn)行,在遇到斷點(diǎn)指令后,暫停目標(biāo)機(jī)運(yùn)行, 控制調(diào)試中間件啟動。接收到調(diào)試中間件退出命令后,從斷點(diǎn)指令開始繼續(xù)運(yùn)行。調(diào)試中間件調(diào)試用戶與目標(biāo)機(jī)的通信樞紐,對調(diào)試用戶透明。接收調(diào)試窗口命 令,解析為目標(biāo)機(jī)可識別控制信息;控制目標(biāo)機(jī)與調(diào)試窗口間通信的開啟與關(guān)閉。調(diào)試窗口 調(diào)試用戶可見,向目標(biāo)機(jī)發(fā)送調(diào)試命令。在所述調(diào)試系統(tǒng)中,為采用一種歸一化的形式實(shí)現(xiàn)所述調(diào)試方法,本發(fā)明將公開 一種R語言,由此來描述所示方法的實(shí)現(xiàn)過程。R語言的特點(diǎn)在于第一可觀性,R語言的基本操作為單條原語,同時定義了狀態(tài) 控制語句,由系統(tǒng)組件按照具體實(shí)現(xiàn)規(guī)定其定義,便于方法的描述;第二在時間上和空間上 的順序性,時間上順序性是指R語言描述的操作按照原語序列的順序進(jìn)行執(zhí)行,空間上順 序性則是指調(diào)試系統(tǒng)中3個組件的特定運(yùn)行順序;第三閉合性,R語言規(guī)定了執(zhí)行的起始行為start與終結(jié)行為end,同時,3個組件的關(guān)閉與開啟操作分別閉合。R語言的語法說明如下UiXn :布爾量,n取值0 9,其值false和true,分別表示“假”與“真”;2、Read,地址,標(biāo)記讀取“地址”中數(shù)據(jù),在“標(biāo)記“中保存該數(shù)據(jù);3、Write,數(shù)據(jù),地址將“數(shù)據(jù)“寫入”地址“中;4、If條件goto標(biāo)識“條件“為”真“時,跳轉(zhuǎn)至”標(biāo)識“位置執(zhí)行,否則順序執(zhí)行;5、#An :數(shù)據(jù)標(biāo)記,n取值0 9,該標(biāo)記可以記錄數(shù)據(jù);6、$Yn :元語標(biāo)識,n取值0 9,定義了 R語言單條元語;7、#xx :狀態(tài)控制語句,該語句包括若干條單條元語;# windows_down :調(diào)試窗口關(guān)閉;# windows_open :調(diào)試窗 口打開;# debugmod_down :調(diào)試模式關(guān)閉;# debugmod_open :調(diào)試模式啟動;# run_on 目標(biāo)機(jī)運(yùn)行;# run_down 目標(biāo)機(jī)運(yùn)行結(jié)束;# non_bphit :調(diào)試模式啟動;8、ta :斷點(diǎn)指令;9、watchpoint_address :預(yù)期設(shè)置的斷點(diǎn)指令位置;10、PC 目標(biāo)機(jī)當(dāng)前運(yùn)行的指令位置;11、NPC :緊鄰PC的下一個指令位置;其中,調(diào)試用戶在調(diào)試窗口打開期間可見目標(biāo)機(jī),其余時刻,目標(biāo)機(jī)對調(diào)試用戶透 明。該調(diào)試方法,以調(diào)試用戶啟動目標(biāo)機(jī)運(yùn)行為開始,以目標(biāo)機(jī)運(yùn)行結(jié)束為最終結(jié)點(diǎn), 以下R語言描述的方法中,初始化為調(diào)試窗口開啟狀態(tài)。start # windowns_open;
$Y0 @X0 =false;
Read PC,#A0;
Read watchpoint—address,# A1 ;
If pc=watchpoint—address goto $Y 1 ;
Write ta,watchpoint—address; goto $Y2;
$Y1 @X0=tme;
Read npc,#A2;
Write ta,npc;
Write #A0,PC;
$Y2 # windowns—down ;
# debugmode—down;
#run—on;
If non—bphit goto $Y4;
# debugmode—open;
If @X0= =fault goto start;
Write #A2,NPC; goto $Y0;
end $Y4 #run—down;以下按照執(zhí)行順序,描述上述方法初始時,系統(tǒng)調(diào)試窗口打開,為0X0賦值“假”,讀取目標(biāo)機(jī)暫停時的PC位置的指 令,存入#A0 ;讀取預(yù)期設(shè)置斷點(diǎn)位置watchpoint_address的指令,存入#A1 ;判斷當(dāng)前 PC值是否等于watchpoint_address值,以此確認(rèn)是否由斷點(diǎn)指令的執(zhí)行導(dǎo)致系統(tǒng)進(jìn)入 調(diào)試模式,若不相等,表明此時目標(biāo)機(jī)暫停的位置,并不是斷點(diǎn)位置,于是在watchpoint_ address位置插入斷點(diǎn)指令ta,轉(zhuǎn)入$Y2,關(guān)閉調(diào)試窗口,退出調(diào)試模式,目標(biāo)機(jī)從PC位置開 始運(yùn)行。當(dāng)目標(biāo)機(jī)運(yùn)行到設(shè)置的斷點(diǎn)位置時,執(zhí)行斷點(diǎn)指令,進(jìn)入調(diào)試模式,此時判斷0X0 的“真”與“假”。由于前面執(zhí)行過程中,@X0為“假”,因此,跳轉(zhuǎn)入start開始執(zhí)行。為0X0賦值“假”,讀取目標(biāo)機(jī)暫停時的PC位置的指令,存入#A0 ;讀取預(yù)期設(shè)置 斷點(diǎn)位置watchpoint_address的指令,存入#A1 ;此時,判別條件PC = = watchpoint_ address成立,表明此時調(diào)試狀態(tài)的進(jìn)入是由斷點(diǎn)指令執(zhí)行導(dǎo)致的。跳轉(zhuǎn)入$Y1,執(zhí)行虛擬斷點(diǎn)的插入置0X0為“真”,讀取NPC位置的指令,保存#A2,在NPC位置插入斷點(diǎn)指令ta,將保存在#A0的指令恢復(fù)到PC位置,轉(zhuǎn)入$Y2,關(guān)閉調(diào)試 窗口,退出調(diào)試模式,目標(biāo)機(jī)開始從PC位置運(yùn)行。此時PC位置的指令被置換為原始指令,而NPC位置的指令為斷點(diǎn)指令,當(dāng)運(yùn)行到 NPC時,斷點(diǎn)指令執(zhí)行,再一次進(jìn)入調(diào)試模式,此時0X0為“真”,將NPC位置的指令恢復(fù),取 消虛擬斷點(diǎn)指令,轉(zhuǎn)入$Y0。在此次由執(zhí)行虛擬斷點(diǎn)指令帶來的時間槽中,由調(diào)試中間件完 成將斷點(diǎn)指令寫入PC位置。此時并沒有打開調(diào)試窗口,即本次斷點(diǎn)指令執(zhí)行對調(diào)試用戶透 明。在$Y0處,置0X0為“假”,表征此時虛擬斷點(diǎn)指令已經(jīng)處理完成,判斷當(dāng)前目標(biāo)機(jī) 暫停的PC值與watchpoint_address,由于當(dāng)前的斷點(diǎn)指令是虛擬加入的,因此,兩者顯然 不同。執(zhí)行在watchpoint_address位置插入斷點(diǎn)指令ta,退出調(diào)試模式,目標(biāo)機(jī)開始運(yùn)行。當(dāng)目標(biāo)機(jī)的指令運(yùn)行序列沒有循環(huán)執(zhí)行,那么在執(zhí)行到最后,也沒有再一次的斷 點(diǎn)命中,此時目標(biāo)機(jī)運(yùn)行結(jié)束,如果再一次循環(huán)到斷點(diǎn)指令,將按照上述再次重復(fù)執(zhí)行。
權(quán)利要求
1.一種基于虛擬斷點(diǎn)指令的無縫片上系統(tǒng)調(diào)試方法,包括如下步驟在預(yù)期插入斷點(diǎn)指令的A位置,插入預(yù)期斷點(diǎn)指令,目標(biāo)機(jī)運(yùn)行到該預(yù)期斷點(diǎn)指令時,進(jìn)入調(diào)試模式,打開調(diào)試窗口,調(diào)試用戶介入調(diào)試;在退出調(diào)試模式前,將A位置的原指令恢復(fù),在目標(biāo)機(jī)指令流中下一條指令位置,稱之為B位置,插入一個虛擬斷點(diǎn)指令,利用該虛擬斷點(diǎn)指令執(zhí)行的時間槽,完成預(yù)期斷點(diǎn)指令的恢復(fù),關(guān)閉調(diào)試窗口,退出調(diào)試模式; 其特征在于所述虛擬斷點(diǎn)指令在調(diào)試運(yùn)行過程中用戶不可見。
全文摘要
本發(fā)明實(shí)現(xiàn)了一種基于虛擬斷點(diǎn)指令的調(diào)試方法,基于調(diào)試方法的可控制性和低入侵性,該方法通過在停頓指令后插入虛擬斷點(diǎn)指令(該斷點(diǎn)指令執(zhí)行時,調(diào)試者不可見),利用該斷點(diǎn)指令執(zhí)行的時間槽,完成預(yù)期斷點(diǎn)指令的恢復(fù),在沒有被調(diào)試刪除之前,預(yù)期斷點(diǎn)指令一直有效。同時,確保每次執(zhí)行到預(yù)期斷點(diǎn)指令時,目標(biāo)機(jī)的正確運(yùn)行。
文檔編號G06F11/26GK102662809SQ20121005595
公開日2012年9月12日 申請日期2012年3月6日 優(yōu)先權(quán)日2012年3月6日
發(fā)明者張麗娜, 張洵穎, 楊博, 裴茹霞 申請人:中國航天科技集團(tuán)公司第九研究院第七七一研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
阳原县| 盐山县| 寿光市| 奇台县| 成武县| 壤塘县| 长沙县| 桂阳县| 马关县| 虎林市| 白山市| 永德县| 炉霍县| 达拉特旗| 南昌市| 四会市| 岐山县| 彰化县| 奉化市| 安远县| 佳木斯市| 贵溪市| 民乐县| 清镇市| 苗栗市| 阿坝县| 乡宁县| 鹤庆县| 武威市| 金川县| 满洲里市| 江达县| 大连市| 崇义县| 峡江县| 文登市| 武穴市| 溆浦县| 齐河县| 台中市| 佛冈县|